{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/toastr/toastr.js","webpack:///./node_modules/@rails/actioncable/app/assets/javascripts/action_cable.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./app/javascript/packs/nested_form.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/ar-ps.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/bn-bd.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/en-in.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/en-sg.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/es-mx.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/fil.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/gom-deva.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/it-ch.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ku.js","webpack:///./node_modules/moment/locale/ku-kmr.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/oc-lnc.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/se.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/moment/locale/sr.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/tk.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/zh-mo.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack:///./app/javascript/packs/application.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./node_modules/bootstrap/dist/js/bootstrap.js","webpack:///./node_modules/jquery-ui/ui/widget.js","webpack:///./node_modules/jquery-ui/ui/version.js","webpack:///./node_modules/jquery-datetimepicker/build/jquery.datetimepicker.full.min.js","webpack:///./node_modules/jquery-mousewheel/jquery.mousewheel.js","webpack:///./node_modules/jquery-minicolors/jquery.minicolors.js","webpack:///./node_modules/bootstrap-slider/dist/bootstrap-slider.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./node_modules/@nathanvda/cocoon/cocoon.js","webpack:///./node_modules/enjoyhint/index.js","webpack:///./node_modules/enjoyhint/node_modules/jquery/dist/jquery.js","webpack:///./node_modules/jquery-ui/dist/jquery-ui.js","webpack:///./node_modules/select2/dist/js/select2.full.min.js","webpack:///./node_modules/multiple-select/dist/multiple-select.min.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/jquery-validation/dist/jquery.validate.js","webpack:///./node_modules/rateyo/min/jquery.rateyo.min.js","webpack:///./node_modules/bootstrap-toggle/js/bootstrap-toggle.js","webpack:///./app/javascript/src/bootstrap-tagsinput.js","webpack:///./app/javascript/src/jquery_periodicalupdater.js","webpack:///./app/javascript/src/jquery_updater.js","webpack:///./app/javascript/src/app_custom.js","webpack:///./app/javascript/src/outsideclick.js","webpack:///./app/javascript/src/custom-audio-player.js","webpack:///./app/javascript/src/yearpicker.js","webpack:///./app/javascript/src/profile.js","webpack:///./app/javascript/src/report_expansion.js","webpack:///./app/javascript/src/user_progression.js","webpack:///./app/javascript/src/sticky_notes.js","webpack:///./app/javascript/src/report_reminder.js","webpack:///./app/javascript/src/principals.js","webpack:///./app/javascript/src/induction.js","webpack:///./app/javascript/src/coffeescripts/interns.coffee","webpack:///./app/javascript/src/coffeescripts/users.coffee","webpack:///./app/javascript/src/coffeescripts/resources.coffee","webpack:///./app/javascript/src/coffeescripts/ministers.coffee","webpack:///./app/javascript/src/coffeescripts/activities.coffee","webpack:///./app/javascript/src/coffeescripts/report.coffee","webpack:///./app/javascript/src/coffeescripts/locations.coffee","webpack:///./app/javascript/src/coffeescripts/questionnaires.coffee","webpack:///./app/javascript/src/coffeescripts/reviews.coffee","webpack:///./app/javascript/src/coffeescripts/schedule_times.coffee","webpack:///./app/javascript/src/coffeescripts/resource_reports.coffee","webpack:///./app/javascript/src/coffeescripts/lay_users.coffee","webpack:///./app/javascript/src/coffeescripts/job_postings.coffee","webpack:///./app/javascript/src/coffeescripts/unions.coffee","webpack:///./app/javascript/src/coffeescripts/ms_associate.coffee","webpack:///./app/javascript/src/coffeescripts/auxano_plans.coffee","webpack:///./app/javascript/src/coffeescripts/appointments.coffee","webpack:///./app/javascript/src/coffeescripts/conferences.coffee","webpack:///./app/javascript/src/coffeescripts/admin_reports.coffee","webpack:///./app/javascript/src/coffeescripts/evaluation_summaries.coffee","webpack:///./app/javascript/channels/notification.coffee","webpack:///./app/javascript/channels/web_notifications.coffee","webpack:///./node_modules/preact/dist/preact.module.js","webpack:///./node_modules/preact/hooks/dist/hooks.module.js","webpack:///./node_modules/preact/compat/dist/compat.module.js","webpack:///./node_modules/@fullcalendar/core/internal-common.js","webpack:///./node_modules/@fullcalendar/core/index.js","webpack:///./node_modules/@fullcalendar/interaction/index.js","webpack:///./node_modules/@fullcalendar/daygrid/internal.js","webpack:///./node_modules/@fullcalendar/daygrid/index.js","webpack:///./node_modules/@fullcalendar/timegrid/internal.js","webpack:///./node_modules/@fullcalendar/timegrid/index.js","webpack:///./node_modules/@fullcalendar/list/internal.js","webpack:///./node_modules/@fullcalendar/list/index.js","webpack:///./node_modules/@fullcalendar/multimonth/index.js","webpack:///./node_modules/fullcalendar/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","hookCallback","some","hooks","apply","arguments","setHookCallback","callback","isArray","input","Array","toString","isObject","hasOwnProp","a","b","isObjectEmpty","obj","getOwnPropertyNames","length","k","isUndefined","isNumber","isDate","Date","map","arr","fn","res","arrLen","push","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","flags","parsedParts","isNowValid","_d","isNaN","getTime","invalidWeekday","_strict","undefined","bigHour","isFrozen","_isValid","createInvalid","NaN","fun","this","len","momentProperties","updateInProgress","copyConfig","to","from","prop","val","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","args","argLen","slice","join","Error","stack","keys","deprecations","deprecateSimple","isFunction","Function","set","_config","_dayOfMonthOrdinalParseLenient","RegExp","_dayOfMonthOrdinalParse","source","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","output","_calendar","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","localeData","removeFormattingTokens","match","replace","makeFormatFunction","array","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","h","hh","dd","w","ww","M","MM","y","yy","relativeTime","withoutSuffix","string","isFuture","_relativeTime","pastFuture","diff","aliases","D","dates","date","days","day","e","weekdays","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","hours","hour","ms","milliseconds","millisecond","minutes","minute","months","month","Q","quarters","quarter","seconds","second","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","weeks","week","W","isoweeks","isoweek","years","year","normalizeUnits","units","toLowerCase","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","getPrioritizedUnits","unitsObj","u","unit","priority","sort","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","parseInt","indexOf","getSetYear","makeGetSet","getIsLeapYear","keepTime","set$1","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","stringGet","stringSet","prioritized","prioritizedLen","mod","x","daysInMonth","modMonth","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","split","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","min","setUTCMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","createDate","createUTCDate","UTC","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","concat","weekdaysMin","weekdaysShort","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","charAt","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","next","loadLocale","isLocaleNameSane","oldLocale","_abbr","getSetGlobalLocale","values","data","getLocale","defineLocale","abbr","parentLocale","forEach","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","exec","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","temp","weekdayOverflow","curWeek","createLocal","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isString","String","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","filter","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","unix","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","assign","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","global","document","window","noGlobal","getProto","getPrototypeOf","flat","class2type","hasOwn","fnToString","ObjectFunctionString","support","nodeType","isWindow","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","rhtmlSuffix","jQuery","selector","context","init","isArrayLike","nodeName","elem","jquery","constructor","num","pushStack","elems","merge","prevObject","each","first","eq","last","even","grep","_elem","odd","end","splice","options","copy","copyIsArray","target","deep","isPlainObject","expando","random","isReady","error","noop","Ctor","isEmptyObject","globalEval","textContent","documentElement","nodeValue","makeArray","results","inArray","isXMLDoc","namespace","namespaceURI","docElem","ownerDocument","invert","callbackExpect","guid","iterator","pop","whitespace","rtrimCSS","contains","bup","compareDocumentPosition","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","escapeSelector","sel","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","identifier","attributes","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","fromCharCode","unloadHandler","setDocument","inDisabledFieldset","addCombinator","disabled","childNodes","els","find","seed","nid","groups","newSelector","newContext","getElementById","id","getElementsByTagName","getElementsByClassName","testContext","scope","tokenize","toSelector","querySelectorAll","qsaError","removeAttribute","select","cache","cacheLength","markFunction","assert","el","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","subWindow","webkitMatchesSelector","msMatchesSelector","defaultView","top","addEventListener","getById","getElementsByName","disconnectedMatch","cssHas","querySelector","attrId","getAttributeNode","tag","className","innerHTML","compare","sortDetached","expr","elements","matchesSelector","attr","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","pattern","operator","check","what","_argument","simple","forward","ofType","_context","xml","outerCache","nodeIndex","start","parent","useCache","firstChild","lastChild","pseudo","setFilters","idx","not","compile","unmatched","has","elemLang","hash","location","root","focus","activeElement","err","safeActiveElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","nextSibling","header","button","_matchIndexes","lt","gt","nth","radio","checkbox","file","password","image","submit","reset","parseOnly","soFar","preFilters","cached","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","matcherOut","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","filters","unique","getText","isXML","selectors","truncate","is","siblings","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","cur","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","_","flag","createOptions","firing","memory","fired","locked","list","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","tuples","state","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","handler","special","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","rejectWith","getErrorHook","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","asyncError","message","readyException","readyList","completed","removeEventListener","catch","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","owner","Data","uid","configurable","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","getData","removeData","_removeData","attrs","dequeue","startLength","_queueHooks","unshift","stop","clearQueue","count","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","show","hide","toggle","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","defaultValue","option","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","optgroup","rhtml","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","on","types","one","origFn","event","off","leverageNative","isSetup","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","isImmediatePropagationStopped","handleObjIn","eventHandle","events","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","focusMappedHandler","documentMode","simulate","attaches","dataHolder","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","rcustomProp","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","computed","width","minWidth","maxWidth","isCustomProp","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","height","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","marginDelta","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","aspectRatio","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","setProperty","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","expand","expanded","propHooks","run","percent","eased","step","fx","scrollTop","scrollLeft","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","addClass","classNames","curValue","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","triggerHandler","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","rtrim","proxy","holdReady","hold","parseJSON","isNumeric","trim","_jQuery","_$","$","noConflict","$container","listener","previousToast","toastId","toastType","toastr","clear","$toastElement","clearOptions","getOptions","getContainer","clearToast","toastsToClear","clearContainer","removeToast","title","optionsOverride","iconClass","iconClasses","info","subscribe","warning","containerId","positionClass","createContainer","force","hideMethod","hideDuration","hideEasing","publish","preventDuplicates","shouldExit","intervalId","$titleElement","$messageElement","$progressElement","$closeElement","closeHtml","progressBar","hideEta","maxHideTime","toastClass","escapeHtml","titleClass","setTitle","messageClass","setMessage","closeButton","closeClass","progressClass","rtl","newestOnTop","ariaValue","setAria","showMethod","showDuration","showEasing","onShown","timeOut","hideToast","setInterval","updateProgress","closeOnHover","stickAround","delayedHideToast","onclick","tapToDismiss","cancelBubble","onCloseClick","debug","log","override","closeMethod","closeDuration","closeEasing","onHidden","endTime","extendedTimeOut","percentage","adapters","logger","WebSocket","_adapters$logger","_len","messages","_typeof","classCallCheck","instance","Constructor","createClass","defineProperties","descriptor","protoProps","staticProps","secondsSince","clamp","ConnectionMonitor","connection","visibilityDidChange","reconnectAttempts","isRunning","startedAt","stoppedAt","startPolling","getPollInterval","stopPolling","recordPing","pingedAt","recordConnect","disconnectedAt","recordDisconnect","poll","pollTimeout","_this","reconnectIfStale","_constructor$pollInte","pollInterval","multiplier","connectionIsStale","staleThreshold","disconnectedRecently","reopen","_this2","visibilityState","isOpen","INTERNAL","message_types","welcome","disconnect","ping","confirmation","rejection","disconnect_reasons","unauthorized","invalid_request","server_restart","default_mount_path","protocols","supportedProtocols","Connection","consumer","subscriptions","monitor","disconnected","webSocket","stringify","isActive","getState","uninstallEventHandlers","installEventHandlers","close","allowReconnect","reopenDelay","getProtocol","isState","isProtocolSupported","states","eventName","_JSON$parse","reason","reconnect","reload","notifyAll","willAttemptReconnect","Subscription","mixin","perform","action","command","unsubscribe","Subscriptions","channelName","channel","subscription","ensureActiveConnection","sendCommand","forget","findAll","_this3","_len2","_key2","Consumer","_url","connect","createWebSocketURL","createConsumer","getConfig","element","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","loadCSPNonce","ref","cspNonce","Element","mozMatchesSelector","oMatchesSelector","setData","csrfParam","csrfToken","meta","CSRFProtection","refreshCSRFTokens","CustomEvent","createEvent","initCustomEvent","dispatchEvent","stopEverything","eventType","AcceptHeaders","createXHR","prepareOptions","processResponse","OPENED","accept","withCredentials","DONE","parser","isCrossDomain","serializeElement","additionalParam","inputs","formElements","form","allowAction","handleConfirm","confirm","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","originalText","handleMethod","formContent","link","isRemote","handleRemote","enctype","FormData","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","rails","_rails_loaded","NestedFormEvents","addFields","removeFields","assoc","closestChild","parentNames","parentIds","regexp","new_id","newId","insertFields","$link","nestedFormEvents","child","isBrowser","navigator","timeoutDuration","longerTimeoutBrowsers","userAgent","debounce","Promise","called","scheduled","functionToCheck","getStyleComputedProperty","getParentNode","getScrollParent","_getStyleComputedProp","getReferenceNode","reference","referenceNode","isIE11","MSInputMethodContext","isIE10","isIE","getOffsetParent","noOffsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","element1root","getScroll","upperSide","scrollingElement","getBordersSize","axis","sideA","sideB","getSize","computedStyle","getWindowSizes","_extends","getClientRect","offsets","bottom","sizes","clientWidth","clientHeight","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","isHTML","childrenRect","parentRect","scrollParent","borderLeftWidth","marginTop","modifier","includeScroll","isFixed","getFixedPositionOffsetParent","parentElement","getBoundaries","popper","boundariesElement","boundaries","excludeScroll","relativeOffset","innerWidth","innerHeight","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","_getWindowSizes","isPaddingNumber","computeAutoPlacement","placement","refRect","rects","sortedAreas","area","_ref","filteredAreas","_ref2","computedPlacement","variation","getReferenceOffsets","getOuterSizes","marginBottom","marginRight","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","modifiers","ends","findIndex","update","isDestroyed","arrowStyles","flipped","positionFixed","flip","originalPlacement","isCreated","onUpdate","onCreate","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","toCheck","destroy","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","scrollParents","isBody","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","cancelAnimationFrame","setStyles","isFirefox","isModifierRequired","requestingName","requestedName","requesting","isRequired","_requesting","requested","placements","validPlacements","clockwise","counter","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","str","toValue","index2","shiftvariation","_data$offsets","isVertical","side","shiftOffsets","preventOverflow","transformProp","popperStyles","transform","escapeWithReference","secondary","keepTogether","opSide","arrow","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","behavior","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","applyStyle","onLoad","modifierOptions","Defaults","Popper","Utils","PopperUtils","g","moment","symbolMap","numberMap","pluralForm","plurals","pluralize","f","weekdaysParseExact","suffixes","plural","word","forms","relativeTimeWithPlural","standalone","lastDigit","last2Digits","monthsParseExact","relativeTimeWithMutation","mutation","specialMutationForYears","lastNumber","softMutation","mutationTable","substring","monthsStrictRegex","monthsShortStrictRegex","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","longMonthsParse","shortMonthsParse","processRelativeTime","translate","ll","lll","llll","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eraYearOrdinalRegex","$0","$1","$2","isUpper","ezafeNumSuffix","includes","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","translateSeconds","translateSingular","relativeTimeWithSingular","relativeSeconds","translator","words","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","weekdaysCaseReplace","nominative","accusative","genitive","processHoursFunction","createCommonjsModule","sparkMd5","hex_chr","md5cycle","md5blk","md5blks","md5blk_array","md51","tail","lo","hi","md51_array","subarray","Uint8Array","rhex","hex","toUtf8","unescape","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arrayBuffer2Utf8Str","concatenateArrayBuffers","byteLength","buffer","hexToBinaryString","bytes","SparkMD5","targetArray","sourceArray","begin","appendBinary","_buff","_length","_hash","_finish","setState","hashBinary","fileSlice","File","mozSlice","webkitSlice","FileChecksum","chunkSize","chunkCount","size","chunkIndex","md5Buffer","fileReader","FileReader","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","readAsArrayBuffer","getMetaValue","findElement","findElements","toArray$1","eventInit","initEvent","BlobRecord","checksum","filename","content_type","byte_size","requestDidLoad","requestDidError","blob","direct_upload","directUploadData","_xhr","BlobUpload","_blob$directUploadDat","DirectUpload","upload","methodName","DirectUploadController","directUpload","hiddenInput","insertAdjacentElement","dispatchError","signed_id","loaded","alert","uploadRequestDidProgress","inputSelector","DirectUploadsController","files","controllers","createDirectUploadControllers","startNextController","controller","processingAttribute","submitButtonsByForm","WeakMap","started","didClick","didSubmitForm","didSubmitRemoteElement","tagName","handleFormSubmissionEvent","hasAttribute","enable","submitForm","delete","autostart","ActiveStorage","tooltip","datepicker","currentElement","_interopDefaultLegacy","$__default","Popper__default","_defineProperties","_createClass","_inheritsLoose","subClass","superClass","__proto__","TRANSITION_END","MAX_UID","MILLISECONDS_MULTIPLIER","getSpecialTransitionEndEvent","transitionEndEmulator","Util","triggerTransitionEnd","setTransitionEndSupport","emulateTransitionEnd","getUID","getSelectorFromElement","hrefAttr","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","supportsTransitionEnd","Boolean","isElement","typeCheckConfig","componentName","configTypes","expectedTypes","valueType","findShadowRoot","attachShadow","ShadowRoot","jQueryDetection","minMajor","ltMajor","minMinor","minPatch","maxMajor","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","SELECTOR_DISMISS","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API","CLASS_NAME_ALERT","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","_element","_proto","rootElement","_getRootElement","_triggerCloseEvent","_removeElement","dispose","closeEvent","_destroyElement","_jQueryInterface","$element","_handleDismiss","alertInstance","NAME$1","VERSION$1","DATA_KEY$1","EVENT_KEY$1","DATA_API_KEY$1","JQUERY_NO_CONFLICT$1","CLASS_NAME_ACTIVE","CLASS_NAME_BUTTON","CLASS_NAME_FOCUS","SELECTOR_DATA_TOGGLE_CARROT","SELECTOR_DATA_TOGGLES","SELECTOR_DATA_TOGGLE","SELECTOR_DATA_TOGGLES_BUTTONS","SELECTOR_INPUT","SELECTOR_ACTIVE","SELECTOR_BUTTON","EVENT_CLICK_DATA_API$1","EVENT_FOCUS_BLUR_DATA_API","EVENT_LOAD_DATA_API","Button","shouldAvoidTriggerChange","triggerChangeEvent","addAriaPressed","classList","avoidTriggerChange","initialButton","inputBtn","_button","NAME$2","VERSION$2","DATA_KEY$2","EVENT_KEY$2","DATA_API_KEY$2","JQUERY_NO_CONFLICT$2","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","keyboard","slide","pause","touch","DefaultType","DIRECTION_NEXT","DIRECTION_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API$1","EVENT_CLICK_DATA_API$2","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE$1","CLASS_NAME_SLIDE","CLASS_NAME_RIGHT","CLASS_NAME_LEFT","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","SELECTOR_ACTIVE$1","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_getConfig","_indicatorsElement","_touchSupported","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","cycle","clearInterval","_updateInterval","activeIndex","_getItemIndex","_handleSwipe","absDeltax","_keydown","_addTouchEventListeners","move","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","slideEvent","_setActiveIndicatorElement","indicators","nextIndicator","elementInterval","defaultInterval","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$3","VERSION$3","DATA_KEY$3","EVENT_KEY$3","DATA_API_KEY$3","JQUERY_NO_CONFLICT$3","Default$1","DefaultType$1","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","EVENT_CLICK_DATA_API$3","CLASS_NAME_SHOW$1","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","DIMENSION_WIDTH","DIMENSION_HEIGHT","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE$1","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","actives","activesData","startEvent","_getDimension","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","$trigger","$target","NAME$4","VERSION$4","DATA_KEY$4","EVENT_KEY$4","DATA_API_KEY$4","JQUERY_NO_CONFLICT$4","ESCAPE_KEYCODE","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK","EVENT_CLICK_DATA_API$4","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_DISABLED","CLASS_NAME_SHOW$2","CLASS_NAME_DROPUP","CLASS_NAME_DROPRIGHT","CLASS_NAME_DROPLEFT","CLASS_NAME_MENURIGHT","CLASS_NAME_POSITION_STATIC","SELECTOR_DATA_TOGGLE$2","SELECTOR_FORM_CHILD","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","Default$2","boundary","popperConfig","DefaultType$2","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","hideEvent","_getPlacement","$parentDropdown","_getOffset","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","NAME$5","VERSION$5","DATA_KEY$5","EVENT_KEY$5","DATA_API_KEY$5","JQUERY_NO_CONFLICT$5","ESCAPE_KEYCODE$1","Default$3","backdrop","DefaultType$3","EVENT_HIDE$2","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_SHOWN$2","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_CLICK_DATA_API$5","CLASS_NAME_SCROLLABLE","CLASS_NAME_SCROLLBAR_MEASURER","CLASS_NAME_BACKDROP","CLASS_NAME_OPEN","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$3","CLASS_NAME_STATIC","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_TOGGLE$3","SELECTOR_DATA_DISMISS","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","scrollHeight","modalTransitionDuration","modalBody","ELEMENT_NODE","_enforceFocus","shownEvent","transitionComplete","_this5","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","paddingLeft","paddingRight","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","calculatedMargin","scrollDiv","scrollbarWidth","_this11","uriAttrs","DefaultWhitelist","br","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","small","span","sub","sup","strong","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attrName","regExp","attrRegex","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","NAME$6","VERSION$6","DATA_KEY$6","EVENT_KEY$6","JQUERY_NO_CONFLICT$6","CLASS_PREFIX","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","DefaultType$4","template","fallbackPlacement","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$4","HOVER_STATE_SHOW","HOVER_STATE_OUT","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","CLASS_NAME_FADE$2","CLASS_NAME_SHOW$4","SELECTOR_TOOLTIP_INNER","SELECTOR_ARROW","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","toggleEnabled","dataKey","_getDelegateConfig","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","_handlePopperPlacementChange","eventIn","eventOut","_fixTitle","titleType","dataAttributes","$tip","tabClass","popperData","initConfigAnimation","NAME$7","VERSION$7","DATA_KEY$7","EVENT_KEY$7","JQUERY_NO_CONFLICT$7","CLASS_PREFIX$1","BSCLS_PREFIX_REGEX$1","Default$5","DefaultType$5","CLASS_NAME_FADE$3","CLASS_NAME_SHOW$5","SELECTOR_TITLE","SELECTOR_CONTENT","Event$1","Popover","_Tooltip","_getContent","NAME$8","VERSION$8","DATA_KEY$8","EVENT_KEY$8","DATA_API_KEY$6","JQUERY_NO_CONFLICT$8","Default$6","DefaultType$6","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_LOAD_DATA_API$2","CLASS_NAME_DROPDOWN_ITEM","CLASS_NAME_ACTIVE$2","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN","SELECTOR_DROPDOWN_ITEMS","SELECTOR_DROPDOWN_TOGGLE","METHOD_OFFSET","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","_getOffsetHeight","maxScroll","_activate","_clear","queries","scrollSpys","$spy","NAME$9","VERSION$9","DATA_KEY$9","EVENT_KEY$9","DATA_API_KEY$7","JQUERY_NO_CONFLICT$9","EVENT_HIDE$3","EVENT_HIDDEN$3","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_CLICK_DATA_API$6","CLASS_NAME_DROPDOWN_MENU","CLASS_NAME_ACTIVE$3","CLASS_NAME_DISABLED$1","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$6","SELECTOR_DROPDOWN$1","SELECTOR_NAV_LIST_GROUP$1","SELECTOR_ACTIVE$2","SELECTOR_ACTIVE_UL","SELECTOR_DATA_TOGGLE$4","SELECTOR_DROPDOWN_TOGGLE$1","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","previous","listElement","itemSelector","hiddenEvent","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","NAME$a","VERSION$a","DATA_KEY$a","EVENT_KEY$a","JQUERY_NO_CONFLICT$a","EVENT_CLICK_DISMISS$1","EVENT_HIDE$4","EVENT_HIDDEN$4","EVENT_SHOW$4","EVENT_SHOWN$4","CLASS_NAME_FADE$5","CLASS_NAME_HIDE","CLASS_NAME_SHOW$7","CLASS_NAME_SHOWING","DefaultType$7","autohide","Default$7","SELECTOR_DATA_DISMISS$1","Toast","_clearTimeout","_close","Scrollspy","widgetUuid","widgetHasOwnProperty","widgetSlice","widget","existingConstructor","basePrototype","proxiedPrototype","fullName","Widget","_createWidget","_childConstructors","_super","_superApply","__super","__superApply","widgetEventPrefix","widgetName","widgetFullName","childPrototype","bridge","inputIndex","inputLength","isMethodCall","methodValue","_init","defaultElement","classes","uuid","eventNamespace","bindings","hoverable","focusable","classesElementLookup","_on","_getCreateOptions","_create","_setOptionDisabled","_trigger","_getCreateEventData","_destroy","_removeClass","curOption","_setOptions","_setOption","_setOptionClasses","classKey","currentElements","_classes","_toggleClass","full","bindRemoveEvent","nodesToBind","processClassString","checkOption","_untrackClassesElement","_off","_addClass","suppressDisabledCheck","delegateElement","handlerProxy","_delay","_hoverable","_focusable","focusin","focusout","defaultEffect","hasOptions","effect","effectName","effects","ui","dateSettings","daysShort","separators","validParts","intParts","tzParts","tzClip","DateFormatter","parseDate","sec","guessDate","parseFormat","N","z","Y","F","A","G","B","H","I","O","P","T","Z","U","formatDate","i18n","ar","dayOfWeekShort","dayOfWeek","ro","bg","fa","ru","uk","en","de","nl","fr","es","pl","pt","se","km","kr","it","da","no","ja","vi","sl","cs","hu","az","bs","ca","et","eu","fi","gl","ko","lv","mk","mn","sk","sq","sr","sv","zh","ug","he","hy","kg","rm","ka","contentWindow","formatTime","startDate","monthChangeSpinner","closeOnDateSelect","closeOnTimeSelect","closeOnWithoutClick","closeOnInputClick","openOnFocus","timepicker","defaultTime","defaultDate","minDate","maxDate","minTime","maxTime","minDateTime","maxDateTime","allowTimes","opened","initTime","inline","theme","touchMovedThreshold","onSelectDate","onSelectTime","onChangeMonth","onGetWeekOfYear","onChangeYear","onChangeDateTime","onShow","onClose","onGenerate","withoutCopyright","inverseButton","hours12","dayOfWeekStart","parentID","timeHeightInTimePicker","timepickerScrollbar","todayButton","prevButton","nextButton","defaultSelect","scrollMonth","scrollTime","scrollInput","lazyInit","mask","validateOnBlur","allowBlank","yearStart","yearEnd","monthStart","monthEnd","fixed","roundTime","weekends","highlightedDates","highlightedPeriods","allowDates","allowDateRe","disabledDates","disabledWeekDays","yearOffset","beforeShowDay","enterLikeTab","showApplyButton","insideParent","R","default_options","formatter","formatMask","datetimepicker","setLocale","setDateFormatter","ATOM","RFC_822","RFC_850","RFC_1036","RFC_1123","RSS","W3C","desc","currentStyle","countDaysInMonth","xdsoftScroller","deltaY","S","J","C","touchStartPosition","sqrt","touchMoved","strToDate","strToDateTime","strtotime","isValidDate","createTextRange","collapse","moveEnd","moveStart","setSelectionRange","clipboardData","selectionStart","selectionEnd","getValue","getCurrentTime","setOptions","setCurrentTime","dayOfWeekStartPrev","nextMonth","prevMonth","getWeekOfYear","deltaX","outerWidth","outerHeight","offsetLeft","offsetTop","unmousewheel","fixHooks","mouseHooks","mousewheel","onmousewheel","getLineHeight","getPageHeight","adjustOldDeltas","normalizeOffset","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaMode","deltaFactor","nullLowestDeltaTimeout","lowestDelta","toFix","toBind","$elem","$parent","orgEvent","absDelta","pageHeight","shouldAdjustOldDeltas","boundingRect","nullLowestDelta","minicolors","dataUris","control","updateFromInput","panel","showSpeed","hideSpeed","wx","wy","phi","picker","animationSpeed","atan2","sin","animationEasing","updateFromControl","getCoords","hue","saturation","brightness","swatch","grid","slider","opacitySlider","gridPicker","sliderPicker","opacityPicker","gridPos","sliderPos","opacityPos","keepWithin","hsb2hex","convertCase","letterCase","backgroundColor","doChange","preserveInputValue","hsb","parseHex","hex2hsb","lastChange","change","changeDelay","rgbObject","rgb","hex2rgb","rgbString","alpha","hsb2rgb","t1","t2","t3","rgb2hex","nr","rgb2hsb","windowIsDefined","Slider","NAMESPACE_MAIN","NAMESPACE_ALTERNATE","defineBridget","logError","bridget","PluginClass","addOptionMethod","objects","autoRegisterNamespace","ErrorMsgs","formatInvalidInputErrorMsg","callingContextNotSliderInstance","SliderScale","rawValue","shouldAdjustWithBase","ticks_positions","minv","maxv","maxp","ticks","toPercentage","logarithmic","exp","createNewSlider","_state","inDrag","over","tickIndex","ticksCallbackMap","handleCallbackMap","HTMLElement","optionTypes","defaultOptions","isMinSet","isMaxSet","optName","getDataAttrib","ticksAreValid","lock_to_ticks","dataName","dataValString","orientation","tooltip_position","sliderTrackSelection","sliderTrackLow","sliderTrackHigh","sliderMinHandle","sliderMaxHandle","origWidth","updateSlider","sliderElem","sliderTrack","rangeHighlightElements","rangeHighlightsOpts","rangeHighlights","rangeHighlightElement","customClassString","class","isLabelledbyArray","labelledby","ticksContainer","ticks_tooltip","tickListenerReference","_addTickListener","enterCallback","addMouseEnter","leaveCallback","addMouseLeave","mouseEnter","mouseLeave","tickLabels","ticks_labels","tickLabelContainer","label","noTickPositionsSpecified","tickLabelsIndex","reversed","createAndAppendTooltipSubElements","tooltipElem","sliderTooltip","sliderTooltipMin","sliderTooltipMax","$sliderElem","eventToCallbackMap","touchCapable","DocumentTouch","touchX","touchY","tooltipInner","tooltip_min","tooltipInner_min","tooltip_max","tooltipInner_max","_removeProperty","trackLow","trackSelection","trackHigh","handle1","handle2","stylePos","mousePos","sizePos","_setTooltipPosition","setValue","handle1Keydown","handle2Keydown","mousedown","_mousedown","touchstart","_touchstart","touchmove","_touchmove","resize","_resize","_showTooltip","_alwaysShowTooltip","showTooltip","hideTooltip","_hideTooltip","callbackHandle","precision","tooltip_split","natural_arrow_keys","ticks_snap_bounds","getElement","triggerSlideEvent","oldValue","_validateInputValue","applyPrecision","_applyPrecision","_getClosestTickIndex","_setTickIndex","_toPercentage","_layout","newValue","_setDataVal","_removeSliderEventHandlers","_cleanUpEventCallbacksMap","_unbindJQueryEventHandlers","isEnabled","_bindNonQueryEventHandler","_unbindNonQueryEventHandler","attribute","useCurrentValue","relayout","_removeTooltipListener","callbacks","eventNames","_setToolTipOnMouseOver","tempState","formattedTooltipVal","positionPercentages","getPositionPercentages","_setText","_copyState","dragged","keyCtrl","enter","per","leave","formattedValue","startPercent","endPercent","sp","currentRange","_createHighlightRange","styleMargin","styleSize","labelSize","extraMargin","innerTooltipMinText","innerTooltipMaxText","offset_min","offset_max","_isHighlightRange","ev","removeProperty","_getPercentage","diff1","diff2","_adjustPercentageForRangeSliders","mousemove","mouseup","_mousemove","_mouseup","_calculateValue","_triggerFocusOnHandle","handleIdx","isHorizontal","isRTL","isReversed","val1","val2","_pauseEvent","_getNumDigitsAfterDecimalPlace","percentageWithAdjustedPrecision","_applyToFixedAndParseFloat","_setValues","comp","_toValue","snapToClosestTick","_snapToClosestTick","Infinity","toFixedInput","truncatedNum","distanceToSlide","_validateArray","callbackFnArray","callbackFn","_triggerJQueryEvent","eventData","innerText","classString","newClasses","classTag","_offsetLeft","_offsetRight","_offsetTop","_css","elementRef","styleName","all","tooltips","tooltipPos","oppositeSide","difference","webpackPolyfill","paths","webpackContext","req","webpackContextResolve","cocoon_element_counter","create_new_id","newcontent_braced","newcontent_underscord","assocs","insertionMethod","insertionNode","insertionTraversal","regexp_braced","regexp_underscord","new_content","new_contents","insertionNodeElem","getInsertionNodeElem","contentNode","before_insert","wrapper_class","node_to_delete","trigger_node","before_remove","_options","onStart","onEnd","onSkip","current_step","$body","lockTouch","destroyEnjoy","nextUserClass","skipUserClass","stepAction","step_data","onBeforeStart","space_index","event_type","description","scrollAnimationSpeed","makeEventName","enjoyhint","$event_element","event_selector","keydown","showNext","showSkip","skipButton","max_habarites","radius","shape_margin","coords","shape_data","center_x","center_y","scroll","shape","nextStep","skipAll","is_custom","event_name","runScript","resumeScript","getCurrentStep","setScript","setSteps","resume","onNextClick","onSkipClick","Sizzle","rbuggyMatches","push_native","rcombinators","rattributeQuotes","rnative","escaped","escapedWhitespace","disabledAncestor","qsa","addHandle","siblingCheck","sourceIndex","hasCompare","attachEvent","createComment","adown","aup","ap","bp","specified","detectDuplicates","uniqueCache","uniqueID","risSimple","stackTrace","master","rkeyEvent","rmouseEvent","rxhtmlTag","rscriptTypeMasked","pdataOld","pdataCur","rmargin","pixelMarginRight","pixelMarginRightVal","augmentWidthOrHeight","timerId","raf","clazz","clientTop","clientLeft","cachedScrollbarWidth","rhorizontal","rvertical","roffset","rposition","rpercent","_position","getOffsets","parseCss","getDimensions","w1","w2","innerDiv","getScrollInfo","within","isDocument","hasOverflowX","scrollWidth","getWithinInfo","withinElement","isElemWindow","of","atOffset","targetWidth","targetHeight","targetOffset","basePosition","dimensions","scrollInfo","collision","at","horizontalOffset","verticalOffset","collisionPosition","elemWidth","elemHeight","collisionWidth","collisionHeight","myOffset","my","feedback","horizontal","vertical","important","fit","newOverRight","withinOffset","collisionPosLeft","overLeft","overRight","newOverBottom","collisionPosTop","overTop","overBottom","newOverLeft","newOverTop","flipfit","disableSelection","enableSelection","colors","stepHooks","rplusequals","stringParsers","re","execResult","space","color","Color","green","blue","spaces","rgba","red","hsla","lightness","propTypes","getType","allowEmpty","def","stringParse","inst","_rgba","spaceName","transparent","hue2rgb","q","_spaceName","same","localCache","isCache","_space","used","distance","startColor","startValue","endValue","blend","opaque","toRgbaString","toHslaString","toHexString","includeAlpha","vtype","_hsla","colorInit","borderColor","part","aqua","black","fuchsia","gray","lime","maroon","navy","olive","purple","silver","teal","white","yellow","dataSpace","dataSpaceStyle","dataSpaceAnimated","classAnimationActions","shorthandStyles","borderBottom","borderLeft","borderRight","borderTop","borderWidth","getElementStyles","styleDifference","oldStyle","newStyle","setAttr","animateClass","applyClassChange","baseClass","allAnimations","styleInfo","dfd","switchClass","_normalizeArguments","standardAnimationOption","parseClip","uiBackCompat","save","restore","setMode","createWrapper","wrapper","fontSize","background","removeWrapper","define","scaledDimensions","clipToBox","clip","queueLength","saveStyle","restoreStyle","getBaseline","origin","createPlaceholder","placeholder","cssPosition","removePlaceholder","cleanUp","setTransition","factor","cssUnit","effectMethod","defaultMode","queueName","modes","normalizedMode","cleanup","cssClip","clipObj","transfer","targetFixed","fixTop","fixLeft","endPosition","startPosition","clipInit","baseEasings","Sine","Circ","Elastic","Back","Bounce","pow2","bounce","easeIn","up","down","upAnim","downAnim","refValue","times","anims","motion","queuelen","both","oppositeMotion","mx","rows","pieces","cells","childComplete","animComplete","horizFirst","animation1","animation2","backgroundImage","baseline","cProps","vProps","hProps","childOriginal","childFrom","childTo","newOptions","fade","showhide","animateTo","positiveMotion","startClip","startRef","hasTabindex","mapName","focusableIfVisible","fieldset","formResetMixin","_formResetHandler","instances","_bindFormResetHandler","_unbindFormResetHandler","CSS","BACKSPACE","COMMA","DELETE","DOWN","END","ENTER","ESCAPE","HOME","PAGE_DOWN","PAGE_UP","PERIOD","SPACE","TAB","UP","labels","ancestor","ancestors","includeHidden","excludeStaticParent","overflowRegex","tabbable","uniqueId","removeUniqueId","collapsible","heightStyle","icons","activeHeader","activate","beforeActivate","hideProps","paddingTop","paddingBottom","showProps","prevShow","prevHide","_processPanels","_refresh","_createIcons","icon","_destroyIcons","_setupEvents","currentIndex","toFocus","_eventHandler","_panelKeyDown","prevHeaders","prevPanels","panels","maxHeight","_findActive","headerId","panelId","isVisible","activeChildren","clickedChildren","clicked","clickedIsActive","collapsing","toShow","toHide","oldHeader","oldPanel","newHeader","newPanel","_toggle","_animate","_toggleComplete","adjust","boxSizing","submenu","menus","role","activeMenu","mouseHandled","lastMousePosition","_activateItem","keepActiveItem","_menuItems","collapseAll","_closeOnDocumentClick","previousFilter","actualTarget","submenus","character","previousPage","nextPage","_move","filterTimer","_filterMenuItems","newSubmenus","newItems","newWrappers","menu","submenuCaret","_isDivider","_itemRole","listbox","nested","focused","activeParent","_scrollIntoView","_startOpening","elementHeight","itemHeight","_hasScroll","fromFocus","_open","currentMenu","startMenu","newItem","isFirstItem","isLastItem","escapedCharacter","autoFocus","minLength","requestIndex","pending","liveRegionTimer","suppressKeyPress","suppressKeyPressRepeat","suppressInput","isTextarea","isInput","isMultiLine","valueMethod","isNewMenu","_keyEvent","_value","term","_searchTimeout","keypress","selectedItem","searching","_change","_initSource","_appendTo","menufocus","liveRegion","menuselect","_isEventTargetInWidget","menuElement","_closeOnClickOutside","request","autocomplete","equalValues","menuVisible","modifierKey","_search","cancelSearch","_response","__response","_normalize","_suggest","_renderMenu","_resizeMenu","_renderItemData","_renderItem","keyEvent","escapeRegex","noResults","amount","controlgroupCornerRegex","onlyVisible","_enhance","_callChildMethod","childWidgets","controlgroupLabel","_initWidgets","instanceOptions","_resolveClassesValues","widgetElement","_updateCornerClass","_buildSimpleOptions","_spinnerOptions","_buttonOptions","_checkboxradioOptions","_selectmenuOptions","middle","only","labelContents","_readType","originalLabel","_updateLabel","_updateIcon","_getRadioGroup","nameSelector","_toggleClasses","checkboxradio","iconSpace","toAdd","iconPosition","showLabel","hasTitle","_updateTooltip","displayBlock","_attachIcon","_attachIconSpace","newShowLabel","newIcon","buttonset","controlgroup","datepicker_instActive","datepicker_getZindex","Datepicker","_curInst","_disabledInputs","_datepickerShowing","_inDialog","_mainDivId","_inlineClass","_appendClass","_triggerClass","_dialogClass","_disableClass","_unselectableClass","_currentClass","_dayOverClass","regional","closeText","prevText","nextText","currentText","monthNames","monthNamesShort","dayNames","dayNamesShort","dayNamesMin","weekHeader","firstDay","showMonthAfterYear","yearSuffix","selectMonthLabel","selectYearLabel","_defaults","showOn","showAnim","showOptions","appendText","buttonText","buttonImage","buttonImageOnly","hideIfNoPrevNext","navigationAsDateFormat","gotoCurrent","changeMonth","changeYear","yearRange","showOtherMonths","selectOtherMonths","showWeek","calculateWeek","iso8601Week","shortYearCutoff","beforeShow","onSelect","onChangeMonthYear","onUpdateDatepicker","numberOfMonths","showCurrentAtPos","stepMonths","stepBigMonths","altField","altFormat","constrainInput","showButtonPanel","autoSize","dpDiv","datepicker_bindHover","datepicker_handleMouseover","_isDisabledDatepicker","datepicker_extendRemove","markerClassName","maxRows","_widgetDatepicker","setDefaults","_attachDatepicker","_newInst","_connectDatepicker","_inlineDatepicker","selectedDay","selectedMonth","selectedYear","drawMonth","drawYear","_attachments","_doKeyDown","_doKeyPress","_doKeyUp","_autoSize","_disableDatepicker","_get","_showDatepicker","alt","_lastInput","_hideDatepicker","findMax","maxI","_formatDate","divSpan","_setDate","_getDefaultDate","_updateDatepicker","_updateAlternate","_dialogDatepicker","browserWidth","browserHeight","scrollX","scrollY","_dialogInst","_dialogInput","_pos","blockUI","_destroyDatepicker","_enableDatepicker","cursor","_getInst","_optionDatepicker","_getDateDatepicker","_getMinMaxDate","_changeDatepicker","_refreshDatepicker","_setDateDatepicker","noDefault","_setDateFromField","_getDate","dateStr","handled","_selectDay","_adjustDate","_clearDate","_gotoToday","chars","chr","_possibleChars","lastVal","_getFormatConfig","beforeShowSettings","_findPos","_checkOffset","_shouldFocusInput","_generateHTML","_attachHandlers","origyearshtml","numMonths","_getNumberOfMonths","cols","activeCell","yearshtml","dpWidth","dpHeight","inputWidth","inputHeight","viewWidth","viewHeight","postProcess","_tidyDialog","unblockUI","_checkExternalClick","_adjustInstDate","currentDay","currentMonth","currentYear","_notifyChange","_selectMonthYear","_selectDate","noWeekends","checkDate","iFormat","dim","iValue","shortYearCutoffTemp","literal","lookAhead","getNumber","isDoubled","digits","getName","shortNames","longNames","pair","checkLiteral","_ticksTo1970","_getDaysInMonth","_daylightSavingAdjust","COOKIE","TICKS","TIMESTAMP","formatNumber","formatName","_restrictMinMax","_determineDate","offsetNumeric","offsetString","newDate","noChange","origMonth","origYear","today","selectDay","selectMonth","selectYear","maxDraw","gotoDate","controls","buttonPanel","row","group","selectedDate","cornerClass","calender","leadDays","curRows","numRows","printDate","dRow","daySettings","otherMonth","unselectable","tempDate","isMultiMonth","_canAdjustMonth","outerHTML","_isInRange","_generateMonthYearHeader","_getFirstDayOfMonth","inMinYear","inMaxYear","thisYear","determineYear","endYear","monthHtml","onChange","minMax","curYear","curMonth","yearSplit","minYear","maxYear","initialized","otherArgs","cancel","_mouseInit","_mouseDown","_mouseDestroy","_mouseMoveDelegate","_mouseUpDelegate","_mouseMoved","_mouseStarted","_mouseUp","_mouseDownEvent","btnIsLeft","elIsCancel","_mouseCapture","mouseDelayMet","_mouseDelayTimer","_mouseDistanceMet","_mouseDelayMet","_mouseStart","_mouseMove","ignoreMissingWhich","_mouseDrag","_mouseStop","plugin","plugins","allowDisconnected","mouse","addClasses","connectToSortable","containment","cursorAt","helper","iframeFix","refreshPositions","revert","revertDuration","scrollSensitivity","scrollSpeed","snap","snapMode","snapTolerance","drag","_setPositionRelative","_setHandleClassName","_removeHandleClassName","destroyOnClear","_getHandle","_blurActiveElement","_blockFrames","iframeBlocks","iframe","_unblockFrames","_createHelper","_cacheHelperProportions","ddmanager","_cacheMargins","hasFixedAncestor","positionAbs","_refreshOffsets","originalPosition","_generatePosition","originalPageX","originalPageY","_adjustOffsetFromHelper","_setContainment","dropBehaviour","prepareOffsets","dragStart","margins","_getParentOffset","_getRelativeOffset","noPropagation","_convertPositionTo","_uiHash","dropped","drop","dragStop","handleElement","helperIsFunction","helperProportions","_isRootNode","po","scrollIsRootNode","isUserScrollable","ce","relativeContainer","constrainPosition","co","cancelHelperRemoval","draggable","uiSortable","sortables","sortable","isOver","_storedCSS","_helper","innermostIntersecting","_intersectsWith","containerCache","currentItem","fromOutside","_revert","_cursor","_opacity","scrollParentNotHidden","overflowOffset","scrolled","snapElements","$t","$o","ts","ls","rs","x1","x2","y1","y2","snapping","release","snapItem","_zIndex","alsoResize","animateDuration","animateEasing","autoHide","ghost","handles","minHeight","_num","_isNumber","_aspectRatio","originalElement","_proportionallyResizeElements","resizable","elementIsWrapper","originalResizeStyle","_proportionallyResize","_setupHandles","_handles","resizing","_addedHandles","_removeHandles","hname","sw","ne","nw","_renderAxis","padPos","padWrapper","capture","curleft","curtop","calculatedSize","_renderProxy","_calculateAdjustedElementDimensions","originalSize","sizeDiff","originalMousePosition","_propagate","smp","dx","dy","_updatePrevProperties","_updateVirtualBoundaries","_updateRatio","_respectSize","_updateCache","_applyChanges","pr","ista","soffseth","soffsetw","prevPosition","prevSize","forceAspectRatio","pMinWidth","pMaxWidth","pMinHeight","pMaxHeight","_vBoundaries","cpos","csize","ismaxw","ismaxh","isminw","isminh","dw","dh","cw","_getPaddingPlusBorderDimensions","widths","borders","paddings","elWidth","elHeight","paddingBorder","_getElementTheoreticalSize","extraSize","prel","outerDimensions","elementOffset","oc","containerElement","containerOffset","containerPosition","parentData","containerSize","woset","hoset","isParent","isOffsetRelative","cp","pRatio","cop","continueResize","ho","elSize","os","sum","gridX","gridY","ox","oy","newWidth","newHeight","isMaxWidth","isMaxHeight","isMinWidth","isMinHeight","autoOpen","closeOnEscape","modal","topOffset","uiDialogTitleHeadingLevel","beforeClose","resizeStart","resizeStop","sizeRelatedOptions","resizableRelatedOptions","originalCss","originalTitle","_createWrapper","uiDialog","_createTitlebar","_createButtonPane","_makeDraggable","_makeResizable","_isOpen","_trackFocus","_untrackInstance","_destroyOverlay","_focusedElement","_hide","moveToTop","_moveToTop","silent","moved","zIndices","zIndexMax","_focusTabbable","_size","_createOverlay","overlay","_show","_makeFocusTarget","uiDialogButtonPane","uiDialogTitlebarClose","_restoreTabbableFocus","_keepFocus","tabbables","uiDialogTitle","uiDialogTitlebar","uiDialogHeadingLevel","Number","isInteger","_title","uiButtonSet","_createButtons","buttonOptions","filteredUi","resizeHandles","_minHeight","_trackingInstances","exists","resizableOptions","isDraggable","isResizable","nonContentHeight","minContentHeight","maxContentHeight","_allowInteraction","isOpening","overlays","dialog","dialogClass","greedy","tolerance","deactivate","proportions","isover","isout","_addToManager","droppables","_splice","_addActiveClass","_deactivate","_removeActiveClass","_over","_addHoverClass","_out","_removeHoverClass","_drop","custom","childrenIntersection","droppable","intersect","isOverAxis","toleranceMode","absolute","droppablesLoop","greedyChild","parentInstance","intersects","hoverClass","activeClass","_constrainedValue","valueDiv","_refreshValue","indeterminate","_percentage","overlayDiv","autoRefresh","selecting","unselected","unselecting","elementPos","selectees","selecteeOffset","startselected","opos","selectee","doSelect","hit","selectmenuId","ids","_drawButton","_drawMenu","_rendered","menuItems","_parseOption","buttonItem","_renderButtonItem","_resizeButton","_buttonEvents","_refreshMenu","menuWrap","menuInstance","_select","focusIndex","_getSelectedItem","_parseOptions","_setAria","_toggleAttr","_documentClick","menuWidget","currentOptgroup","_setSelection","getSelection","removeAllRanges","addRange","rangeCount","getRangeAt","_selectFocusedItem","oldIndex","numPages","_keySliding","_mouseSliding","_animateOff","_handleIndex","_detectOrientation","_calculateNewMax","_createRange","_createHandles","handleCount","existingHandles","_valueMin","_handleEvents","normValue","closestHandle","mouseOverHandle","elementSize","_normValueFromMouse","_valueMax","thisDistance","_lastChangedValue","_start","_clickOffset","_stop","pixelTotal","pixelMouse","percentMouse","valueTotal","valueMouse","_trimAlignValue","uiHash","handleIndex","_hasMultipleValues","newVal","otherVal","newValues","vals","_values","valsLength","_refreshRange","valModStep","alignValue","_precision","_precisionOf","decimal","lastValPercent","valPercent","valueMin","valueMax","oRange","_set","curVal","keyup","connectWith","dropOnEmpty","forcePlaceholderSize","forceHelperSize","beforeStop","receive","_isOverAxis","_isFloating","overrideHandle","validHandle","reverting","_refreshItems","_removeCurrentsFromItems","noActivation","currentContainer","domPosition","_createPlaceholder","_storedStylesheet","_storedZIndex","_storedOpacity","_preserveHelperProportions","containers","dragging","lastPositionAbs","_scroll","itemElement","intersection","_refreshItemPositions","dragDirection","_getDragVerticalDirection","_getDragHorizontalDirection","_intersectsWithPointer","_intersectsWithSides","_rearrange","_contactContainers","_noFinalSort","_getItemsAsjQuery","connected","expression","dyClick","dxClick","isOverElementHeight","isOverElementWidth","isOverElement","forcePointerForContainers","floating","verticalDirection","horizontalDirection","isOverBottomHalf","isOverRightHalf","_connectWith","addItems","targetData","_queries","queriesLength","toleranceElement","refreshContainers","_createTrPlaceholder","sourceTr","targetTr","dist","itemWithLeastDistance","posProperty","sizeProperty","nearBottom","innermostContainer","innermostIndex","hardRefresh","delayedTriggers","delayEvent","_inst","sender","spinnerModifier","culture","incremental","numberFormat","page","spin","_draw","_events","spinning","_spin","mousewheelTimer","checkFocus","_repeat","uiSpinner","steps","_adjustValue","_increment","aboveMin","prevValue","_parse","_format","Globalize","allowAny","stepUp","_stepUp","stepDown","_stepDown","pageUp","pages","pageDown","spinner","_uiSpinnerHtml","_buttonHtml","beforeLoad","_isLocal","anchorUrl","locationUrl","decodeURIComponent","running","_processTabs","_initialActive","tabs","anchors","locationHashDecoded","tab","_getPanelForTab","_tabKeydown","focusedTab","goingForward","_handlePageNav","activating","_focusNextTab","_panelKeydown","_findNextTab","lastTabIndex","constrain","_setupHeightStyle","lis","tablist","prevTabs","prevAnchors","_getList","anchorId","originalAriaControls","_createPanel","oldTab","newTab","_getIndex","_ajaxSettings","track","_addDescribedBy","describedby","_removeDescribedBy","mouseover","disabledTitles","tooltipData","_updateContent","_disable","_enable","blurEvent","_registerCloseHandlers","contentOption","delayedShow","a11yContent","positionOption","_find","_tooltip","fakeEvent","targetElement","_removeTooltip","closing","hiding","tooltipClass","select2","amd","requirejs","normalize","require","uri","deps","_defined","listeners","Extend","__super__","Decorate","displayName","_type","invoke","Observable","generateChars","_convertData","hasScroll","escapeMarkup","__cache","GetUniqueElementId","StoreData","GetData","RemoveData","copyNonInternalCssClasses","render","$results","displayMessage","hideLoading","hideMessages","highlightFirstItem","ensureHighlightVisible","setClasses","showLoading","loading","_resultId","getHighlightedResults","SHIFT","CTRL","ALT","ESC","_tabindex","$selection","_handleBlur","_attachCloseHandler","_detachCloseHandler","selectionContainer","normalizePlaceholder","_handleClear","_handleKeyboardClear","prevented","$searchContainer","$search","_transferTabIndex","resizeSearch","_keyUpPrevented","searchRemoveChoice","handleSearch","dict","_cache","loadPath","query","generateResultId","unselect","addOptions","_normalizeItem","_dataToConvert","convertToOptions","ajaxOptions","_applyDefaults","processResults","_request","_queryTimeout","createTag","insertTag","_removeOldTags","tokenizer","dropdown","minimumInputLength","minimum","maximumInputLength","maximum","maximumSelectionLength","_checkIfMaximumSelected","$dropdown","showSearch","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","loadMore","pagination","more","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","isConnected","minimumResultsForSearch","_handleSelectOnClose","originalSelect2Event","_selectTriggered","errorLoading","inputTooLong","inputTooShort","loadingMore","maximumSelected","removeAllItems","removeItem","dataAdapter","tags","tokenSeparators","resultsAdapter","selectOnClose","dropdownAdapter","multiple","closeOnSelect","dropdownCssClass","selectionAdapter","allowClear","selectionCssClass","language","_resolveLanguage","translations","_processTranslations","amdLanguageBase","dropdownAutoWidth","scrollAfterSelect","sorter","templateResult","templateSelection","applyFromElement","fromElement","dataset","_generateId","_placeContainer","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","_syncAttributes","_resolveWidth","_syncA","_syncS","_syncSubtree","_observer","MutationObserver","observe","childList","subtree","toggleDropdown","_isChangeMutation","addedNodes","removedNodes","nodeIdCompat","toPrimitive","return","globalThis","propertyIsEnumerable","getOwnPropertyDescriptor","K","V","IS_HTMLDDA","X","tt","nt","ut","isPrototypeOf","rt","ot","st","Deno","versions","v8","ht","ft","dt","vt","getOwnPropertySymbols","sham","Et","bt","yt","mt","At","Ct","Ft","St","kt","Dt","xt","wt","Ot","Bt","jt","Tt","Lt","It","Rt","_t","Mt","Pt","Nt","Ht","Ut","copyright","license","Gt","Wt","zt","Kt","Vt","qt","Yt","Xt","Jt","Zt","Qt","te","ee","ie","ue","oe","ae","withoutSetter","le","fe","pe","ve","ge","Ee","be","ye","me","Ae","Ce","Fe","Se","ke","De","xe","we","Oe","$e","Be","je","Te","Le","Ie","Re","_e","Me","Pe","Ne","He","Ue","Ge","We","ze","Ke","Ve","qe","Ye","Xe","Je","Ze","Qe","tn","nn","un","rn","sn","an","EXISTS","PROPER","CONFIGURABLE","ln","cn","hn","inspectSource","dn","pn","vn","gn","En","bn","yn","An","Cn","Fn","Sn","kn","Dn","xn","wn","On","$n","Bn","jn","Tn","Ln","facade","In","Rn","enforce","getterFor","_n","Mn","Pn","Nn","Hn","Un","Gn","Wn","zn","Kn","Vn","qn","Yn","Xn","Jn","Zn","Qn","arity","ti","ei","ni","ri","unsafe","nonConfigurable","nonWritable","oi","si","ai","trunc","ci","di","pi","gi","Ei","bi","yi","mi","Ai","Ci","Fi","Si","ki","Di","xi","wi","Oi","$i","Bi","ji","Ti","Li","Ii","Ri","Mi","Pi","Ni","Hi","Ui","Gi","Wi","zi","Ki","Vi","qi","Xi","Yi","Zi","Ji","NATIVE","POLYFILL","Qi","tu","nu","iu","uu","ou","su","stat","dontCallGetSet","forced","au","lu","cu","fu","du","pu","vu","gu","callee","Eu","bu","yu","mu","Au","hasIndices","ignoreCase","multiline","dotAll","unicode","unicodeSets","sticky","Cu","Fu","Su","ku","Du","BROKEN_CARET","MISSED_STICKY","UNSUPPORTED_Y","xu","wu","Ou","$u","Bu","ju","Tu","Lu","Iu","Ru","_u","Mu","Pu","Nu","Hu","Uu","Gu","Wu","zu","Ku","Vu","qu","Yu","Xu","write","Ju","ActiveXObject","domain","Zu","Qu","er","ir","ur","rr","or","lr","cr","dr","vr","gr","Er","yr","mr","Ar","Cr","Fr","Sr","Dr","xr","wr","Or","$r","Br","jr","Tr","Lr","Ir","Rr","_r","Mr","Pr","Nr","Hr","Ur","Gr","Wr","zr","Kr","Vr","qr","Yr","Xr","Jr","Zr","Qr","eo","io","uo","oo","so","ao","fo","vo","go","Eo","bo","yo","mo","Ao","Co","Fo","So","Do","xo","wo","Oo","Bo","jo","To","Lo","Io","Ro","_o","Mo","Po","No","Ho","Uo","Go","Wo","zo","Ko","Vo","qo","Yo","Xo","Jo","Zo","Qo","us","hs","fs","ds","foo","ps","vs","gs","Es","ys","As","Cs","Fs","Ss","ks","Ds","xs","Os","$s","Bs","js","Ts","Ls","Is","Rs","_s","Ms","Ps","Ns","Hs","Us","classPrefix","selectAll","single","singleRadio","hideOptgroupCheckboxes","multipleWidth","dropWidth","maxHeightUnit","displayValues","displayTitle","displayDelimiter","minimumCountSelected","ellipsis","keepOpen","openOnHover","filterGroup","filterPlaceholder","filterAcceptOnEnter","filterByDataLength","customFilter","showClear","styler","textTemplate","labelTemplate","onOpen","onCheckAll","onUncheckAll","onFocus","onBlur","onOptgroupClick","onBeforeClick","onClick","onFilter","onClear","onAfterCreate","Gs","formatSelectAll","formatAllSelected","formatCountSelected","formatNoMatchesFound","Ws","BLOCK_ROWS","CLUSTER_BLOCKS","DEFAULTS","METHODS","LOCALES","zs","Ks","Vs","qs","Ys","Reflect","Xs","Js","Zs","Qs","ta","ea","na","ia","ua","ra","oa","sa","aa","la","ha","pa","va","ga","Ea","ba","ya","ma","Aa","Ca","Fa","Sa","Da","xa","wa","Oa","$a","Ba","Ta","La","Ia","Ra","Ma","Pa","Na","Ha","Ua","Ga","Wa","za","Ka","Va","qa","Ya","Xa","Ja","Za","Qa","tl","il","rl","al","cl","hl","fl","dl","vl","every","filterReject","El","bl","yl","ml","Al","Cl","Fl","Sl","kl","Dl","xl","wl","Ol","$l","Bl","jl","entries","Tl","Ll","Il","Rl","Ml","Pl","Nl","Hl","Ul","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","Gl","Wl","zl","Kl","Vl","ql","Yl","Xl","Jl","Zl","Ql","tc","ec","nc","ic","uc","rc","sc","ac","lc","cc","hc","fc","dc","pc","vc","gc","Ec","bc","yc","mc","Ac","Cc","Fc","Sc","scrollEl","contentEl","initDOM","lastCluster","getNum","innerHtml","clusterHeight","getRowsHeight","initData","checkChanges","bottomOffset","getExtra","blockHeight","clusterRows","rowsAbove","dataStart","dataEnd","kc","Dc","xc","wc","Oc","$c","Bc","jc","Tc","Lc","Ic","Rc","_c","Mc","Pc","Nc","Hc","Uc","Gc","Wc","zc","Kc","Vc","qc","Yc","Xc","Jc","Zc","Qc","eh","nh","ih","uh","rh","oh","sh","ah","lh","fh","letters","ph","vh","gh","$el","initLocale","initContainer","initSelected","initFilter","initDrop","initView","multipleSelect","$label","$choice","$drop","$close","selectAllName","selectGroupName","selectItemName","initRow","fromHtml","dataTotal","allSelected","filterText","initList","$ul","initListItems","getListRows","virtualScroll","updateDataStart","updateDataEnd","updateData","initListItem","$searchInput","$selectAll","$selectGroups","$selectItems","$disableItems","$noResults","_checkAll","updateSelected","setSelects","_checkGroup","_check","animateMethod","getSelects","originalSearch","methods","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","nextTick","browser","env","argv","addListener","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","binding","cwd","chdir","umask","validate","validator","onsubmit","submitButton","cancelSubmit","submitHandler","formSubmitted","currentForm","pendingRequest","focusInvalid","valid","errorList","rules","staticRules","existingRules","filtered","isContentEditable","normalizeRule","normalizeRules","classRules","attributeRules","dataRules","required","remote","blank","filled","unchecked","errorClass","pendingClass","validClass","errorElement","focusCleanup","errorContainer","errorLabelContainer","ignore","ignoreTitle","customElements","onfocusin","lastActive","unhighlight","hideThese","errorsFor","onfocusout","checkable","submitted","optional","onkeyup","excludedKeys","elementValue","highlight","findByName","email","dateISO","equalTo","maxlength","minlength","rangelength","autoCreateRanges","labelContainer","errorContext","valueCache","focusListeners","clickListeners","invalidHandler","checkForm","errorMap","showErrors","prepareForm","cleanElement","clean","checkElement","validationTargetFor","prepareElement","testgroup","numberOfInvalids","errors","successList","defaultShowErrors","resetForm","hideErrors","resetElements","objectLength","addWrapper","findLastActive","rulesCache","resetInternals","validity","badInput","lastIndexOf","rule","normalizer","rulesCount","dependencyMismatch","abortRequest","parameters","formatAndAdd","customDataMessage","customMessage","findDefined","defaultMessage","theregex","toToggle","validElements","invalidElements","place","errorID","elementID","idOrName","describedBy","errorPlacement","escapeCssMeta","describer","getLength","depend","dependTypes","elementAjaxPort","startRequest","stopRequest","port","ajaxAbort","previousValue","classRuleSettings","creditcard","addClassRules","normalizeAttributeRule","depends","keepRule","parameter","transformed","addMethod","decimals","errorMessage","supportedTypes","decimalPlaces","optionDataString","originalMessage","pendingRequests","starWidth","normalFill","ratedFill","numStars","maxValue","rating","fullStar","halfStar","readOnly","spacing","multiColor","onInit","onSet","starSvg","fill","endColor","vendor","opera","RateYo","rateYo","Toggle","onstyle","offstyle","_onstyle","_offstyle","$toggleOn","$toggleOff","$toggleHandle","$toggleGroup","$toggle","bootstrapToggle","tagClass","itemValue","itemText","itemTitle","freeInput","addOnBlur","maxTags","maxChars","confirmKeys","delimiter","delimiterRegex","cancelConfirmKeysOnEmpty","onTagExists","$tag","trimValue","allowDuplicates","TagsInput","itemsArray","isSelect","objectItems","placeholderText","inputSize","$input","build","makeOptionItemFunction","propertyName","makeOptionFunction","dontPushVal","pushVal","existing","maxInputLength","beforeItemAddEvent","htmlEncode","findInputWrapper","$option","$existingTag","beforeItemRemoveEvent","removeAll","typeahead","processItems","texts","updater","highlighter","typeaheadjs","typeaheadConfig","typeaheadDatasets","datum","valueKey","$inputWrapper","doGetCaretPosition","$prevTag","$nextTag","textLength","keyPressEvent","lookupList","found","maxLengthReached","keyCombination","ctrl","elt","tagsinput","arg1","arg2","arg3","retVal","htmlEncodeContainer","oField","iCaretPos","oSel","PeriodicalUpdater","minTimeout","maxTimeout","maxCalls","maxCallsCallback","autoStop","autoStopCallback","cookie","runatonce","verbose","pu_log","lvl","remoteData","prevData","timerInterval","calls","originalMaxCalls","reset_timer","getdata","sendData","toSend","boostTimer","mag","restart","newInterval","rawData","boostPeriod","textStatus","Updater","PeriodicalTimer","_form","regexpr","usernameRegx","emailRegx","season_invalid","status_invalid","type_name","generate_vision_goal_sample","indx","report_id","dataTextareaArray","dataTextareaRowNumber","generate_report_vision_goal_fields","accordId","newUrl","history","pushState","outside","jq_addOutsideEvent","outside_event_name","event_namespaced","handle_event","old_handler","addOutsideEvent","getProgressBarClickInfo","progress_bar","progressbar","audio_player","play_button","mute_button","volume_bar","more_info","player","volume","end_time","onloadedmetadata","paused","yearPickerAppName","startYear","itemTag","selectedClass","disabledClass","hideClass","highlightedClass","pick","event_click","event_show","event_hide","showView","$template","onGlobalClick","len2","args2","key2","globalClick","hideView","setStartYear","setEndYear","viewYear","renderYear","prevDisabled","nextDisabled","isSelectedYear","createItem","highlighted","yearsPrev","yearsNext","yearsCurrent","yearsBody","isUndefained","class_top_left","class_bottom_left","class_placements","Yearpicker","initialValue","initialYear","unbuild","containerWidth","containerHeight","elementWidth","yearpicker","isDestory","constractor","indexing_profile_children","toggleSortIcon","linkId","ulId","$sortIcon","updateMinistryReport2","required_accordion","openAccordian","localStorage","getItem","accordion","setItem","notes","user_id","practicalReq","practical_requirement","theologicalReq","theological_requirement","retirementIntent","retirement_intent","buttonClass","acc","userName","location_id","supervisors","first_name","last_name","preventNonNumericalInput","render_step1","render_step2","toggle_mentor_detail","mentor_checkbox","is_mentor","mentor_detail","handleFiles","fileInput","imageType","reader","aImg","readAsDataURL","populate_ministers","populateCompetencyTags","populate_dynamic_columns","handle_minisiter_selection","current_element","mentor_id","$selector","resource_type_id","resource_id","target_element","checkboxes","competency_ids","ratingform","updateMinistryReport","close_all_accordion","mr_disabled","effectiveness_ratings","minimum_factor","insertedItem","rating_elem","rating_input","selected_value","rate_element","bodies","disable_season","selected_year","triggerAutoSave","autoSaveReportTimeout","elm","render_async_url","accordion_open","parent_target_id","this_ref","permitted_user","import_delegated_preaching","focus_below_field","klass_name","next_tr","fldLength","fields","preaching_field_move_cursor","send_mr_to_principal","confirmation_url","main_url","appendActiveTabClass","pushStateSelectedCompetency","queryString","newQueryString","new_url","checkValidity","reminders","doesNotApplyRate","last_sidebar_tab","toggle_class","slideBar","rateBox","autoSaveReviewForm","mutations","methodType","next_tab","gstart_time","gend_time","fullCalendar","columnHeaderFormat","displayEventTime","selectable","displayEventEnd","slotDuration","slotLabelInterval","businessHours","selectOverlap","jsEvent","availEmptySlot","eventClick","occupied","eventRender","schedule_time","start_time","event_id","start_date_string","start_span","schedule_modal","end_span","ministers_for_job_notification","klass","conf_ids","location_type_ids","ministers","main_role","selected_minister_id","loc_hash","quryString","location_ids","year_location_fields","any_field_empty","newurl","updateQueryStringParameter","renderPreachingSummaryForm","toggleActiveTabClass","renderConferenceReviewForm","rendertrackAttendanceForm","renderProfileStatisticsForm","toggleLoaderBaseClasses","received","n_type","image_url","created_at","unread_msg","defaultProps","__k","__","__b","__e","__d","__c","__h","__v","vnode","__r","debounceRendering","__P","__n","ownerSVGElement","contextType","__E","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","diffed","localName","createElementNS","dangerouslySetInnerHTML","__html","unmount","componentWillUnmount","Provider","getDerivedStateFromError","componentDidCatch","forceUpdate","__H","__N","__V","isPureReactComponent","__f","__u","__a","__R","__O","fallback","revealOrder","containerInfo","Map","isReactComponent","persist","$$typeof","styleTexts","styleEls","injectStyles","styleText","styleEl","appendStylesTo","registerStylesRoot","rootNode","queriedNonceValue","metaWithNonce","elWithNonce","queryNonceValue","getNonceValue","parentEl","hydrateStylesRoot","sheet","ruleCnt","cssRules","styleStr","insertRule","removeElement","elementClosest","elementMatches","PIXEL_PROP_RE","propName","applyStyleProp","getEventTargetViaRoot","_b","composedPath","guid$1","getUniqueDomId","transitionEventNames","createAriaClickAttrs","createAriaKeyboardAttrs","onKeyDown","guidNumber","disableCursor","enableCursor","compareByFieldSpec","obj0","obj1","fieldSpec","localeCompare","flexibleCompare","padStart","formatWithOrdinals","fallbackText","compareNumbers","isInt","computeSmallestCellWidth","cellEl","allWidthEl","contentWidthEl","INTERNAL_UNITS","PARSE_RE","parseString","parseObject","specifiedWeeks","addDurations","d0","d1","asRoughDays","dur","asRoughMs","wholeDivideDurations","numerator","denominator","localRes","greatestDurationDenominator","isArraysEqual","a0","a1","equalityFunc","DAY_IDS","addWeeks","dateToUtcArray","arrayToUtcDate","addDays","addMs","diffDays","m0","m1","startOfDay","timeAsMs","buildIsoString","timeZoneOffset","stripZeroTime","formatTimeZoneOffset","formatDayString","formatIsoMonthStr","doIso","mins","memoize","workerFunc","resEquality","teardownFunc","currentArgs","currentRes","newArgs","memoizeObjArg","currentArg","newArg","isPropsEqual","EXTENDED_SETTINGS_AND_SEVERITIES","omitZeroMinute","omitCommas","STANDARD_DATE_PROP_SEVERITIES","timeZoneName","MERIDIEM_RE","COMMA_RE","MULTI_SPACE_RE","LTR_RE","UTC_RE","NativeFormatter","formatSettings","standardDateProps","extendedSettings","severity","buildFormattingFunc","formatRange","betterDefaultSeparator","diffSeverity","getMarkerYear","getMarkerMonth","getMarkerDay","computeMarkerDiffSeverity","calendarSystem","biggestUnitForPartial","full0","full1","partialFormattingFunc","biggestUnit","partialOptions","computePartialFormattingOptions","partial0","partial1","insertion","i0","found0","before0","after0","i1","found1","before1","after1","findCommonInsertion","defaultSeparator","getLargestUnit","standardDatePropCnt","weekText","weekTextLong","simpleNumberFormat","formatWeekNumber","computeWeekNumber","sanitizeSettings","timeZone","zeroFormat","normalFormat","Intl","DateTimeFormat","codes","zeroProps","tzoStr","replaced","injectTzoStr","buildNativeFormattingFunc","expandZonedMarker","dateInfo","markerToArray","createVerboseFormattingArg","startInfo","localeCodes","CmdFormatter","cmdStr","cmdFormatter","FuncFormatter","createFormatter","refineProps","refiners","refined","identity","filterHash","mapHash","newHash","arrayToHash","hashValuesToArray","HANDLER_RE","getUnequalProps","compareObjs","oldProps","newProps","equalityFuncs","isObjValsEqual","val0","comparator","calendarSystemClassMap","theClass","arrayToMarker","Theme","calendarOptions","iconOverrideOption","setIconOverride","iconOverrideHash","iconClassesCopy","buttonName","applyIconOverridePrefix","iconOverridePrefix","getIconClass","isRtl","rtlIconClasses","baseIconClass","getCustomButtonIconClass","customButtonProps","iconOverrideCustomButtonOption","createContext","ContextType","origProvider","isNew","subs","_props","ViewContextType","nextProps","nextState","propEquality","stateEquality","safeSetState","newState","addPropsEquality","addStateEquality","BaseComponent","setRef","super","queuedDomNodes","currentDomNodes","handleEl","generatorName","customRenderingReplaces","hasCustomRenderingHandler","updateElRef","elRef","customGenerator","defaultGenerator","renderProps","buildElAttrs","innerContent","currentGeneratorMeta","useDefault","customGeneratorRes","domNodes","elTag","applyQueueudDomNodes","triggerCustomRendering","_context$options","handleCustomRendering","customRenderingMetaMap","generatorMeta","containerEl","reportNewContainerEl","elClasses","isTruthy","newNode","extraClassNames","elAttrs","elStyle","RenderId","InnerContent","InnerContentInjector","didMountMisfire","generatedClassNames","classNameGenerator","generateClassNames","renderId","didMount","willUnmount","containerComponent","parentProps","viewApi","buildViewClassNames","viewSpec","viewClassNames","viewDidMount","viewWillUnmount","invertRanges","ranges","constraintRange","dateRange","invertedRanges","compareRanges","range0","range1","intersectRanges","newRange","rangesIntersect","rangeContainsRange","outerRange","innerRange","rangeContainsMarker","computeAlignedDayRange","timedRange","dayCnt","computeVisibleDayRange","nextDayThreshold","startDay","endDay","endTimeMS","diffDates","date0","date1","dateEnv","largeUnit","diffWholeYears","diffWholeMonths","m0day","m1day","diffDayAndTime","getNow","nowInput","createNowMarker","createMarker","DateProfileGenerator","nowDate","initHiddenDays","buildPrev","currentDateProfile","forceToValid","prevDate","currentRangeUnit","dateIncrement","buildNext","nextDate","validRange","currentInfo","isRangeAllDay","renderRange","activeRange","buildValidRange","trimHiddenDays","buildCurrentRangeInfo","buildRenderRange","showNonCurrentDates","adjustActiveRange","slotMinTime","slotMaxTime","buildDateIncrement","validRangeInput","simpleInput","calendarApi","refineRange","dayCount","durationUnit","buildRangeFromDuration","buildRangeFromDayCount","buildCustomVisibleRange","greatestWholeUnit","getFallbackDuration","_this$props","usesMinMaxTime","_this$props2","dateAlignment","computeRes","isHiddenDay","skipHiddenDays","_this$props3","runningCount","visibleRangeInput","customAlignment","rangeInput","parseRange","hiddenDays","isHiddenDayHash","inc","isExclusive","createEventInstance","defId","forcedStartTzo","forcedEndTzo","instanceId","expandRecurring","eventStore","framingRange","pluginHooks","defs","recurringDef","allDay","defaultAllDayEventDuration","defaultTimedEventDuration","starts","expandRecurringRanges","recurringTypes","eventDef","markers","typeId","typeData","EVENT_NON_DATE_REFINERS","groupId","interactive","EVENT_DATE_REFINERS","EVENT_REFINERS","extendedProps","parseEvent","eventSource","allowOpenRange","buildEventRefiners","defIdMap","instanceIdMap","_refineEventDef","refineEventDef","defaultAllDay","computeIsDefaultAllDay","recurringRes","allDayGuess","parseRecurring","parseEventDef","sourceId","singleRes","startMeta","endMeta","startMarker","hasEnd","endMarker","startInput","createMarkerMeta","isTimeUnspecified","forceEventDuration","forcedTzo","parseSingle","publicId","EVENT_UI_REFINERS","eventRefiners","createEventUi","memberAdder","eventDefMemberAdders","freeze","parseEvents","rawEvents","rawEvent","eventTupleToStore","getRelevantEvents","newStore","filterEventStoreDefs","lookDef","isEventDefsGrouped","def0","def1","filterFunc","parseClassNames","editable","startEditable","durationEditable","constraint","overlap","allow","textColor","EMPTY_EVENT_UI","constraints","allows","normalizeConstraint","combineEventUis","uis","combineTwoEventUis","item0","item1","Emitter","thisContext","setThisContext","addToHash","removeFromHash","attachedHandlers","optionHandler","hasHandlers","triggerDateSelect","pev","emitter","buildDateSpanApiWithContext","origEvent","dateSpan","dateSpanTransforms","buildRangeApi","getDefaultEventEnd","applyMutationToEventStore","eventConfigBase","eventConfigs","compileEventUis","applyMutationToEventDef","applyMutationToEventInstance","eventConfig","standardProps","startDelta","endDelta","applier","eventDefMutationAppliers","eventInstance","forceAllDay","clearEnd","datesDelta","EventSourceImpl","internalEventSource","refetch","sourceIds","isRefetch","EventImpl","_def","_instance","setProp","mutate","setExtendedProp","granularity","maintainDuration","endInput","setDates","instanceRange","deltaInput","moveDates","setAllDay","allDayMaintainDuration","formatInput","getCurrentData","relevantEvents","oldEvent","relatedEvents","buildEventApis","asStore","eventApiToStore","eventSources","startStr","formatIso","omitTime","endStr","toPlainObject","collapseColor","collapseExtendedProps","eventApi","excludeInstance","eventApis","excludeInstanceId","sliceEventStore","eventUiBases","inverseBgByGroupId","inverseBgByDefId","defByGroupId","bgRanges","fgRanges","eventUis","origRange","normalRange","slicedRange","isStart","isEnd","invertedRange","fg","setElSeg","seg","fcSeg","getElSeg","eventDefs","compileEventUi","sortEventSegs","segs","eventOrderSpecs","objs","buildSegCompareObj","fieldSpecs","cmp","compareByFieldSpecs","_seg","eventRange","computeSegDraggable","transformers","isDraggableTransformers","_seg$eventRange","transformer","computeSegStartResizable","eventResizableFromStart","computeSegEndResizable","buildSegTimeText","defaultDisplayEventTime","defaultDisplayEventEnd","startOverride","endOverride","wholeEventStart","wholeEventEnd","segStart","segEnd","isStartDay","isEndDay","getSegMeta","todayRange","segRange","isPast","isToday","getEventClassNames","isMirror","isStartResizable","isEndResizable","isDragging","isResizing","isSelected","buildEventRangeKey","getSegAnchorAttrs","_seg$eventRange2","eventInteractive","buildRangeApiWithTimeZone","JsonRequestError","canVGrowWithinCell","getCanVGrowWithinCell","possible","computeCanVGrowWithinCell","Interaction","component","isHitComboAllowed","interactionSettingsToStore","interactionSettingsStore","pointInsideRect","point","intersectRects","rect1","rect2","EMPTY_EVENT_STORE","Splitter","getKeysForEventDefs","_getKeysForEventDefs","splitDateSelection","_splitDateSpan","splitEventStore","_splitEventStore","splitIndividualUi","_splitIndividualUi","splitEventDrag","_splitInteraction","splitEventResize","eventUiBuilders","splitProps","keyInfos","getKeyInfo","defKeys","dateSelections","dateSelection","individualUi","eventStores","eventDrags","eventDrag","eventResizes","eventResize","buildEventUiForKey","keyInfo","buildEventUi","eventSelection","dateSpans","getKeysForDateSpan","getKeysForEventDef","splitStores","splitHashes","interaction","splitStates","affectedStores","affectedEvents","mutatedKeysByDefId","mutatedEvents","mutatedStores","populate","isEvent","allUi","eventUiForKey","baseParts","stuff","getDateMeta","dateProfile","isOther","getDayClassNames","DAY_FORMAT","WEEK_FORMAT","buildNavLinkAttrs","dateMarker","viewType","isTabbable","navLinks","zonedDate","handleInteraction","customAction","navLinkDayClick","navLinkWeekClick","zoomTo","navLinkHint","_scrollbarWidths","_isRtlScrollbarOnLeft","getIsRtlScrollbarOnLeft","outerEl","computeIsRtlScrollbarOnLeft","getScrollbarWidths","computeScrollbarWidthsForEl","computeScrollbarWidths","computeInnerRect","goWithinPadding","outerRect","computeRect","edges","getPadding","borderRightWidth","badScrollbarWidths","scrollbarLeftRight","scrollbarBottom","scrollbarLeft","scrollbarRight","computeEdges","getClippingParents","PositionCache","originEl","originClientRect","buildElHorizontals","buildElVerticals","originClientLeft","lefts","rights","originClientTop","tops","bottoms","leftToIndex","leftPosition","topToIndex","topPosition","getWidth","leftIndex","getHeight","topIndex","similarTo","otherCache","similarNumArrays","ScrollController","getMaxScrollTop","getScrollHeight","getClientHeight","getMaxScrollLeft","getScrollWidth","getClientWidth","canScrollVertically","canScrollHorizontally","canScrollUp","getScrollTop","canScrollDown","canScrollLeft","getScrollLeft","canScrollRight","ElementScrollController","setScrollTop","setScrollLeft","WindowScrollController","DateComponent","prepareHits","queryHit","positionLeft","positionTop","isValidSegDownEl","isValidDateDownEl","SegHierarchy","getEntryThickness","entry","thickness","strictOrder","allowReslicing","maxCoord","maxStackCnt","levelCoords","entriesByLevel","stackCnts","addSegs","hiddenEntries","insertEntry","findInsertion","isInsertionValid","insertEntryAt","handleInvalidInsertion","levelCoord","stackCnt","touchingEntry","hiddenEntry","intersectSpans","splitEntry","barrier","entrySpan","barrierSpan","lateral","insertAt","level","buildEntryKey","newEntry","levelCnt","candidateCoord","touchingLevel","touchingLateral","trackingLevel","trackingCoord","trackingEntry","trackingEntries","searchRes","binarySearch","getEntrySpanEnd","lateralIndex","trackingEntryBottom","destLevel","destLateral","toRects","span0","span1","searchVal","getItemVal","startIndex","endIndex","middleIndex","middleVal","ElementDragging","setMirrorIsVisible","setMirrorNeedsRevert","setAutoScrollEnabled","CLASS_NAME","renderInner$1","_this$context","dayMeta","dayHeaderFormat","navLinkAttrs","colCnt","extraRenderProps","colSpan","extraDataAttrs","dayHeaderContent","dayHeaderClassNames","dayHeaderDidMount","dayHeaderWillUnmount","InnerContainer","isSticky","WEEKDAY_FORMAT","_this$context2","dateMeta","initialNowDate","initialNowQueriedMs","computeTiming","currentState","prevProps","unroundedNow","currentUnitStart","nextUnitStart","waitMs","buildDayRange","_this$computeTiming","timeoutId","createDayHeaderFormatter","_this$props4","datesRepDistinctDays","renderIntro","explicitFormat","dateCnt","computeFallbackHeaderFormat","DaySeriesModel","dateProfileGenerator","indices","dayIndex","cnt","sliceRange","firstIndex","getDateDayIndex","clippedFirstIndex","clippedLastIndex","dayOffset","DayTableModel","daySeries","breakOnWeeks","daysPerRow","rowCnt","buildCells","headerDates","buildHeaderDates","buildCell","seriesSeg","nextIndex","firstCol","lastCol","Slicer","sliceBusinessHours","_sliceBusinessHours","sliceDateSelection","_sliceDateSpan","_sliceEventStore","sliceEventDrag","_sliceInteraction","sliceEventResize","forceDayIfListItem","sliceProps","_len4","extraArgs","_key4","eventSegs","dateSelectionSegs","businessHourSegs","fgEventSegs","bgEventSegs","sliceNowDate","_len5","_key5","_len6","_key6","computeActiveRange","rangeRes","_len7","_key7","sliceEventRanges","_len8","_key8","affectedInstances","activeDateSpanRange","fabricateEventRange","_len9","_key9","eventRanges","sliceEventRange","isComponentAllDay","isInteractionValid","isNewPropsValid","calendarState","isPropsValid","dateSpanMeta","filterConfig","subjectEventStore","subjectDefs","subjectInstances","subjectConfigs","selectionConfig","otherEventStore","removals","otherDefs","otherInstances","otherConfigs","subjectInstanceId","subjectInstance","subjectRange","subjectConfig","subjectDef","allConstraintsPass","eventOverlap","eventOverlapFunc","otherInstanceId","otherInstance","calendarEventStore","subjectAllow","subjectDateSpan","origDef","origInstance","isInteractionPropsValid","relevantEventStore","relevantDefs","relevantInstances","selectionRange","_context$getCurrentDa2","selectOverlapFunc","relevantInstanceId","relevantInstance","selectionAllow","isDateSelectionPropsValid","businessHoursUnexpanded","anyRangesContainRange","constraintToRanges","eventStoreToRanges","outerRanges","VISIBLE_HIDDEN_RE","liquid","liquidIsAbsolute","isAbsolute","overcomeLeft","overcomeRight","overcomeBottom","needsXScrolling","realClientWidth","getYScrollbarWidth","needsYScrolling","realClientHeight","getXScrollbarWidth","RefMap","masterCallback","currentMap","depths","callbackMap","handleValue","removed","added","createRef","refCallback","collect","collectFromHash","computeShrinkWidth","chunkEls","shrinkCells","allMatches","largestWidth","shrinkCell","getSectionHasLiquidHeight","sectionConfig","isColPropsEqual","cols0","cols1","renderMicroColGroup","shrinkWidth","colNodes","colProps","sanitizeShrinkWidth","getSectionClassNames","wholeTableVGrow","renderScrollShim","tableMinWidth","getStickyHeaderDates","stickyHeaderDates","getStickyFooterScrollbar","stickyFooterScrollbar","processCols","scrollerRefs","scrollerElRefs","_handleScrollerEl","forceYScrollbars","scrollerClientWidths","scrollerClientHeights","handleSizing","computeScrollerDims","sectionConfigs","sections","microColGroupNode","getScrollGridClassNames","collapsibleWidth","currentConfig","configCnt","configI","headSectionNodes","bodySectionNodes","footSectionNodes","renderSection","isBuggy","roleAttrs","isHeader","outerContent","renderChunkTd","chunk","chunkConfig","_this$state","getAllowYScrolling","isLiquid","sectionKey","expandRows","tableClassName","syncRowHeights","tableColGroupNode","rowContent","renderChunkContent","rowSyncHeights","reportRowHeightChange","scrollerEl","section","getSectionByKey","scrollerElRef","addResizeHandler","removeResizeHandler","hasShrinkWidth","scroller","harnessEl","timeText","disableDragging","disableResizing","isDateSelecting","eventContent","eventClassNames","eventDidMount","eventWillUnmount","eventTimeFormat","defaultTimeFormat","renderInnerContent$1","eventContentArg","innerProps","NowIndicatorContainer","isAxis","nowIndicatorContent","nowIndicatorClassNames","nowIndicatorDidMount","nowIndicatorWillUnmount","DAY_NUM_FORMAT","refineRenderProps","isMonthStart","showDayNumber","monthStartFormat","dayCellContent","dayCellClassNames","dayCellDidMount","dayCellWillUnmount","hasCustomDayCellContent","dayNumberText","renderInnerContent","renderFill","fillType","WeekNumberContainer","weekNumberFormat","weekNumberContent","renderInner","weekNumberClassNames","weekNumberDidMount","weekNumberWillUnmount","titleId","handleRootEl","rootEl","handleDocumentMouseDown","handleCloseClick","handleDocumentKeyDown","_this$context3","extraAttrs","closeHint","updateSize","_this$props5","alignmentEl","alignGridTop","alignmentRect","clippingParents","clippingParent","computeClippedClientRect","popoverDims","popoverTop","popoverLeft","registerInteractiveComponent","useEventCenter","unregisterInteractiveComponent","_this$context4","dayPopoverFormat","forceTimed","endDate","extraDateSpan","dayEl","layer","isPopoverOpen","popoverId","handleLinkEl","linkEl","handleClick","moreLinkClick","computeRange","buildPublicSeg","_seg$eventRange3","allDayDate","allSegs","hiddenSegs","handlePopoverClose","moreLinkText","moreCnt","hint","moreLinkHint","shortText","moreLinkContent","renderMoreLinkInner","moreLinkClassNames","moreLinkDidMount","moreLinkWillUnmount","alignmentElRef","popoverContent","updateParentEl","computeEarliestSegStart","pickLatestEnd","pickEarliestStart","seg0","seg1","MINIMAL_RAW_EN_LOCALE","prevYear","nextYear","timeHint","eventHint","allDayText","noEventsText","buttonHints","viewHint","eventCnt","createPlugin","premiumReleaseDate","reducers","isLoadingFuncs","contextInit","eventSourceRefiners","eventDragMutationMassagers","dateSelectionTransformers","datePointTransforms","views","viewPropsTransformers","externalDefTransforms","viewContainerAppends","eventDropTransformers","componentInteractions","calendarInteractions","themeClasses","eventSourceDefs","namedTimeZonedImpl","initialView","elementDraggingImpl","optionChangeHandlers","scrollGridImpl","listenerRefiners","optionRefiners","propSetHandlers","tableCellShaded","buttonGroup","buttonActive","computeEventSourcesLoading","isFetching","SIMPLE_RECURRING_REFINERS","daysOfWeek","startRecur","endRecur","handleEventSources","unfoundSources","_raw","newInputs","inputFound","unfoundSource","newInput","addEventSource","globalPlugins","ignoreRange","parseMeta","fetch","successCallback","normalizedSuccessCallback","normalizedFailureCallback","isResolved","wrappedSuccess","wrappedFailure","unpromisify","extraParams","startParam","endParam","timeZoneParam","requestParams","customRequestParams","buildRequestParams","fetchOptions","URLSearchParams","fetchRes","ok","parsedResponse","requestJson","recurringData","clippedFramingRange","dowHash","dayMarker","instanceStarts","instanceStart","expandRanges","touchMouseIgnoreWait","ignoreMouseDepth","listenerCnt","isWindowTouchMoveCancelled","subjectEl","handleSelector","shouldIgnoreMove","shouldWatchScroll","isTouchDragging","wasTouchScroll","handleMouseDown","shouldIgnoreMouse","isPrimaryMouseButton","tryStart","createEventFromMouse","initScrollWatch","handleMouseMove","handleMouseUp","recordCoords","handleTouchStart","createEventFromTouch","targetEl","handleTouchMove","handleTouchEnd","handleTouchScroll","handleScroll","prevScrollX","prevPageX","prevScrollY","prevPageY","isTouch","origPageX","origPageY","onWindowTouchMove","querySubjectEl","downEl","destroyScrollWatch","cancelTouchScroll","isFirst","sourceEl","mirrorEl","sourceElRect","origScreenX","origScreenY","updateElPosition","handleMove","setIsVisible","needsRevertAnimation","doRevertAnimation","finalSourceElRect","realCallback","whenTransitionDone","getMirrorEl","userSelect","webkitUserSelect","pointerEvents","scrollController","doesListening","handleScrollChange","origScrollTop","origScrollLeft","clientRect","computeClientRect","getEventTarget","performance","AutoScroller","scrollQuery","edgeThreshold","maxVelocity","pointerScreenX","pointerScreenY","isAnimating","scrollCaches","everMovedUp","everMovedDown","everMovedLeft","everMovedRight","edge","computeBestEdge","handleSide","msSinceRequest","requestAnimation","scrollStartEl","buildCaches","yDelta","xDelta","scrollCache","invDistance","velocity","bestSide","leftDist","rightDist","topDist","bottomDist","queryScrollEls","minDistance","touchScrollAllowed","mirrorNeedsRevert","isInteracting","isDelayEnded","isDistanceSurpassed","delayTimeoutId","onPointerDown","preventContextMenu","pointer","mirror","startDelay","handleDistanceSurpassed","onPointerMove","distanceSq","autoScroller","onPointerUp","allowContextMenu","tryStopDrag","handleDelayEnd","tryStartDrag","stopDrag","setIgnoreMove","origRect","computeLeft","computeTop","isWithinClipping","isIgnoredClipping","droppableStore","useSubjectCenter","requireInitial","disablePointCheck","initialHit","movingHit","finalHit","handlePointerDown","processFirstCoord","handleDragStart","handleDragMove","handlePointerUp","releaseHits","handleDragEnd","subjectRect","origPoint","adjustedPoint","queryHitForOffset","slicedSubjectRect","getRectCenter","coordAdjust","point2","point1","forceHandle","isHitsEqual","offsetTrackers","interactionSettings","bestHit","offsetTracker","originLeft","originTop","elementFromPoint","componentId","hit0","hit1","isSpanPropsEqual","buildDatePointApiWithContext","subjectSeg","receivingContext","validMutation","mutatedRelevantEvents","origTarget","initialContext","eventInstanceId","eventDragMinDistance","eventLongPressDelay","longPressDelay","getComponentTouchDelay","fixedMirrorParent","dragRevertDuration","handleHitUpdate","isFinal","hitDragging","isInvalid","receivingOptions","eventInstanceStart","massagers","dateSpan0","dateSpan1","massager","computeEventMutation","displayDrag","clearDrag","updatedEventApi","eventChangeArg","eventRemoveArg","draggedEl","addedEventDef","addedEventInstance","addedEventApi","eventAddArg","SELECTOR","dragScroll","nextContext","prevContext","initialCalendar","OPTION_REFINERS","LISTENER_REFINERS","dateClick","eventDragStart","eventDragStop","eventDrop","eventResizeStart","eventResizeStop","eventReceive","eventLeave","dataAttrPrefix","_this$hitDragging","dragSelection","canSelect","selectLongPressDelay","getComponentTouchDelay$1","joinHitsIntoSelection","isDateSelectionValid","selectMinDistance","draggingSegEl","draggingSeg","querySegEl","segEl","isFromStart","computeMutation","isRecentPointerDateSelect","matchesCancel","matchesEvent","selectInfo","onDocumentPointerDown","unselectCancel","onDocumentPointerUp","documentPointer","unselectAuto","headerElRef","renderSimpleLayout","headerRowContent","bodyContent","isHeightAuto","forPrint","renderHScrollLayout","dayMinWidth","ScrollGrid","chunks","colGroups","splitSegsByRow","byRow","splitSegsByFirstCol","byCol","splitInteractionByRow","DEFAULT_TABLE_EVENT_TIME_FORMAT","hasListItemDisplay","compileSegs","_this$compileSegs","singlePlacements","invisibleSegs","isForcedInvisible","DEFAULT_WEEK_NUM_FORMAT","rootElRef","dayNumberId","currentStart","currentEnd","currentEndIncl","currentFirstYear","getYear","currentFirstMonth","currentLastYear","currentLastMonth","shouldDisplayMonthStart","renderTopInner","innerElRef","showWeekNumber","forceDayTop","fgContentElRef","fgContent","moreMarginTop","bgContent","generateSegKey","generateSegUid","computeFgSegPlacement","dayMaxEvents","dayMaxEventRows","segHeights","hierarchy","segEntry","segUid","hiddenConsumes","segInputs","unknownHeightSegs","_placeRects","allRects","rectsByEachCol","groupRectsByEachCol","singleColPlacements","multiColPlacements","leftoverMargins","currentHeight","currentMarginTop","resliceSeg","absoluteTop","multiPlacements","isFirstCol","placeRects","moreCnts","moreMarginTops","hiddenSpan","spanStart","spanEnd","forceHidden","excludeHidden","touchingEntryId","cellElRefs","frameElRefs","fgElRefs","segHarnessRefs","framePositions","handleResize","isForced","updateSizing","businessHoursByCol","bgEventSegsByCol","highlightSegsByCol","getHighlightSegs","mirrorSegsByCol","getMirrorSegs","_computeFgSegPlacemen","eventOrder","eventOrderStrict","cell","normalFgNodes","renderFgSegs","mirrorFgNodes","mirrorSegs","colPlacements","topsByInstanceId","buildAbsoluteTopHash","buildMirrorPlacements","showDayNumbers","showWeekNumbers","renderFillSegs","cellMinHeight","prevState","currentProps","segPlacements","leftRightCss","isExternalSizingChange","frameEls","newPositionCache","oldSegHeights","newSegHeights","querySegHeights","limitByContentHeight","computeMaxContentHeight","segElMap","firstKey","fcContainerEl","getCellEls","elMap","splitBusinessHourSegs","splitBgEventSegs","splitFgEventSegs","splitDateSelectionSegs","rowRefs","businessHourSegsByRow","bgEventSegsByRow","fgEventSegsByRow","dateSelectionSegsByRow","eventDragByRow","eventResizeByRow","renderRowIntro","isSegAllDay","firstCellEl","rowPositions","rowObj","colPositions","getCellRange","getCellEl","needsScrollReset","limitViaBalanced","colGroupNode","requestScrollReset","flushScrollReset","getScrollSubjectEl","dayTableModel","slicer","tableRef","headerAlignElRef","buildDayTableModel","buildDayTableRenderRange","snapToWeek","fixedWeekCount","endOfWeek","startOfWeek","lastMonthRenderStart","startOfMonth","dayGrid","headerRef","headerContent","dayHeaders","contentArg","weekNumbers","dateProfileGeneratorClass","dayGridDay","dayGridWeek","dayGridMonth","dayGridYear","timed","DEFAULT_SLAT_LABEL_FORMAT","TimeColsAxisCell","isLabeled","isoTimeStr","labelFormat","slotLabelFormat","slotLabelContent","slotLabelClassNames","slotLabelDidMount","slotLabelWillUnmount","slatMetas","slatMeta","allDaySplitter","slatCoords","handleScrollTopRequest","renderHeadAxis","rowKey","frameHeight","renderTableRowAxis","rowHeight","allDayContent","renderAllDayInner","allDayClassNames","allDayDidMount","allDayWillUnmount","handleSlatCoords","timeContent","isNowIndicator","nowIndicator","nowIndicatorTop","safeComputeTop","getAllDayMaxEventProps","_this$context$options","positions","startOfDayDate","timeMs","computeTimeTop","computeDateTop","slatIndex","slatRemainder","slatCoverage","slatElRefs","slotLaneContent","slotLaneClassNames","slotLaneDidMount","slotLaneWillUnmount","onCoords","splitSegsByCol","segsByCol","splitInteractionByCol","renderPlainFgSegs","buildPositioning","hiddenGroups","merges","filteredMerges","hungryMerge","groupIntersectingEntries","web","buildNode","cacheable","siblingRange","subjectLevel","subjectLateral","subjectEntry","afterSubject","searchIndex","lateralStart","lateralEnd","findNextLevelSegs","nextLevelRes","buildNodes","nextLevelNodes","buildWeb","topLevelNodes","totalThickness","stretchNode","startCoord","prevThickness","endCoord","allThickness","thicknessFraction","newChildren","childNode","newThickness","stretchWeb","segRects","processNode","stackDepth","stackForward","processNodes","webToRects","pairs","cmpDescPressures","extractNode","keyFunc","workFunc","computeSegVCoords","colDate","eventMinHeight","vcoords","DEFAULT_TIME_FORMAT","isShort","isSelectMirror","selectMirror","interactionAffectedInstances","sortedFgSegs","renderNowIndicator","nowIndicatorSegs","segIsInvisible","forcedKey","renderPositionedFgSegs","_this$context$options2","eventMaxStack","eventShortHeight","segVCoords","dumbSegs","_buildPositioning","segRect","dumbSeg","computeFgSegPlacements","renderHiddenGroups","segPlacement","vStyle","computeSegVStyle","hStyle","computeSegHStyle","isInset","hiddenGroup","positionCss","segEntries","segHCoords","shouldOverlap","slotEventOverlap","nearCoord","farCoord","hiddenInstances","splitNowIndicatorSegs","nowIndicatorSegsByRow","updateCoords","onColCoords","processSlotOptions","handleScrollRequest","onScrollTopRequest","handleColCoords","colCoords","onSlatCoords","scrollResponder","createScrollResponder","_this$processSlotOpti","snapDuration","snapsPerSlot","colIndex","slatTop","slatHeight","partial","snapIndex","dayDate","multiplyDuration","snapDurationOverride","dayRanges","buildDayRanges","timeColsRef","STOCK_SUB_DURATIONS","buildSlatMetas","explicitLabelInterval","dayStart","slatTime","slatIterator","labelInterval","slotsPerLabel","computeLabelInterval","metas","buildTimeColsModel","allDaySlot","timeGrid","hasAttachedAxis","hasDetachedAxis","timeGridContent","timeGridDay","timeGridWeek","textId","cellId","listDayFormat","sideText","listDaySideFormat","sideNavLinkAttrs","timeHeaderId","eventHeaderId","dateHeaderId","interactiveAttrs","renderEventInnerContent","doAllDay","visibleRange","isMultiDayRange","buildTimeContent","renderNoEventsInner","computeDateVars","viewEnd","dayDates","createFalsableFormatter","noEventsClassNames","noEventsContent","noEventsDidMount","noEventsWillUnmount","eventStoreToSegs","_eventStoreToSegs","dateHeaderIdRoot","setRootEl","_this$computeDateVars","renderSegList","renderEmptyMessage","segsByDay","groupSegsByDay","innerNodes","daySegs","eventRangesToSegs","eventRangeToSegs","buttonTextKey","listDay","listWeek","listMonth","listYear","labelId","slicedProps","tableHeight","tableWidth","isoDateStr","titleFormat","oneMonthDuration","splitDateProfileByMonth","_dateProfile$currentR","monthDateProfiles","YEAR_MONTH_FORMATTER","YEAR_FORMATTER","buildMonthFormat","formatOverride","multiMonthTitleFormat","multiMonthMaxColumns","multiMonthMinWidth","multiMonth","scrollElRef","firstMonthElRef","monthHPadding","colCount","monthWidthPct","monthTableWidth","isLegitSingleCol","monthTitleFormat","rootClassNames","monthDateProfile","firstMonthEl","monthEl","multiMonthYear"],"mappings":"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L,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,KACL,SAAK,KACL,SAAK,KACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,KACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,KACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,KACL,SAAK,KACL,SAAK,KACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,OAAK,KACL,SAAK,KACL,SAAK,KACL,SAAK,KACL,SAAK,KACL,SAAK,KACL,SAAK,KACL,SAAK,KACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,KACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,KACL,SAAK,KACL,SAAK,KACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IAC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ACN+0K,QAAS,yBACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,KACN+0K,QAAS,mBACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,IACN+0K,QAAS,6DACR,CACD/0K,KAAM,IACN+0K,QAAS,+EACR,CACD/0K,KAAM,IACN+0K,QAAS,2FACR,CACD/0K,KAAM,KACN+0K,QAAS,mBACR,CACD/0K,KAAM,KACN+0K,QAAS,mBACR,CACD/0K,KAAM,IACN+0K,QAAS,2LACR,CACD/0K,KAAM,IACN+0K,QAAS,2CACR,CACD/0K,KAAM,IACN+0K,QAAS,iGACR,CACD/0K,KAAM,IACN+0K,QAAS,2FACR,CACD/0K,KAAM,IACN+0K,QAAS,+HACR,CACD/0K,KAAM,IACN+0K,QAAS,qCACR,CACD/0K,KAAM,IACN+0K,QAAS,2FACR,CACD/0K,KAAM,IACN+0K,QAAS,mHACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,IACN+0K,QAAS,uDACR,CACD/0K,KAAM,IACN+0K,QAAS,uGACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,IACN+0K,QAAS,yQACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,IACN+0K,QAAS,mEACR,CACD/0K,KAAM,IACN+0K,QAAS,2CACR,CACD/0K,KAAM,IACN+0K,QAAS,6GACR,CACD/0K,KAAM,IACN+0K,QAAS,6GACR,CACD/0K,KAAM,IACN+0K,QAAS,iGACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,IACN+0K,QAAS,mNACR,CACD/0K,KAAM,IACN+0K,QAAS,uDACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,IACN+0K,QAAS,mEACR,CACD/0K,KAAM,IACN+0K,QAAS,qCACR,CACD/0K,KAAM,IACN+0K,QAAS,iGACR,CACD/0K,KAAM,IACN+0K,QAAS,2FACR,CACD/0K,KAAM,IACN+0K,QAAS,yNACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,KACN+0K,QAAS,yBACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,KACN+0K,QAAS,mBACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,IACN+0K,QAAS,6DACR,CACD/0K,KAAM,IACN+0K,QAAS,qFACR,CACD/0K,KAAM,IACN+0K,QAAS,2FACR,CACD/0K,KAAM,KACN+0K,QAAS,mBACR,CACD/0K,KAAM,IACN+0K,QAAS,iMACR,CACD/0K,KAAM,IACN+0K,QAAS,2CACR,CACD/0K,KAAM,IACN+0K,QAAS,iGACR,CACD/0K,KAAM,IACN+0K,QAAS,iGACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,IACN+0K,QAAS,+HACR,CACD/0K,KAAM,IACN+0K,QAAS,2CACR,CACD/0K,KAAM,IACN+0K,QAAS,2FACR,CACD/0K,KAAM,IACN+0K,QAAS,yHACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,IACN+0K,QAAS,uDACR,CACD/0K,KAAM,IACN+0K,QAAS,6GACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,IACN+0K,QAAS,yQACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,IACN+0K,QAAS,mEACR,CACD/0K,KAAM,IACN+0K,QAAS,2CACR,CACD/0K,KAAM,IACN+0K,QAAS,6GACR,CACD/0K,KAAM,IACN+0K,QAAS,mHACR,CACD/0K,KAAM,IACN+0K,QAAS,uGACR,CACD/0K,KAAM,KACN+0K,QAAS,aACR,CACD/0K,KAAM,IACN+0K,QAAS,mNACR,CACD/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","file":"js/application-60eb67edbb60399d1890.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://md-staging.adventist.org.au/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 148);\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.moment = factory();\n})(this, function () {\n 'use strict';\n\n var hookCallback;\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n function isUndefined(input) {\n return input === void 0;\n }\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n return a;\n }\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false\n };\n }\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n return false;\n };\n }\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid = flags.overflow < 0 && !flags.empty && !flags.invalidEra && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts);\n if (m._strict) {\n isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [],\n updateInProgress = false;\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n function isMoment(obj) {\n return obj instanceof Moment || obj != null && obj._isAMomentObject != null;\n }\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n function deprecate(msg, fn) {\n var firstTime = true;\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + new Error().stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n var deprecations = {};\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n function isFunction(input) {\n return typeof Function !== 'undefined' && input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + '|' + /\\d{1,2}/.source);\n }\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n var keys;\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n };\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? forceSign ? '+' : '' : '-') + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n return formatFunctions[format](m);\n }\n function expandFormat(format, locale) {\n var i = 5;\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n return format;\n }\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A'\n };\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n if (format || !formatUpper) {\n return format;\n }\n this._longDateFormat[key] = formatUpper.match(formattingTokens).map(function (tok) {\n if (tok === 'MMMM' || tok === 'MM' || tok === 'DD' || tok === 'dddd') {\n return tok.slice(1);\n }\n return tok;\n }).join('');\n return this._longDateFormat[key];\n }\n var defaultInvalidDate = 'Invalid date';\n function invalidDate() {\n return this._invalidDate;\n }\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n };\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number);\n }\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year'\n };\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n return normalizedInput;\n }\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1\n };\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({\n unit: u,\n priority: priorities[u]\n });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n var match1 = /\\d/,\n // 0 - 9\n match2 = /\\d\\d/,\n // 00 - 99\n match3 = /\\d{3}/,\n // 000 - 999\n match4 = /\\d{4}/,\n // 0000 - 9999\n match6 = /[+-]?\\d{6}/,\n // -999999 - 999999\n match1to2 = /\\d\\d?/,\n // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/,\n // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/,\n // 99999 - 999999\n match1to3 = /\\d{1,3}/,\n // 0 - 999\n match1to4 = /\\d{1,4}/,\n // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/,\n // -999999 - 999999\n matchUnsigned = /\\d+/,\n // 0 - inf\n matchSigned = /[+-]?\\d+/,\n // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi,\n // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi,\n // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/,\n // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/,\n // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/,\n // 0-99\n regexes;\n regexes = {};\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n return value;\n }\n var tokens = {};\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n function isLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n }\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n var d = mom._d,\n isUTC = mom._isUTC;\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN;\n // Just in case\n }\n }\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n d = mom._d;\n isUTC = mom._isUTC;\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC ? d.setUTCMilliseconds(value) : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break;\n // See below ...\n default:\n return;\n // Just in case\n }\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC ? d.setUTCFullYear(year, month, date) : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n function mod(n, x) {\n return (n % x + x) % x;\n }\n var indexOf;\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2;\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months) ? this._months : this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n var month = value,\n date = mom.date();\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC ? mom._d.setUTCMonth(month, date) : mom._d.setMonth(month, date));\n return mom;\n }\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex;\n }\n }\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n return date;\n }\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var\n // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n return {\n week: resWeek,\n year: resYear\n };\n }\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n var defaultLocaleWeek = {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n };\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n return null;\n }\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format) ? 'format' : 'standalone'];\n return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays;\n }\n function localeWeekdaysShort(m) {\n return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n function localeWeekdaysMin(m) {\n return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n function kFormat() {\n return this.hours() || 24;\n }\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n week: defaultLocaleWeek,\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && commonPrefix(split, next) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (locales[name] === undefined && typeof module !== 'undefined' && module && module.exports && isLocaleNameSane(name)) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n return globalLocale._abbr;\n }\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride', 'use moment.updateLocale(localeName, config) to change ' + 'an existing locale. moment.defineLocale(localeName, ' + 'config) should only be used for creating a new locale ' + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n if (!key) {\n return globalLocale;\n }\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n return chooseLocale(key);\n }\n function listLocales() {\n return keys(locales);\n }\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n if (a && getParsingFlags(m).overflow === -2) {\n overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1;\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n getParsingFlags(m).overflow = overflow;\n }\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/], ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/], ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/], ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false], ['YYYY-DDD', /\\d{4}-\\d{3}/], ['YYYY-MM', /\\d{4}-\\d\\d/, false], ['YYYYYYMMDD', /[+-]\\d{10}/], ['YYYYMMDD', /\\d{8}/], ['GGGG[W]WWE', /\\d{4}W\\d{3}/], ['GGGG[W]WW', /\\d{4}W\\d{2}/, false], ['YYYYDDD', /\\d{7}/], ['YYYYMM', /\\d{6}/, false], ['YYYY', /\\d{4}/, false]],\n // iso time formats and regexes\n isoTimes = [['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/], ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/], ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/], ['HH:mm', /\\d\\d:\\d\\d/], ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/], ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/], ['HHmmss', /\\d\\d\\d\\d\\d\\d/], ['HHmm', /\\d\\d\\d\\d/], ['HH', /\\d\\d/]],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), parseInt(minuteStr, 10)];\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n return result;\n }\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^()]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n hooks.createFromInputFallback = deprecate('value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.', function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n });\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n if (config._d) {\n return;\n }\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n curWeek = weekOfYear(createLocal(), dow, doy);\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n configFromArray(config);\n checkOverflow(config);\n }\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n getParsingFlags(tempConfig).score = currentScore;\n if (!bestFormatIsValid) {\n if (scoreToBeat == null || currentScore < scoreToBeat || validFormatFound) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n extend(config, bestMoment || tempConfig);\n }\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map([i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n configFromArray(config);\n }\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n return res;\n }\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n config._locale = config._locale || getLocale(config._l);\n if (input === null || format === undefined && input === '') {\n return createInvalid({\n nullInput: true\n });\n }\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n if (!isValid(config)) {\n config._d = null;\n }\n return config;\n }\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n if (isObject(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n return createFromConfig(c);\n }\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n var prototypeMin = deprecate('moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }),\n prototypeMax = deprecate('moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n });\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n return pickBy('isBefore', args);\n }\n function max() {\n var args = [].slice.call(arguments, 0);\n return pickBy('isAfter', args);\n }\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (hasOwnProp(m, key) && !(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n return true;\n }\n function isValid$1() {\n return this._isValid;\n }\n function createInvalid$1() {\n return createDuration(NaN);\n }\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds + seconds * 1e3 +\n // 1000\n minutes * 6e4 +\n // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n this._data = {};\n this._locale = getLocale();\n this._bubble();\n }\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2);\n });\n }\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n if (matches === null) {\n return null;\n }\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n this.utcOffset(input, keepLocalTime);\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n return (this.utcOffset() - input) % 60 === 0;\n }\n function isDaylightSavingTime() {\n return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset();\n }\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n var c = {},\n other;\n copyConfig(c, this);\n c = prepareConfig(c);\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n return this._isDSTShifted;\n }\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if (match = aspNetRegex.exec(input)) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (match = isoRegex.exec(input)) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign)\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n ret = new Duration(duration);\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n return ret;\n }\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n function positiveMomentsDifference(base, other) {\n var res = {};\n res.months = other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n return res;\n }\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {\n milliseconds: 0,\n months: 0\n };\n }\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val;\n val = period;\n period = tmp;\n }\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n if (!mom.isValid()) {\n // No op\n return;\n }\n updateOffset = updateOffset == null ? true : updateOffset;\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === undefined;\n }\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = ['years', 'year', 'y', 'months', 'month', 'M', 'days', 'day', 'd', 'dates', 'date', 'D', 'hours', 'hour', 'h', 'minutes', 'minute', 'm', 'seconds', 'second', 's', 'milliseconds', 'millisecond', 'ms'],\n i,\n property,\n propertyLen = properties.length;\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n return objectTest && propertyTest;\n }\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest = input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = ['sameDay', 'nextDay', 'lastDay', 'nextWeek', 'lastWeek', 'sameElse'],\n i,\n property;\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n return objectTest && propertyTest;\n }\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse';\n }\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n function clone() {\n return new Moment(this);\n }\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n }\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n if (!this.isValid()) {\n return NaN;\n }\n that = cloneWithOffset(input, this);\n if (!that.isValid()) {\n return NaN;\n }\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n units = normalizeUnits(units);\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break;\n // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break;\n // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break;\n // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break;\n // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break;\n // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n return asFloat ? output : absFloor(output);\n }\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n return this.format(prefix + year + datetime + suffix);\n }\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n function from(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({\n to: this,\n from: time\n }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n function to(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({\n from: this,\n to: time\n }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n var lang = deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n });\n function localeData() {\n return this._locale;\n }\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return (dividend % divisor + divisor) % divisor;\n }\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n function toDate() {\n return new Date(this.valueOf());\n }\n function toArray() {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n function isValid$2() {\n return isValid(this);\n }\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n return '';\n }\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n return '';\n }\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n return '';\n }\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n if (eras[i].since <= val && val <= eras[i].until || eras[i].until <= val && val <= eras[i].since) {\n return (this.year() - hooks(eras[i].since).year()) * dir + eras[i].offset;\n }\n }\n return this.year();\n }\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp('^(' + narrowPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(this, input, this.week(), this.weekday() + this.localeData()._week.dow, this.localeData()._week.dow, this.localeData()._week.doy);\n }\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ? locale._dayOfMonthOrdinalParse || locale._ordinalParse : locale._dayOfMonthOrdinalParseLenient;\n });\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n var proto = Moment.prototype;\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n function preParsePostFormat(string) {\n return string;\n }\n var proto$1 = Locale.prototype;\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n format = format || '';\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n format = format || '';\n }\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n getSetGlobalLocale('en', {\n eras: [{\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD'\n }, {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC'\n }],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output = toInt(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n var mathAbs = Math.abs;\n function abs() {\n var data = this._data;\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n return this;\n }\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!(milliseconds >= 0 && days >= 0 && months >= 0 || milliseconds <= 0 && days <= 0 && months <= 0)) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n data.days = days;\n data.months = months;\n data.years = years;\n return this;\n }\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n units = normalizeUnits(units);\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n function clone$1() {\n return createDuration(this);\n }\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n function weeks() {\n return absFloor(this.days() / 7);\n }\n var round = Math.round,\n thresholds = {\n ss: 44,\n // a few seconds to seconds\n s: 45,\n // seconds to minute\n m: 45,\n // minutes to hour\n h: 22,\n // hours to day\n d: 26,\n // days to month/week\n w: null,\n // weeks to month\n M: 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a = seconds <= thresholds.ss && ['s', seconds] || seconds < thresholds.s && ['ss', seconds] || minutes <= 1 && ['m'] || minutes < thresholds.m && ['mm', minutes] || hours <= 1 && ['h'] || hours < thresholds.h && ['hh', hours] || days <= 1 && ['d'] || days < thresholds.d && ['dd', days];\n if (thresholds.w != null) {\n a = a || weeks <= 1 && ['w'] || weeks < thresholds.w && ['ww', weeks];\n }\n a = a || months <= 1 && ['M'] || months < thresholds.M && ['MM', months] || years <= 1 && ['y'] || ['yy', years];\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n return locale.postformat(output);\n }\n var abs$1 = Math.abs;\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n return totalSign + 'P' + (years ? ymSign + years + 'Y' : '') + (months ? ymSign + months + 'M' : '') + (days ? daysSign + days + 'D' : '') + (hours || minutes || seconds ? 'T' : '') + (hours ? hmsSign + hours + 'H' : '') + (minutes ? hmsSign + minutes + 'M' : '') + (seconds ? hmsSign + s + 'S' : '');\n }\n var proto$2 = Duration.prototype;\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n setHookCallback(createLocal);\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',\n // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',\n // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',\n // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD',\n // <input type=\"date\" />\n TIME: 'HH:mm',\n // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss',\n // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS',\n // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW',\n // <input type=\"week\" />\n MONTH: 'YYYY-MM' // <input type=\"month\" />\n };\n return hooks;\n});","/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n(function (global, factory) {\n \"use strict\";\n\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\n // For CommonJS and CommonJS-like environments where a proper `window`\n // is present, execute the factory and get jQuery.\n // For environments that do not have a `window` with a `document`\n // (such as Node.js), expose a factory as module.exports.\n // This accentuates the need for the creation of a real `window`.\n // e.g. var jQuery = require(\"jquery\")(window);\n // See ticket trac-14549 for more info.\n module.exports = global.document ? factory(global, true) : function (w) {\n if (!w.document) {\n throw new Error(\"jQuery requires a window with a document\");\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n\n // Pass this if window is not defined yet\n})(typeof window !== \"undefined\" ? window : this, function (window, noGlobal) {\n // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n // enough that all such attempts are guarded in a try block.\n \"use strict\";\n\n var arr = [];\n var getProto = Object.getPrototypeOf;\n var slice = arr.slice;\n var flat = arr.flat ? function (array) {\n return arr.flat.call(array);\n } : function (array) {\n return arr.concat.apply([], array);\n };\n var push = arr.push;\n var indexOf = arr.indexOf;\n var class2type = {};\n var toString = class2type.toString;\n var hasOwn = class2type.hasOwnProperty;\n var fnToString = hasOwn.toString;\n var ObjectFunctionString = fnToString.call(Object);\n var support = {};\n var isFunction = function isFunction(obj) {\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n // Plus for old WebKit, typeof returns \"function\" for HTML collections\n // (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\" && typeof obj.item !== \"function\";\n };\n var isWindow = function isWindow(obj) {\n return obj != null && obj === obj.window;\n };\n var document = window.document;\n var preservedScriptAttributes = {\n type: true,\n src: true,\n nonce: true,\n noModule: true\n };\n function DOMEval(code, node, doc) {\n doc = doc || document;\n var i,\n val,\n script = doc.createElement(\"script\");\n script.text = code;\n if (node) {\n for (i in preservedScriptAttributes) {\n // Support: Firefox 64+, Edge 18+\n // Some browsers don't support the \"nonce\" property on scripts.\n // On the other hand, just using `getAttribute` is not enough as\n // the `nonce` attribute is reset to an empty string whenever it\n // becomes browsing-context connected.\n // See https://github.com/whatwg/html/issues/2369\n // See https://html.spec.whatwg.org/#nonce-attributes\n // The `node.getAttribute` check was added for the sake of\n // `jQuery.globalEval` so that it can fake a nonce-containing node\n // via an object.\n val = node[i] || node.getAttribute && node.getAttribute(i);\n if (val) {\n script.setAttribute(i, val);\n }\n }\n }\n doc.head.appendChild(script).parentNode.removeChild(script);\n }\n function toType(obj) {\n if (obj == null) {\n return obj + \"\";\n }\n\n // Support: Android <=2.3 only (functionish RegExp)\n return typeof obj === \"object\" || typeof obj === \"function\" ? class2type[toString.call(obj)] || \"object\" : typeof obj;\n }\n /* global Symbol */\n // Defining this global in .eslintrc.json would create a danger of using the global\n // unguarded in another place, it seems safer to define global only for this module\n\n var version = \"3.7.1\",\n rhtmlSuffix = /HTML$/i,\n // Define a local copy of jQuery\n jQuery = function (selector, context) {\n // The jQuery object is actually just the init constructor 'enhanced'\n // Need init if jQuery is called (just allow error to be thrown if not included)\n return new jQuery.fn.init(selector, context);\n };\n jQuery.fn = jQuery.prototype = {\n // The current version of jQuery being used\n jquery: version,\n constructor: jQuery,\n // The default length of a jQuery object is 0\n length: 0,\n toArray: function () {\n return slice.call(this);\n },\n // Get the Nth element in the matched element set OR\n // Get the whole matched element set as a clean array\n get: function (num) {\n // Return all the elements in a clean array\n if (num == null) {\n return slice.call(this);\n }\n\n // Return just the one element from the set\n return num < 0 ? this[num + this.length] : this[num];\n },\n // Take an array of elements and push it onto the stack\n // (returning the new matched element set)\n pushStack: function (elems) {\n // Build a new jQuery matched element set\n var ret = jQuery.merge(this.constructor(), elems);\n\n // Add the old object onto the stack (as a reference)\n ret.prevObject = this;\n\n // Return the newly-formed element set\n return ret;\n },\n // Execute a callback for every element in the matched set.\n each: function (callback) {\n return jQuery.each(this, callback);\n },\n map: function (callback) {\n return this.pushStack(jQuery.map(this, function (elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n slice: function () {\n return this.pushStack(slice.apply(this, arguments));\n },\n first: function () {\n return this.eq(0);\n },\n last: function () {\n return this.eq(-1);\n },\n even: function () {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return (i + 1) % 2;\n }));\n },\n odd: function () {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return i % 2;\n }));\n },\n eq: function (i) {\n var len = this.length,\n j = +i + (i < 0 ? len : 0);\n return this.pushStack(j >= 0 && j < len ? [this[j]] : []);\n },\n end: function () {\n return this.prevObject || this.constructor();\n },\n // For internal use only.\n // Behaves like an Array's method, not like a jQuery method.\n push: push,\n sort: arr.sort,\n splice: arr.splice\n };\n jQuery.extend = jQuery.fn.extend = function () {\n var options,\n name,\n src,\n copy,\n copyIsArray,\n clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false;\n\n // Handle a deep copy situation\n if (typeof target === \"boolean\") {\n deep = target;\n\n // Skip the boolean and the target\n target = arguments[i] || {};\n i++;\n }\n\n // Handle case when target is a string or something (possible in deep copy)\n if (typeof target !== \"object\" && !isFunction(target)) {\n target = {};\n }\n\n // Extend jQuery itself if only one argument is passed\n if (i === length) {\n target = this;\n i--;\n }\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n copy = options[name];\n\n // Prevent Object.prototype pollution\n // Prevent never-ending loop\n if (name === \"__proto__\" || target === copy) {\n continue;\n }\n\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {\n src = target[name];\n\n // Ensure proper type for the source value\n if (copyIsArray && !Array.isArray(src)) {\n clone = [];\n } else if (!copyIsArray && !jQuery.isPlainObject(src)) {\n clone = {};\n } else {\n clone = src;\n }\n copyIsArray = false;\n\n // Never move original objects, clone them\n target[name] = jQuery.extend(deep, clone, copy);\n\n // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n\n // Return the modified object\n return target;\n };\n jQuery.extend({\n // Unique for each copy of jQuery on the page\n expando: \"jQuery\" + (version + Math.random()).replace(/\\D/g, \"\"),\n // Assume jQuery is ready without the ready module\n isReady: true,\n error: function (msg) {\n throw new Error(msg);\n },\n noop: function () {},\n isPlainObject: function (obj) {\n var proto, Ctor;\n\n // Detect obvious negatives\n // Use toString instead of jQuery.type to catch host objects\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n proto = getProto(obj);\n\n // Objects with no prototype (e.g., `Object.create( null )`) are plain\n if (!proto) {\n return true;\n }\n\n // Objects with prototype are plain iff they were constructed by a global Object function\n Ctor = hasOwn.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && fnToString.call(Ctor) === ObjectFunctionString;\n },\n isEmptyObject: function (obj) {\n var name;\n for (name in obj) {\n return false;\n }\n return true;\n },\n // Evaluates a script in a provided context; falls back to the global one\n // if not specified.\n globalEval: function (code, options, doc) {\n DOMEval(code, {\n nonce: options && options.nonce\n }, doc);\n },\n each: function (obj, callback) {\n var length,\n i = 0;\n if (isArrayLike(obj)) {\n length = obj.length;\n for (; i < length; i++) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n }\n return obj;\n },\n // Retrieve the text value of an array of DOM nodes\n text: function (elem) {\n var node,\n ret = \"\",\n i = 0,\n nodeType = elem.nodeType;\n if (!nodeType) {\n // If no nodeType, this is expected to be an array\n while (node = elem[i++]) {\n // Do not traverse comment nodes\n ret += jQuery.text(node);\n }\n }\n if (nodeType === 1 || nodeType === 11) {\n return elem.textContent;\n }\n if (nodeType === 9) {\n return elem.documentElement.textContent;\n }\n if (nodeType === 3 || nodeType === 4) {\n return elem.nodeValue;\n }\n\n // Do not include comment or processing instruction nodes\n\n return ret;\n },\n // results is for internal usage only\n makeArray: function (arr, results) {\n var ret = results || [];\n if (arr != null) {\n if (isArrayLike(Object(arr))) {\n jQuery.merge(ret, typeof arr === \"string\" ? [arr] : arr);\n } else {\n push.call(ret, arr);\n }\n }\n return ret;\n },\n inArray: function (elem, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, elem, i);\n },\n isXMLDoc: function (elem) {\n var namespace = elem && elem.namespaceURI,\n docElem = elem && (elem.ownerDocument || elem).documentElement;\n\n // Assume HTML when documentElement doesn't yet exist, such as inside\n // document fragments.\n return !rhtmlSuffix.test(namespace || docElem && docElem.nodeName || \"HTML\");\n },\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n merge: function (first, second) {\n var len = +second.length,\n j = 0,\n i = first.length;\n for (; j < len; j++) {\n first[i++] = second[j];\n }\n first.length = i;\n return first;\n },\n grep: function (elems, callback, invert) {\n var callbackInverse,\n matches = [],\n i = 0,\n length = elems.length,\n callbackExpect = !invert;\n\n // Go through the array, only saving the items\n // that pass the validator function\n for (; i < length; i++) {\n callbackInverse = !callback(elems[i], i);\n if (callbackInverse !== callbackExpect) {\n matches.push(elems[i]);\n }\n }\n return matches;\n },\n // arg is for internal usage only\n map: function (elems, callback, arg) {\n var length,\n value,\n i = 0,\n ret = [];\n\n // Go through the array, translating each of the items to their new values\n if (isArrayLike(elems)) {\n length = elems.length;\n for (; i < length; i++) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret.push(value);\n }\n }\n\n // Go through every key on the object,\n } else {\n for (i in elems) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret.push(value);\n }\n }\n }\n\n // Flatten any nested arrays\n return flat(ret);\n },\n // A global GUID counter for objects\n guid: 1,\n // jQuery.support is not used in Core but other projects attach their\n // properties to it so it needs to exist.\n support: support\n });\n if (typeof Symbol === \"function\") {\n jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];\n }\n\n // Populate the class2type map\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (_i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n function isArrayLike(obj) {\n // Support: real iOS 8.2 only (not reproducible in simulator)\n // `in` check used to prevent JIT error (gh-2145)\n // hasOwn isn't used here due to false negatives\n // regarding Nodelist length in IE\n var length = !!obj && \"length\" in obj && obj.length,\n type = toType(obj);\n if (isFunction(obj) || isWindow(obj)) {\n return false;\n }\n return type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n }\n function nodeName(elem, name) {\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n }\n var pop = arr.pop;\n var sort = arr.sort;\n var splice = arr.splice;\n var whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n var rtrimCSS = new RegExp(\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\");\n\n // Note: an element does not contain itself\n jQuery.contains = function (a, b) {\n var bup = b && b.parentNode;\n return a === bup || !!(bup && bup.nodeType === 1 && (\n // Support: IE 9 - 11+\n // IE doesn't have `contains` on SVG.\n a.contains ? a.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));\n };\n\n // CSS string/identifier serialization\n // https://drafts.csswg.org/cssom/#common-serializing-idioms\n var rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n function fcssescape(ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === \"\\0\") {\n return \"\\uFFFD\";\n }\n\n // Control characters and (dependent upon position) numbers get escaped as code points\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\n }\n\n // Other potentially-special ASCII characters get backslash-escaped\n return \"\\\\\" + ch;\n }\n jQuery.escapeSelector = function (sel) {\n return (sel + \"\").replace(rcssescape, fcssescape);\n };\n var preferredDoc = document,\n pushNative = push;\n (function () {\n var i,\n Expr,\n outermostContext,\n sortInput,\n hasDuplicate,\n push = pushNative,\n // Local document vars\n document,\n documentElement,\n documentIsHTML,\n rbuggyQSA,\n matches,\n // Instance-specific data\n expando = jQuery.expando,\n dirruns = 0,\n done = 0,\n classCache = createCache(),\n tokenCache = createCache(),\n compilerCache = createCache(),\n nonnativeSelectorCache = createCache(),\n sortOrder = function (a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n return 0;\n },\n booleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" + \"loop|multiple|open|readonly|required|scoped\",\n // Regular expressions\n\n // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n identifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n // Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n // Operator (capture 2)\n \"*([*^$|!~]?=)\" + whitespace +\n // \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n \"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace + \"*\\\\]\",\n pseudos = \":(\" + identifier + \")(?:\\\\((\" +\n // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n // 1. quoted (capture 3; capture 4 or capture 5)\n \"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n // 2. simple (capture 6)\n \"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n // 3. anything else (capture 2)\n \".*\" + \")\\\\)|)\",\n // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n rwhitespace = new RegExp(whitespace + \"+\", \"g\"),\n rcomma = new RegExp(\"^\" + whitespace + \"*,\" + whitespace + \"*\"),\n rleadingCombinator = new RegExp(\"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\"),\n rdescend = new RegExp(whitespace + \"|>\"),\n rpseudo = new RegExp(pseudos),\n ridentifier = new RegExp(\"^\" + identifier + \"$\"),\n matchExpr = {\n ID: new RegExp(\"^#(\" + identifier + \")\"),\n CLASS: new RegExp(\"^\\\\.(\" + identifier + \")\"),\n TAG: new RegExp(\"^(\" + identifier + \"|[*])\"),\n ATTR: new RegExp(\"^\" + attributes),\n PSEUDO: new RegExp(\"^\" + pseudos),\n CHILD: new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\"),\n bool: new RegExp(\"^(?:\" + booleans + \")$\", \"i\"),\n // For use in libraries implementing .is()\n // We use this for POS matching in `select`\n needsContext: new RegExp(\"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\")\n },\n rinputs = /^(?:input|select|textarea|button)$/i,\n rheader = /^h\\d$/i,\n // Easily-parseable/retrievable ID or TAG or CLASS selectors\n rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n rsibling = /[+~]/,\n // CSS escapes\n // https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n runescape = new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\"),\n funescape = function (escape, nonHex) {\n var high = \"0x\" + escape.slice(1) - 0x10000;\n if (nonHex) {\n // Strip the backslash prefix from a non-hex escape sequence\n return nonHex;\n }\n\n // Replace a hexadecimal escape sequence with the encoded Unicode code point\n // Support: IE <=11+\n // For values outside the Basic Multilingual Plane (BMP), manually construct a\n // surrogate pair\n return high < 0 ? String.fromCharCode(high + 0x10000) : String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);\n },\n // Used for iframes; see `setDocument`.\n // Support: IE 9 - 11+, Edge 12 - 18+\n // Removing the function wrapper causes a \"Permission Denied\"\n // error in IE/Edge.\n unloadHandler = function () {\n setDocument();\n },\n inDisabledFieldset = addCombinator(function (elem) {\n return elem.disabled === true && nodeName(elem, \"fieldset\");\n }, {\n dir: \"parentNode\",\n next: \"legend\"\n });\n\n // Support: IE <=9 only\n // Accessing document.activeElement can throw unexpectedly\n // https://bugs.jquery.com/ticket/13393\n function safeActiveElement() {\n try {\n return document.activeElement;\n } catch (err) {}\n }\n\n // Optimize for push.apply( _, NodeList )\n try {\n push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes);\n\n // Support: Android <=4.0\n // Detect silently failing push.apply\n // eslint-disable-next-line no-unused-expressions\n arr[preferredDoc.childNodes.length].nodeType;\n } catch (e) {\n push = {\n apply: function (target, els) {\n pushNative.apply(target, slice.call(els));\n },\n call: function (target) {\n pushNative.apply(target, slice.call(arguments, 1));\n }\n };\n }\n function find(selector, context, results, seed) {\n var m,\n i,\n elem,\n nid,\n match,\n groups,\n newSelector,\n newContext = context && context.ownerDocument,\n // nodeType defaults to 9, since context defaults to document\n nodeType = context ? context.nodeType : 9;\n results = results || [];\n\n // Return early from calls with invalid selector or context\n if (typeof selector !== \"string\" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {\n return results;\n }\n\n // Try to shortcut find operations (as opposed to filters) in HTML documents\n if (!seed) {\n setDocument(context);\n context = context || document;\n if (documentIsHTML) {\n // If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n // (excepting DocumentFragment context, where the methods don't exist)\n if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {\n // ID selector\n if (m = match[1]) {\n // Document context\n if (nodeType === 9) {\n if (elem = context.getElementById(m)) {\n // Support: IE 9 only\n // getElementById can match elements by name instead of ID\n if (elem.id === m) {\n push.call(results, elem);\n return results;\n }\n } else {\n return results;\n }\n\n // Element context\n } else {\n // Support: IE 9 only\n // getElementById can match elements by name instead of ID\n if (newContext && (elem = newContext.getElementById(m)) && find.contains(context, elem) && elem.id === m) {\n push.call(results, elem);\n return results;\n }\n }\n\n // Type selector\n } else if (match[2]) {\n push.apply(results, context.getElementsByTagName(selector));\n return results;\n\n // Class selector\n } else if ((m = match[3]) && context.getElementsByClassName) {\n push.apply(results, context.getElementsByClassName(m));\n return results;\n }\n }\n\n // Take advantage of querySelectorAll\n if (!nonnativeSelectorCache[selector + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(selector))) {\n newSelector = selector;\n newContext = context;\n\n // qSA considers elements outside a scoping root when evaluating child or\n // descendant combinators, which is not what we want.\n // In such cases, we work around the behavior by prefixing every selector in the\n // list with an ID selector referencing the scope context.\n // The technique has to be used as well when a leading combinator is used\n // as such selectors are not recognized by querySelectorAll.\n // Thanks to Andrew Dupont for this technique.\n if (nodeType === 1 && (rdescend.test(selector) || rleadingCombinator.test(selector))) {\n // Expand context for sibling selectors\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context;\n\n // We can use :scope instead of the ID hack if the browser\n // supports it & if we're not changing the context.\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when\n // strict-comparing two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (newContext != context || !support.scope) {\n // Capture the context ID, setting it first if necessary\n if (nid = context.getAttribute(\"id\")) {\n nid = jQuery.escapeSelector(nid);\n } else {\n context.setAttribute(\"id\", nid = expando);\n }\n }\n\n // Prefix every selector in the list\n groups = tokenize(selector);\n i = groups.length;\n while (i--) {\n groups[i] = (nid ? \"#\" + nid : \":scope\") + \" \" + toSelector(groups[i]);\n }\n newSelector = groups.join(\",\");\n }\n try {\n push.apply(results, newContext.querySelectorAll(newSelector));\n return results;\n } catch (qsaError) {\n nonnativeSelectorCache(selector, true);\n } finally {\n if (nid === expando) {\n context.removeAttribute(\"id\");\n }\n }\n }\n }\n }\n\n // All others\n return select(selector.replace(rtrimCSS, \"$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 */\n function createCache() {\n var keys = [];\n function cache(key, value) {\n // Use (key + \" \") to avoid collision with native prototype properties\n // (see https://github.com/jquery/sizzle/issues/157)\n if (keys.push(key + \" \") > Expr.cacheLength) {\n // Only keep the most recent entries\n delete cache[keys.shift()];\n }\n return cache[key + \" \"] = value;\n }\n return cache;\n }\n\n /**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\n function markFunction(fn) {\n fn[expando] = true;\n return fn;\n }\n\n /**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\n function assert(fn) {\n var el = document.createElement(\"fieldset\");\n try {\n return !!fn(el);\n } catch (e) {\n return false;\n } finally {\n // Remove from its parent by default\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // release memory in IE\n el = null;\n }\n }\n\n /**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\n function createInputPseudo(type) {\n return function (elem) {\n return nodeName(elem, \"input\") && elem.type === type;\n };\n }\n\n /**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\n function createButtonPseudo(type) {\n return function (elem) {\n return (nodeName(elem, \"input\") || nodeName(elem, \"button\")) && elem.type === type;\n };\n }\n\n /**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\n function createDisabledPseudo(disabled) {\n // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n return function (elem) {\n // Only certain elements can match :enabled or :disabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n if (\"form\" in elem) {\n // Check for inherited disabledness on relevant non-disabled elements:\n // * listed form-associated elements in a disabled fieldset\n // https://html.spec.whatwg.org/multipage/forms.html#category-listed\n // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n // * option elements in a disabled optgroup\n // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n // All such elements have a \"form\" property.\n if (elem.parentNode && elem.disabled === false) {\n // Option elements defer to a parent optgroup if present\n if (\"label\" in elem) {\n if (\"label\" in elem.parentNode) {\n return elem.parentNode.disabled === disabled;\n } else {\n return elem.disabled === disabled;\n }\n }\n\n // Support: IE 6 - 11+\n // Use the isDisabled shortcut property to check for disabled fieldset ancestors\n return elem.isDisabled === disabled ||\n // Where there is no isDisabled, check manually\n elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;\n }\n return elem.disabled === disabled;\n\n // Try to winnow out elements that can't be disabled before trusting the disabled property.\n // Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n // even exist on them, let alone have a boolean value.\n } else if (\"label\" in elem) {\n return elem.disabled === disabled;\n }\n\n // Remaining elements are neither :enabled nor :disabled\n return false;\n };\n }\n\n /**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\n function createPositionalPseudo(fn) {\n return markFunction(function (argument) {\n argument = +argument;\n return markFunction(function (seed, matches) {\n var j,\n matchIndexes = fn([], seed.length, argument),\n i = matchIndexes.length;\n\n // Match elements found at the specified indexes\n while (i--) {\n if (seed[j = matchIndexes[i]]) {\n seed[j] = !(matches[j] = seed[j]);\n }\n }\n });\n });\n }\n\n /**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\n function testContext(context) {\n return context && typeof context.getElementsByTagName !== \"undefined\" && context;\n }\n\n /**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\n function setDocument(node) {\n var subWindow,\n doc = node ? node.ownerDocument || node : preferredDoc;\n\n // Return early if doc is invalid or already selected\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (doc == document || doc.nodeType !== 9 || !doc.documentElement) {\n return document;\n }\n\n // Update global variables\n document = doc;\n documentElement = document.documentElement;\n documentIsHTML = !jQuery.isXMLDoc(document);\n\n // Support: iOS 7 only, IE 9 - 11+\n // Older browsers didn't support unprefixed `matches`.\n matches = documentElement.matches || documentElement.webkitMatchesSelector || documentElement.msMatchesSelector;\n\n // Support: IE 9 - 11+, Edge 12 - 18+\n // Accessing iframe documents after unload throws \"permission denied\" errors\n // (see trac-13936).\n // Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n // all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n if (documentElement.msMatchesSelector &&\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n preferredDoc != document && (subWindow = document.defaultView) && subWindow.top !== subWindow) {\n // Support: IE 9 - 11+, Edge 12 - 18+\n subWindow.addEventListener(\"unload\", unloadHandler);\n }\n\n // Support: IE <10\n // Check if getElementById returns elements by name\n // The broken getElementById methods don't pick up programmatically-set names,\n // so use a roundabout getElementsByName test\n support.getById = assert(function (el) {\n documentElement.appendChild(el).id = jQuery.expando;\n return !document.getElementsByName || !document.getElementsByName(jQuery.expando).length;\n });\n\n // Support: IE 9 only\n // Check to see if it's possible to do matchesSelector\n // on a disconnected node.\n support.disconnectedMatch = assert(function (el) {\n return matches.call(el, \"*\");\n });\n\n // Support: IE 9 - 11+, Edge 12 - 18+\n // IE/Edge don't support the :scope pseudo-class.\n support.scope = assert(function () {\n return document.querySelectorAll(\":scope\");\n });\n\n // Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n // Make sure the `:has()` argument is parsed unforgivingly.\n // We include `*` in the test to detect buggy implementations that are\n // _selectively_ forgiving (specifically when the list includes at least\n // one valid selector).\n // Note that we treat complete lack of support for `:has()` as if it were\n // spec-compliant support, which is fine because use of `:has()` in such\n // environments will fail in the qSA path and fall back to jQuery traversal\n // anyway.\n support.cssHas = assert(function () {\n try {\n document.querySelector(\":has(*,:jqfake)\");\n return false;\n } catch (e) {\n return true;\n }\n });\n\n // ID filter and find\n if (support.getById) {\n Expr.filter.ID = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n return elem.getAttribute(\"id\") === attrId;\n };\n };\n Expr.find.ID = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var elem = context.getElementById(id);\n return elem ? [elem] : [];\n }\n };\n } else {\n Expr.filter.ID = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n var node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n return node && node.value === attrId;\n };\n };\n\n // Support: IE 6 - 7 only\n // getElementById is not reliable as a find shortcut\n Expr.find.ID = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var node,\n i,\n elems,\n elem = context.getElementById(id);\n if (elem) {\n // Verify the id attribute\n node = elem.getAttributeNode(\"id\");\n if (node && node.value === id) {\n return [elem];\n }\n\n // Fall back on getElementsByName\n elems = context.getElementsByName(id);\n i = 0;\n while (elem = elems[i++]) {\n node = elem.getAttributeNode(\"id\");\n if (node && node.value === id) {\n return [elem];\n }\n }\n }\n return [];\n }\n };\n }\n\n // Tag\n Expr.find.TAG = function (tag, context) {\n if (typeof context.getElementsByTagName !== \"undefined\") {\n return context.getElementsByTagName(tag);\n\n // DocumentFragment nodes don't have gEBTN\n } else {\n return context.querySelectorAll(tag);\n }\n };\n\n // Class\n Expr.find.CLASS = function (className, context) {\n if (typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML) {\n return context.getElementsByClassName(className);\n }\n };\n\n /* QSA/matchesSelector\n ---------------------------------------------------------------------- */\n\n // QSA and matchesSelector support\n\n rbuggyQSA = [];\n\n // Build QSA regex\n // Regex strategy adopted from Diego Perini\n assert(function (el) {\n var input;\n documentElement.appendChild(el).innerHTML = \"<a id='\" + expando + \"' href='' disabled='disabled'></a>\" + \"<select id='\" + expando + \"-\\r\\\\' disabled='disabled'>\" + \"<option selected=''></option></select>\";\n\n // Support: iOS <=7 - 8 only\n // Boolean attributes and \"value\" are not treated correctly in some XML documents\n if (!el.querySelectorAll(\"[selected]\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\");\n }\n\n // Support: iOS <=7 - 8 only\n if (!el.querySelectorAll(\"[id~=\" + expando + \"-]\").length) {\n rbuggyQSA.push(\"~=\");\n }\n\n // Support: iOS 8 only\n // https://bugs.webkit.org/show_bug.cgi?id=136851\n // In-page `selector#id sibling-combinator selector` fails\n if (!el.querySelectorAll(\"a#\" + expando + \"+*\").length) {\n rbuggyQSA.push(\".#.+[+~]\");\n }\n\n // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n // In some of the document kinds, these selectors wouldn't work natively.\n // This is probably OK but for backwards compatibility we want to maintain\n // handling them through jQuery traversal in jQuery 3.x.\n if (!el.querySelectorAll(\":checked\").length) {\n rbuggyQSA.push(\":checked\");\n }\n\n // Support: Windows 8 Native Apps\n // The type and name attributes are restricted during .innerHTML assignment\n input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n el.appendChild(input).setAttribute(\"name\", \"D\");\n\n // Support: IE 9 - 11+\n // IE's :disabled selector does not pick up the children of disabled fieldsets\n // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n // In some of the document kinds, these selectors wouldn't work natively.\n // This is probably OK but for backwards compatibility we want to maintain\n // handling them through jQuery traversal in jQuery 3.x.\n documentElement.appendChild(el).disabled = true;\n if (el.querySelectorAll(\":disabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n }\n\n // Support: IE 11+, Edge 15 - 18+\n // IE 11/Edge don't find elements on a `[name='']` query in some cases.\n // Adding a temporary attribute to the document before the selection works\n // around the issue.\n // Interestingly, IE 10 & older don't seem to have the issue.\n input = document.createElement(\"input\");\n input.setAttribute(\"name\", \"\");\n el.appendChild(input);\n if (!el.querySelectorAll(\"[name='']\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" + whitespace + \"*(?:''|\\\"\\\")\");\n }\n });\n if (!support.cssHas) {\n // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n // Our regular `try-catch` mechanism fails to detect natively-unsupported\n // pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n // in browsers that parse the `:has()` argument as a forgiving selector list.\n // https://drafts.csswg.org/selectors/#relational now requires the argument\n // to be parsed unforgivingly, but browsers have not yet fully adjusted.\n rbuggyQSA.push(\":has\");\n }\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join(\"|\"));\n\n /* Sorting\n ---------------------------------------------------------------------- */\n\n // Document order sorting\n sortOrder = function (a, b) {\n // Flag for duplicate removal\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n\n // Sort on method existence if only one input has compareDocumentPosition\n var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n if (compare) {\n return compare;\n }\n\n // Calculate position if both inputs belong to the same document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) :\n // Otherwise we know they are disconnected\n 1;\n\n // Disconnected nodes\n if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {\n // Choose the first element that is related to our preferred document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (a === document || a.ownerDocument == preferredDoc && find.contains(preferredDoc, a)) {\n return -1;\n }\n\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (b === document || b.ownerDocument == preferredDoc && find.contains(preferredDoc, b)) {\n return 1;\n }\n\n // Maintain original order\n return sortInput ? indexOf.call(sortInput, a) - indexOf.call(sortInput, b) : 0;\n }\n return compare & 4 ? -1 : 1;\n };\n return document;\n }\n find.matches = function (expr, elements) {\n return find(expr, null, null, elements);\n };\n find.matchesSelector = function (elem, expr) {\n setDocument(elem);\n if (documentIsHTML && !nonnativeSelectorCache[expr + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(expr))) {\n try {\n var ret = matches.call(elem, expr);\n\n // IE 9's matchesSelector returns false on disconnected nodes\n if (ret || support.disconnectedMatch ||\n // As well, disconnected nodes are said to be in a document\n // fragment in IE 9\n elem.document && elem.document.nodeType !== 11) {\n return ret;\n }\n } catch (e) {\n nonnativeSelectorCache(expr, true);\n }\n }\n return find(expr, document, null, [elem]).length > 0;\n };\n find.contains = function (context, elem) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((context.ownerDocument || context) != document) {\n setDocument(context);\n }\n return jQuery.contains(context, elem);\n };\n find.attr = function (elem, name) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((elem.ownerDocument || elem) != document) {\n setDocument(elem);\n }\n var fn = Expr.attrHandle[name.toLowerCase()],\n // Don't get fooled by Object.prototype properties (see trac-13807)\n val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;\n if (val !== undefined) {\n return val;\n }\n return elem.getAttribute(name);\n };\n find.error = function (msg) {\n throw new Error(\"Syntax error, unrecognized expression: \" + msg);\n };\n\n /**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\n jQuery.uniqueSort = function (results) {\n var elem,\n duplicates = [],\n j = 0,\n i = 0;\n\n // Unless we *know* we can detect duplicates, assume their presence\n //\n // Support: Android <=4.0+\n // Testing for detecting duplicates is unpredictable so instead assume we can't\n // depend on duplicate detection in all browsers without a stable sort.\n hasDuplicate = !support.sortStable;\n sortInput = !support.sortStable && slice.call(results, 0);\n sort.call(results, sortOrder);\n if (hasDuplicate) {\n while (elem = results[i++]) {\n if (elem === results[i]) {\n j = duplicates.push(i);\n }\n }\n while (j--) {\n splice.call(results, duplicates[j], 1);\n }\n }\n\n // Clear input after sorting to release objects\n // See https://github.com/jquery/sizzle/pull/225\n sortInput = null;\n return results;\n };\n jQuery.fn.uniqueSort = function () {\n return this.pushStack(jQuery.uniqueSort(slice.apply(this)));\n };\n Expr = jQuery.expr = {\n // Can be adjusted by the user\n cacheLength: 50,\n createPseudo: markFunction,\n match: matchExpr,\n attrHandle: {},\n find: {},\n relative: {\n \">\": {\n dir: \"parentNode\",\n first: true\n },\n \" \": {\n dir: \"parentNode\"\n },\n \"+\": {\n dir: \"previousSibling\",\n first: true\n },\n \"~\": {\n dir: \"previousSibling\"\n }\n },\n preFilter: {\n ATTR: function (match) {\n match[1] = match[1].replace(runescape, funescape);\n\n // Move the given value to match[3] whether quoted or unquoted\n match[3] = (match[3] || match[4] || match[5] || \"\").replace(runescape, funescape);\n if (match[2] === \"~=\") {\n match[3] = \" \" + match[3] + \" \";\n }\n return match.slice(0, 4);\n },\n CHILD: function (match) {\n /* matches from matchExpr[\"CHILD\"]\n \t1 type (only|nth|...)\n \t2 what (child|of-type)\n \t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n \t4 xn-component of xn+y argument ([+-]?\\d*n|)\n \t5 sign of xn-component\n \t6 x of xn-component\n \t7 sign of y-component\n \t8 y of y-component\n */\n match[1] = match[1].toLowerCase();\n if (match[1].slice(0, 3) === \"nth\") {\n // nth-* requires argument\n if (!match[3]) {\n find.error(match[0]);\n }\n\n // numeric x and y parameters for Expr.filter.CHILD\n // remember that false/true cast respectively to 0/1\n match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === \"even\" || match[3] === \"odd\"));\n match[5] = +(match[7] + match[8] || match[3] === \"odd\");\n\n // other types prohibit arguments\n } else if (match[3]) {\n find.error(match[0]);\n }\n return match;\n },\n PSEUDO: function (match) {\n var excess,\n unquoted = !match[6] && match[2];\n if (matchExpr.CHILD.test(match[0])) {\n return null;\n }\n\n // Accept quoted arguments as-is\n if (match[3]) {\n match[2] = match[4] || match[5] || \"\";\n\n // Strip excess characters from unquoted arguments\n } else if (unquoted && rpseudo.test(unquoted) && (\n // Get excess from tokenize (recursively)\n excess = tokenize(unquoted, true)) && (\n // advance to the next closing parenthesis\n excess = unquoted.indexOf(\")\", unquoted.length - excess) - unquoted.length)) {\n // excess is a negative index\n match[0] = match[0].slice(0, excess);\n match[2] = unquoted.slice(0, excess);\n }\n\n // Return only captures needed by the pseudo filter method (type and argument)\n return match.slice(0, 3);\n }\n },\n filter: {\n TAG: function (nodeNameSelector) {\n var expectedNodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();\n return nodeNameSelector === \"*\" ? function () {\n return true;\n } : function (elem) {\n return nodeName(elem, expectedNodeName);\n };\n },\n CLASS: function (className) {\n var pattern = classCache[className + \" \"];\n return pattern || (pattern = new RegExp(\"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\")) && classCache(className, function (elem) {\n return pattern.test(typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\");\n });\n },\n ATTR: function (name, operator, check) {\n return function (elem) {\n var result = find.attr(elem, name);\n if (result == null) {\n return operator === \"!=\";\n }\n if (!operator) {\n return true;\n }\n result += \"\";\n if (operator === \"=\") {\n return result === check;\n }\n if (operator === \"!=\") {\n return result !== check;\n }\n if (operator === \"^=\") {\n return check && result.indexOf(check) === 0;\n }\n if (operator === \"*=\") {\n return check && result.indexOf(check) > -1;\n }\n if (operator === \"$=\") {\n return check && result.slice(-check.length) === check;\n }\n if (operator === \"~=\") {\n return (\" \" + result.replace(rwhitespace, \" \") + \" \").indexOf(check) > -1;\n }\n if (operator === \"|=\") {\n return result === check || result.slice(0, check.length + 1) === check + \"-\";\n }\n return false;\n };\n },\n CHILD: function (type, what, _argument, first, last) {\n var simple = type.slice(0, 3) !== \"nth\",\n forward = type.slice(-4) !== \"last\",\n ofType = what === \"of-type\";\n return first === 1 && last === 0 ?\n // Shortcut for :nth-*(n)\n function (elem) {\n return !!elem.parentNode;\n } : function (elem, _context, xml) {\n var cache,\n outerCache,\n node,\n nodeIndex,\n start,\n dir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n parent = elem.parentNode,\n name = ofType && elem.nodeName.toLowerCase(),\n useCache = !xml && !ofType,\n diff = false;\n if (parent) {\n // :(first|last|only)-(child|of-type)\n if (simple) {\n while (dir) {\n node = elem;\n while (node = node[dir]) {\n if (ofType ? nodeName(node, name) : node.nodeType === 1) {\n return false;\n }\n }\n\n // Reverse direction for :only-* (if we haven't yet done so)\n start = dir = type === \"only\" && !start && \"nextSibling\";\n }\n return true;\n }\n start = [forward ? parent.firstChild : parent.lastChild];\n\n // non-xml :nth-child(...) stores cache data on `parent`\n if (forward && useCache) {\n // Seek `elem` from a previously-cached index\n outerCache = parent[expando] || (parent[expando] = {});\n cache = outerCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex && cache[2];\n node = nodeIndex && parent.childNodes[nodeIndex];\n while (node = ++nodeIndex && node && node[dir] || (\n // Fallback to seeking `elem` from the start\n diff = nodeIndex = 0) || start.pop()) {\n // When found, cache indexes on `parent` and break\n if (node.nodeType === 1 && ++diff && node === elem) {\n outerCache[type] = [dirruns, nodeIndex, diff];\n break;\n }\n }\n } else {\n // Use previously-cached element index if available\n if (useCache) {\n outerCache = elem[expando] || (elem[expando] = {});\n cache = outerCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex;\n }\n\n // xml :nth-child(...)\n // or :nth-last-child(...) or :nth(-last)?-of-type(...)\n if (diff === false) {\n // Use the same loop as above to seek `elem` from the start\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n if ((ofType ? nodeName(node, name) : node.nodeType === 1) && ++diff) {\n // Cache the index of each encountered element\n if (useCache) {\n outerCache = node[expando] || (node[expando] = {});\n outerCache[type] = [dirruns, diff];\n }\n if (node === elem) {\n break;\n }\n }\n }\n }\n }\n\n // Incorporate the offset, then check against cycle size\n diff -= last;\n return diff === first || diff % first === 0 && diff / first >= 0;\n }\n };\n },\n PSEUDO: function (pseudo, argument) {\n // pseudo-class names are case-insensitive\n // https://www.w3.org/TR/selectors/#pseudo-classes\n // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n // Remember that setFilters inherits from pseudos\n var args,\n fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || find.error(\"unsupported pseudo: \" + pseudo);\n\n // The user may use createPseudo to indicate that\n // arguments are needed to create the filter function\n // just as jQuery does\n if (fn[expando]) {\n return fn(argument);\n }\n\n // But maintain support for old signatures\n if (fn.length > 1) {\n args = [pseudo, pseudo, \"\", argument];\n return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {\n var idx,\n matched = fn(seed, argument),\n i = matched.length;\n while (i--) {\n idx = indexOf.call(seed, matched[i]);\n seed[idx] = !(matches[idx] = matched[i]);\n }\n }) : function (elem) {\n return fn(elem, 0, args);\n };\n }\n return fn;\n }\n },\n pseudos: {\n // Potentially complex pseudos\n not: markFunction(function (selector) {\n // Trim the selector passed to compile\n // to avoid treating leading and trailing\n // spaces as combinators\n var input = [],\n results = [],\n matcher = compile(selector.replace(rtrimCSS, \"$1\"));\n return matcher[expando] ? markFunction(function (seed, matches, _context, xml) {\n var elem,\n unmatched = matcher(seed, null, xml, []),\n i = seed.length;\n\n // Match elements unmatched by `matcher`\n while (i--) {\n if (elem = unmatched[i]) {\n seed[i] = !(matches[i] = elem);\n }\n }\n }) : function (elem, _context, xml) {\n input[0] = elem;\n matcher(input, null, xml, results);\n\n // Don't keep the element\n // (see https://github.com/jquery/sizzle/issues/299)\n input[0] = null;\n return !results.pop();\n };\n }),\n has: markFunction(function (selector) {\n return function (elem) {\n return find(selector, elem).length > 0;\n };\n }),\n contains: markFunction(function (text) {\n text = text.replace(runescape, funescape);\n return function (elem) {\n return (elem.textContent || jQuery.text(elem)).indexOf(text) > -1;\n };\n }),\n // \"Whether an element is represented by a :lang() selector\n // is based solely on the element's language value\n // being equal to the identifier C,\n // or beginning with the identifier C immediately followed by \"-\".\n // The matching of C against the element's language value is performed case-insensitively.\n // The identifier C does not have to be a valid language name.\"\n // https://www.w3.org/TR/selectors/#lang-pseudo\n lang: markFunction(function (lang) {\n // lang value must be a valid identifier\n if (!ridentifier.test(lang || \"\")) {\n find.error(\"unsupported lang: \" + lang);\n }\n lang = lang.replace(runescape, funescape).toLowerCase();\n return function (elem) {\n var elemLang;\n do {\n if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) {\n elemLang = elemLang.toLowerCase();\n return elemLang === lang || elemLang.indexOf(lang + \"-\") === 0;\n }\n } while ((elem = elem.parentNode) && elem.nodeType === 1);\n return false;\n };\n }),\n // Miscellaneous\n target: function (elem) {\n var hash = window.location && window.location.hash;\n return hash && hash.slice(1) === elem.id;\n },\n root: function (elem) {\n return elem === documentElement;\n },\n focus: function (elem) {\n return elem === safeActiveElement() && document.hasFocus() && !!(elem.type || elem.href || ~elem.tabIndex);\n },\n // Boolean properties\n enabled: createDisabledPseudo(false),\n disabled: createDisabledPseudo(true),\n checked: function (elem) {\n // In CSS3, :checked should return both checked and selected elements\n // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n return nodeName(elem, \"input\") && !!elem.checked || nodeName(elem, \"option\") && !!elem.selected;\n },\n selected: function (elem) {\n // Support: IE <=11+\n // Accessing the selectedIndex property\n // forces the browser to treat the default option as\n // selected when in an optgroup.\n if (elem.parentNode) {\n // eslint-disable-next-line no-unused-expressions\n elem.parentNode.selectedIndex;\n }\n return elem.selected === true;\n },\n // Contents\n empty: function (elem) {\n // https://www.w3.org/TR/selectors/#empty-pseudo\n // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n // but not by others (comment: 8; processing instruction: 7; etc.)\n // nodeType < 6 works because attributes (2) do not appear as children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n if (elem.nodeType < 6) {\n return false;\n }\n }\n return true;\n },\n parent: function (elem) {\n return !Expr.pseudos.empty(elem);\n },\n // Element/input types\n header: function (elem) {\n return rheader.test(elem.nodeName);\n },\n input: function (elem) {\n return rinputs.test(elem.nodeName);\n },\n button: function (elem) {\n return nodeName(elem, \"input\") && elem.type === \"button\" || nodeName(elem, \"button\");\n },\n text: function (elem) {\n var attr;\n return nodeName(elem, \"input\") && elem.type === \"text\" && (\n // Support: IE <10 only\n // New HTML5 attribute values (e.g., \"search\") appear\n // with elem.type === \"text\"\n (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\");\n },\n // Position-in-collection\n first: createPositionalPseudo(function () {\n return [0];\n }),\n last: createPositionalPseudo(function (_matchIndexes, length) {\n return [length - 1];\n }),\n eq: createPositionalPseudo(function (_matchIndexes, length, argument) {\n return [argument < 0 ? argument + length : argument];\n }),\n even: createPositionalPseudo(function (matchIndexes, length) {\n var i = 0;\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n odd: createPositionalPseudo(function (matchIndexes, length) {\n var i = 1;\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n lt: createPositionalPseudo(function (matchIndexes, length, argument) {\n var i;\n if (argument < 0) {\n i = argument + length;\n } else if (argument > length) {\n i = length;\n } else {\n i = argument;\n }\n for (; --i >= 0;) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n gt: createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument;\n for (; ++i < length;) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n })\n }\n };\n Expr.pseudos.nth = Expr.pseudos.eq;\n\n // Add button/input type pseudos\n for (i in {\n radio: true,\n checkbox: true,\n file: true,\n password: true,\n image: true\n }) {\n Expr.pseudos[i] = createInputPseudo(i);\n }\n for (i in {\n submit: true,\n reset: true\n }) {\n Expr.pseudos[i] = createButtonPseudo(i);\n }\n\n // Easy API for creating new setFilters\n function setFilters() {}\n setFilters.prototype = Expr.filters = Expr.pseudos;\n Expr.setFilters = new setFilters();\n function tokenize(selector, parseOnly) {\n var matched,\n match,\n tokens,\n type,\n soFar,\n groups,\n preFilters,\n cached = tokenCache[selector + \" \"];\n if (cached) {\n return parseOnly ? 0 : cached.slice(0);\n }\n soFar = selector;\n groups = [];\n preFilters = Expr.preFilter;\n while (soFar) {\n // Comma and first run\n if (!matched || (match = rcomma.exec(soFar))) {\n if (match) {\n // Don't consume trailing commas as valid\n soFar = soFar.slice(match[0].length) || soFar;\n }\n groups.push(tokens = []);\n }\n matched = false;\n\n // Combinators\n if (match = rleadingCombinator.exec(soFar)) {\n matched = match.shift();\n tokens.push({\n value: matched,\n // Cast descendant combinators to space\n type: match[0].replace(rtrimCSS, \" \")\n });\n soFar = soFar.slice(matched.length);\n }\n\n // Filters\n for (type in Expr.filter) {\n if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {\n matched = match.shift();\n tokens.push({\n value: matched,\n type: type,\n matches: match\n });\n soFar = soFar.slice(matched.length);\n }\n }\n if (!matched) {\n break;\n }\n }\n\n // Return the length of the invalid excess\n // if we're just parsing\n // Otherwise, throw an error or return tokens\n if (parseOnly) {\n return soFar.length;\n }\n return soFar ? find.error(selector) :\n // Cache the tokens\n tokenCache(selector, groups).slice(0);\n }\n function toSelector(tokens) {\n var i = 0,\n len = tokens.length,\n selector = \"\";\n for (; i < len; i++) {\n selector += tokens[i].value;\n }\n return selector;\n }\n function addCombinator(matcher, combinator, base) {\n var dir = combinator.dir,\n skip = combinator.next,\n key = skip || dir,\n checkNonElements = base && key === \"parentNode\",\n doneName = done++;\n return combinator.first ?\n // Check against closest ancestor/preceding element\n function (elem, context, xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n return matcher(elem, context, xml);\n }\n }\n return false;\n } :\n // Check against all ancestor/preceding elements\n function (elem, context, xml) {\n var oldCache,\n outerCache,\n newCache = [dirruns, doneName];\n\n // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n if (xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n if (matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n } else {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n outerCache = elem[expando] || (elem[expando] = {});\n if (skip && nodeName(elem, skip)) {\n elem = elem[dir] || elem;\n } else if ((oldCache = outerCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {\n // Assign to newCache so results back-propagate to previous elements\n return newCache[2] = oldCache[2];\n } else {\n // Reuse newcache so results back-propagate to previous elements\n outerCache[key] = newCache;\n\n // A match means we're done; a fail means we have to keep checking\n if (newCache[2] = matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n }\n }\n return false;\n };\n }\n function elementMatcher(matchers) {\n return matchers.length > 1 ? function (elem, context, xml) {\n var i = matchers.length;\n while (i--) {\n if (!matchers[i](elem, context, xml)) {\n return false;\n }\n }\n return true;\n } : matchers[0];\n }\n function multipleContexts(selector, contexts, results) {\n var i = 0,\n len = contexts.length;\n for (; i < len; i++) {\n find(selector, contexts[i], results);\n }\n return results;\n }\n function condense(unmatched, map, filter, context, xml) {\n var elem,\n newUnmatched = [],\n i = 0,\n len = unmatched.length,\n mapped = map != null;\n for (; i < len; i++) {\n if (elem = unmatched[i]) {\n if (!filter || filter(elem, context, xml)) {\n newUnmatched.push(elem);\n if (mapped) {\n map.push(i);\n }\n }\n }\n }\n return newUnmatched;\n }\n function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {\n if (postFilter && !postFilter[expando]) {\n postFilter = setMatcher(postFilter);\n }\n if (postFinder && !postFinder[expando]) {\n postFinder = setMatcher(postFinder, postSelector);\n }\n return markFunction(function (seed, results, context, xml) {\n var temp,\n i,\n elem,\n matcherOut,\n preMap = [],\n postMap = [],\n preexisting = results.length,\n // Get initial elements from seed or context\n elems = seed || multipleContexts(selector || \"*\", context.nodeType ? [context] : context, []),\n // Prefilter to get matcher input, preserving a map for seed-results synchronization\n matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems;\n if (matcher) {\n // If we have a postFinder, or filtered seed, or non-seed postFilter\n // or preexisting results,\n matcherOut = postFinder || (seed ? preFilter : preexisting || postFilter) ?\n // ...intermediate processing is necessary\n [] :\n // ...otherwise use results directly\n results;\n\n // Find primary matches\n matcher(matcherIn, matcherOut, context, xml);\n } else {\n matcherOut = matcherIn;\n }\n\n // Apply postFilter\n if (postFilter) {\n temp = condense(matcherOut, postMap);\n postFilter(temp, [], context, xml);\n\n // Un-match failing elements by moving them back to matcherIn\n i = temp.length;\n while (i--) {\n if (elem = temp[i]) {\n matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);\n }\n }\n }\n if (seed) {\n if (postFinder || preFilter) {\n if (postFinder) {\n // Get the final matcherOut by condensing this intermediate into postFinder contexts\n temp = [];\n i = matcherOut.length;\n while (i--) {\n if (elem = matcherOut[i]) {\n // Restore matcherIn since elem is not yet a final match\n temp.push(matcherIn[i] = elem);\n }\n }\n postFinder(null, matcherOut = [], temp, xml);\n }\n\n // Move matched elements from seed to results to keep them synchronized\n i = matcherOut.length;\n while (i--) {\n if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf.call(seed, elem) : preMap[i]) > -1) {\n seed[temp] = !(results[temp] = elem);\n }\n }\n }\n\n // Add elements to results, through postFinder if defined\n } else {\n matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);\n if (postFinder) {\n postFinder(null, results, matcherOut, xml);\n } else {\n push.apply(results, matcherOut);\n }\n }\n });\n }\n function matcherFromTokens(tokens) {\n var checkContext,\n matcher,\n j,\n len = tokens.length,\n leadingRelative = Expr.relative[tokens[0].type],\n implicitRelative = leadingRelative || Expr.relative[\" \"],\n i = leadingRelative ? 1 : 0,\n // The foundational matcher ensures that elements are reachable from top-level context(s)\n matchContext = addCombinator(function (elem) {\n return elem === checkContext;\n }, implicitRelative, true),\n matchAnyContext = addCombinator(function (elem) {\n return indexOf.call(checkContext, elem) > -1;\n }, implicitRelative, true),\n matchers = [function (elem, context, xml) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n var ret = !leadingRelative && (xml || context != outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));\n\n // Avoid hanging onto element\n // (see https://github.com/jquery/sizzle/issues/299)\n checkContext = null;\n return ret;\n }];\n for (; i < len; i++) {\n if (matcher = Expr.relative[tokens[i].type]) {\n matchers = [addCombinator(elementMatcher(matchers), matcher)];\n } else {\n matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches);\n\n // Return special upon seeing a positional matcher\n if (matcher[expando]) {\n // Find the next relative operator (if any) for proper handling\n j = ++i;\n for (; j < len; j++) {\n if (Expr.relative[tokens[j].type]) {\n break;\n }\n }\n return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(\n // If the preceding token was a descendant combinator, insert an implicit any-element `*`\n tokens.slice(0, i - 1).concat({\n value: tokens[i - 2].type === \" \" ? \"*\" : \"\"\n })).replace(rtrimCSS, \"$1\"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));\n }\n matchers.push(matcher);\n }\n }\n return elementMatcher(matchers);\n }\n function matcherFromGroupMatchers(elementMatchers, setMatchers) {\n var bySet = setMatchers.length > 0,\n byElement = elementMatchers.length > 0,\n superMatcher = function (seed, context, xml, results, outermost) {\n var elem,\n j,\n matcher,\n matchedCount = 0,\n i = \"0\",\n unmatched = seed && [],\n setMatched = [],\n contextBackup = outermostContext,\n // We must always have either seed elements or outermost context\n elems = seed || byElement && Expr.find.TAG(\"*\", outermost),\n // Use integer dirruns iff this is the outermost matcher\n dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1,\n len = elems.length;\n if (outermost) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n outermostContext = context == document || context || outermost;\n }\n\n // Add elements passing elementMatchers directly to results\n // Support: iOS <=7 - 9 only\n // Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching\n // elements by id. (see trac-14142)\n for (; i !== len && (elem = elems[i]) != null; i++) {\n if (byElement && elem) {\n j = 0;\n\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (!context && elem.ownerDocument != document) {\n setDocument(elem);\n xml = !documentIsHTML;\n }\n while (matcher = elementMatchers[j++]) {\n if (matcher(elem, context || document, xml)) {\n push.call(results, elem);\n break;\n }\n }\n if (outermost) {\n dirruns = dirrunsUnique;\n }\n }\n\n // Track unmatched elements for set filters\n if (bySet) {\n // They will have gone through all possible matchers\n if (elem = !matcher && elem) {\n matchedCount--;\n }\n\n // Lengthen the array for every element, matched or not\n if (seed) {\n unmatched.push(elem);\n }\n }\n }\n\n // `i` is now the count of elements visited above, and adding it to `matchedCount`\n // makes the latter nonnegative.\n matchedCount += i;\n\n // Apply set filters to unmatched elements\n // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n // equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n // no element matchers and no seed.\n // Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n // case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n // numerically zero.\n if (bySet && i !== matchedCount) {\n j = 0;\n while (matcher = setMatchers[j++]) {\n matcher(unmatched, setMatched, context, xml);\n }\n if (seed) {\n // Reintegrate element matches to eliminate the need for sorting\n if (matchedCount > 0) {\n while (i--) {\n if (!(unmatched[i] || setMatched[i])) {\n setMatched[i] = pop.call(results);\n }\n }\n }\n\n // Discard index placeholder values to get only actual matches\n setMatched = condense(setMatched);\n }\n\n // Add matches to results\n push.apply(results, setMatched);\n\n // Seedless set matches succeeding multiple successful matchers stipulate sorting\n if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {\n jQuery.uniqueSort(results);\n }\n }\n\n // Override manipulation of globals by nested matchers\n if (outermost) {\n dirruns = dirrunsUnique;\n outermostContext = contextBackup;\n }\n return unmatched;\n };\n return bySet ? markFunction(superMatcher) : superMatcher;\n }\n function compile(selector, match /* Internal Use Only */) {\n var i,\n setMatchers = [],\n elementMatchers = [],\n cached = compilerCache[selector + \" \"];\n if (!cached) {\n // Generate a function of recursive functions that can be used to check each element\n if (!match) {\n match = tokenize(selector);\n }\n i = match.length;\n while (i--) {\n cached = matcherFromTokens(match[i]);\n if (cached[expando]) {\n setMatchers.push(cached);\n } else {\n elementMatchers.push(cached);\n }\n }\n\n // Cache the compiled function\n cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));\n\n // Save selector and tokenization\n cached.selector = selector;\n }\n return cached;\n }\n\n /**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\n function select(selector, context, results, seed) {\n var i,\n tokens,\n token,\n type,\n find,\n compiled = typeof selector === \"function\" && selector,\n match = !seed && tokenize(selector = compiled.selector || selector);\n results = results || [];\n\n // Try to minimize operations if there is only one selector in the list and no seed\n // (the latter of which guarantees us context)\n if (match.length === 1) {\n // Reduce context if the leading compound selector is an ID\n tokens = match[0] = match[0].slice(0);\n if (tokens.length > 2 && (token = tokens[0]).type === \"ID\" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {\n context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0];\n if (!context) {\n return results;\n\n // Precompiled matchers will still verify ancestry, so step up a level\n } else if (compiled) {\n context = context.parentNode;\n }\n selector = selector.slice(tokens.shift().value.length);\n }\n\n // Fetch a seed set for right-to-left matching\n i = matchExpr.needsContext.test(selector) ? 0 : tokens.length;\n while (i--) {\n token = tokens[i];\n\n // Abort if we hit a combinator\n if (Expr.relative[type = token.type]) {\n break;\n }\n if (find = Expr.find[type]) {\n // Search, expanding context for leading sibling combinators\n if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {\n // If seed is empty or no tokens remain, we can return early\n tokens.splice(i, 1);\n selector = seed.length && toSelector(tokens);\n if (!selector) {\n push.apply(results, seed);\n return results;\n }\n break;\n }\n }\n }\n }\n\n // Compile and execute a filtering function if one is not provided\n // Provide `match` to avoid retokenization if we modified the selector above\n (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);\n return results;\n }\n\n // One-time assignments\n\n // Support: Android <=4.0 - 4.1+\n // Sort stability\n support.sortStable = expando.split(\"\").sort(sortOrder).join(\"\") === expando;\n\n // Initialize against the default document\n setDocument();\n\n // Support: Android <=4.0 - 4.1+\n // Detached nodes confoundingly follow *each other*\n support.sortDetached = assert(function (el) {\n // Should return 1, but returns 4 (following)\n return el.compareDocumentPosition(document.createElement(\"fieldset\")) & 1;\n });\n jQuery.find = find;\n\n // Deprecated\n jQuery.expr[\":\"] = jQuery.expr.pseudos;\n jQuery.unique = jQuery.uniqueSort;\n\n // These have always been private, but they used to be documented as part of\n // Sizzle so let's maintain them for now for backwards compatibility purposes.\n find.compile = compile;\n find.select = select;\n find.setDocument = setDocument;\n find.tokenize = tokenize;\n find.escape = jQuery.escapeSelector;\n find.getText = jQuery.text;\n find.isXML = jQuery.isXMLDoc;\n find.selectors = jQuery.expr;\n find.support = jQuery.support;\n find.uniqueSort = jQuery.uniqueSort;\n\n /* eslint-enable */\n })();\n var dir = function (elem, dir, until) {\n var matched = [],\n truncate = until !== undefined;\n while ((elem = elem[dir]) && elem.nodeType !== 9) {\n if (elem.nodeType === 1) {\n if (truncate && jQuery(elem).is(until)) {\n break;\n }\n matched.push(elem);\n }\n }\n return matched;\n };\n var siblings = function (n, elem) {\n var matched = [];\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== elem) {\n matched.push(n);\n }\n }\n return matched;\n };\n var rneedsContext = jQuery.expr.match.needsContext;\n var rsingleTag = /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;\n\n // Implement the identical functionality for filter and not\n function winnow(elements, qualifier, not) {\n if (isFunction(qualifier)) {\n return jQuery.grep(elements, function (elem, i) {\n return !!qualifier.call(elem, i, elem) !== not;\n });\n }\n\n // Single element\n if (qualifier.nodeType) {\n return jQuery.grep(elements, function (elem) {\n return elem === qualifier !== not;\n });\n }\n\n // Arraylike of elements (jQuery, arguments, Array)\n if (typeof qualifier !== \"string\") {\n return jQuery.grep(elements, function (elem) {\n return indexOf.call(qualifier, elem) > -1 !== not;\n });\n }\n\n // Filtered directly for both simple and complex selectors\n return jQuery.filter(qualifier, elements, not);\n }\n jQuery.filter = function (expr, elems, not) {\n var elem = elems[0];\n if (not) {\n expr = \":not(\" + expr + \")\";\n }\n if (elems.length === 1 && elem.nodeType === 1) {\n return jQuery.find.matchesSelector(elem, expr) ? [elem] : [];\n }\n return jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {\n return elem.nodeType === 1;\n }));\n };\n jQuery.fn.extend({\n find: function (selector) {\n var i,\n ret,\n len = this.length,\n self = this;\n if (typeof selector !== \"string\") {\n return this.pushStack(jQuery(selector).filter(function () {\n for (i = 0; i < len; i++) {\n if (jQuery.contains(self[i], this)) {\n return true;\n }\n }\n }));\n }\n ret = this.pushStack([]);\n for (i = 0; i < len; i++) {\n jQuery.find(selector, self[i], ret);\n }\n return len > 1 ? jQuery.uniqueSort(ret) : ret;\n },\n filter: function (selector) {\n return this.pushStack(winnow(this, selector || [], false));\n },\n not: function (selector) {\n return this.pushStack(winnow(this, selector || [], true));\n },\n is: function (selector) {\n return !!winnow(this,\n // If this is a positional/relative selector, check membership in the returned set\n // so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n typeof selector === \"string\" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;\n }\n });\n\n // Initialize a jQuery object\n\n // A central reference to the root jQuery(document)\n var rootjQuery,\n // A simple way to check for HTML strings\n // Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n // Strict HTML recognition (trac-11290: must start with <)\n // Shortcut simple #id case for speed\n rquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n init = jQuery.fn.init = function (selector, context, root) {\n var match, elem;\n\n // HANDLE: $(\"\"), $(null), $(undefined), $(false)\n if (!selector) {\n return this;\n }\n\n // Method init() accepts an alternate rootjQuery\n // so migrate can support jQuery.sub (gh-2101)\n root = root || rootjQuery;\n\n // Handle HTML strings\n if (typeof selector === \"string\") {\n if (selector[0] === \"<\" && selector[selector.length - 1] === \">\" && selector.length >= 3) {\n // Assume that strings that start and end with <> are HTML and skip the regex check\n match = [null, selector, null];\n } else {\n match = rquickExpr.exec(selector);\n }\n\n // Match html or make sure no context is specified for #id\n if (match && (match[1] || !context)) {\n // HANDLE: $(html) -> $(array)\n if (match[1]) {\n context = context instanceof jQuery ? context[0] : context;\n\n // Option to run scripts is true for back-compat\n // Intentionally let the error be thrown if parseHTML is not present\n jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true));\n\n // HANDLE: $(html, props)\n if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {\n for (match in context) {\n // Properties of context are called as methods if possible\n if (isFunction(this[match])) {\n this[match](context[match]);\n\n // ...and otherwise set as attributes\n } else {\n this.attr(match, context[match]);\n }\n }\n }\n return this;\n\n // HANDLE: $(#id)\n } else {\n elem = document.getElementById(match[2]);\n if (elem) {\n // Inject the element directly into the jQuery object\n this[0] = elem;\n this.length = 1;\n }\n return this;\n }\n\n // HANDLE: $(expr, $(...))\n } else if (!context || context.jquery) {\n return (context || root).find(selector);\n\n // HANDLE: $(expr, context)\n // (which is just equivalent to: $(context).find(expr)\n } else {\n return this.constructor(context).find(selector);\n }\n\n // HANDLE: $(DOMElement)\n } else if (selector.nodeType) {\n this[0] = selector;\n this.length = 1;\n return this;\n\n // HANDLE: $(function)\n // Shortcut for document ready\n } else if (isFunction(selector)) {\n return root.ready !== undefined ? root.ready(selector) :\n // Execute immediately if ready is not present\n selector(jQuery);\n }\n return jQuery.makeArray(selector, this);\n };\n\n // Give the init function the jQuery prototype for later instantiation\n init.prototype = jQuery.fn;\n\n // Initialize central reference\n rootjQuery = jQuery(document);\n var rparentsprev = /^(?:parents|prev(?:Until|All))/,\n // Methods guaranteed to produce a unique set when starting from a unique set\n guaranteedUnique = {\n children: true,\n contents: true,\n next: true,\n prev: true\n };\n jQuery.fn.extend({\n has: function (target) {\n var targets = jQuery(target, this),\n l = targets.length;\n return this.filter(function () {\n var i = 0;\n for (; i < l; i++) {\n if (jQuery.contains(this, targets[i])) {\n return true;\n }\n }\n });\n },\n closest: function (selectors, context) {\n var cur,\n i = 0,\n l = this.length,\n matched = [],\n targets = typeof selectors !== \"string\" && jQuery(selectors);\n\n // Positional selectors never match, since there's no _selection_ context\n if (!rneedsContext.test(selectors)) {\n for (; i < l; i++) {\n for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {\n // Always skip document fragments\n if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 :\n // Don't pass non-elements to jQuery#find\n cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {\n matched.push(cur);\n break;\n }\n }\n }\n }\n return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);\n },\n // Determine the position of an element within the set\n index: function (elem) {\n // No argument, return index in parent\n if (!elem) {\n return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;\n }\n\n // Index in selector\n if (typeof elem === \"string\") {\n return indexOf.call(jQuery(elem), this[0]);\n }\n\n // Locate the position of the desired element\n return indexOf.call(this,\n // If it receives a jQuery object, the first element is used\n elem.jquery ? elem[0] : elem);\n },\n add: function (selector, context) {\n return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context))));\n },\n addBack: function (selector) {\n return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));\n }\n });\n function sibling(cur, dir) {\n while ((cur = cur[dir]) && cur.nodeType !== 1) {}\n return cur;\n }\n jQuery.each({\n parent: function (elem) {\n var parent = elem.parentNode;\n return parent && parent.nodeType !== 11 ? parent : null;\n },\n parents: function (elem) {\n return dir(elem, \"parentNode\");\n },\n parentsUntil: function (elem, _i, until) {\n return dir(elem, \"parentNode\", until);\n },\n next: function (elem) {\n return sibling(elem, \"nextSibling\");\n },\n prev: function (elem) {\n return sibling(elem, \"previousSibling\");\n },\n nextAll: function (elem) {\n return dir(elem, \"nextSibling\");\n },\n prevAll: function (elem) {\n return dir(elem, \"previousSibling\");\n },\n nextUntil: function (elem, _i, until) {\n return dir(elem, \"nextSibling\", until);\n },\n prevUntil: function (elem, _i, until) {\n return dir(elem, \"previousSibling\", until);\n },\n siblings: function (elem) {\n return siblings((elem.parentNode || {}).firstChild, elem);\n },\n children: function (elem) {\n return siblings(elem.firstChild);\n },\n contents: function (elem) {\n if (elem.contentDocument != null &&\n // Support: IE 11+\n // <object> elements with no `data` attribute has an object\n // `contentDocument` with a `null` prototype.\n getProto(elem.contentDocument)) {\n return elem.contentDocument;\n }\n\n // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n if (nodeName(elem, \"template\")) {\n elem = elem.content || elem;\n }\n return jQuery.merge([], elem.childNodes);\n }\n }, function (name, fn) {\n jQuery.fn[name] = function (until, selector) {\n var matched = jQuery.map(this, fn, until);\n if (name.slice(-5) !== \"Until\") {\n selector = until;\n }\n if (selector && typeof selector === \"string\") {\n matched = jQuery.filter(selector, matched);\n }\n if (this.length > 1) {\n // Remove duplicates\n if (!guaranteedUnique[name]) {\n jQuery.uniqueSort(matched);\n }\n\n // Reverse order for parents* and prev-derivatives\n if (rparentsprev.test(name)) {\n matched.reverse();\n }\n }\n return this.pushStack(matched);\n };\n });\n var rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g;\n\n // Convert String-formatted options into Object-formatted ones\n function createOptions(options) {\n var object = {};\n jQuery.each(options.match(rnothtmlwhite) || [], function (_, flag) {\n object[flag] = true;\n });\n return object;\n }\n\n /*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\n jQuery.Callbacks = function (options) {\n // Convert options from String-formatted to Object-formatted if needed\n // (we check in cache first)\n options = typeof options === \"string\" ? createOptions(options) : jQuery.extend({}, options);\n var\n // Flag to know if list is currently firing\n firing,\n // Last fire value for non-forgettable lists\n memory,\n // Flag to know if list was already fired\n fired,\n // Flag to prevent firing\n locked,\n // Actual callback list\n list = [],\n // Queue of execution data for repeatable lists\n queue = [],\n // Index of currently firing callback (modified by add/remove as needed)\n firingIndex = -1,\n // Fire callbacks\n fire = function () {\n // Enforce single-firing\n locked = locked || options.once;\n\n // Execute callbacks for all pending executions,\n // respecting firingIndex overrides and runtime changes\n fired = firing = true;\n for (; queue.length; firingIndex = -1) {\n memory = queue.shift();\n while (++firingIndex < list.length) {\n // Run callback and check for early termination\n if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {\n // Jump to end and forget the data so .add doesn't re-fire\n firingIndex = list.length;\n memory = false;\n }\n }\n }\n\n // Forget the data if we're done with it\n if (!options.memory) {\n memory = false;\n }\n firing = false;\n\n // Clean up if we're done firing for good\n if (locked) {\n // Keep an empty list if we have data for future add calls\n if (memory) {\n list = [];\n\n // Otherwise, this object is spent\n } else {\n list = \"\";\n }\n }\n },\n // Actual Callbacks object\n self = {\n // Add a callback or a collection of callbacks to the list\n add: function () {\n if (list) {\n // If we have memory from a past run, we should fire after adding\n if (memory && !firing) {\n firingIndex = list.length - 1;\n queue.push(memory);\n }\n (function add(args) {\n jQuery.each(args, function (_, arg) {\n if (isFunction(arg)) {\n if (!options.unique || !self.has(arg)) {\n list.push(arg);\n }\n } else if (arg && arg.length && toType(arg) !== \"string\") {\n // Inspect recursively\n add(arg);\n }\n });\n })(arguments);\n if (memory && !firing) {\n fire();\n }\n }\n return this;\n },\n // Remove a callback from the list\n remove: function () {\n jQuery.each(arguments, function (_, arg) {\n var index;\n while ((index = jQuery.inArray(arg, list, index)) > -1) {\n list.splice(index, 1);\n\n // Handle firing indexes\n if (index <= firingIndex) {\n firingIndex--;\n }\n }\n });\n return this;\n },\n // Check if a given callback is in the list.\n // If no argument is given, return whether or not list has callbacks attached.\n has: function (fn) {\n return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;\n },\n // Remove all callbacks from the list\n empty: function () {\n if (list) {\n list = [];\n }\n return this;\n },\n // Disable .fire and .add\n // Abort any current/pending executions\n // Clear all callbacks and values\n disable: function () {\n locked = queue = [];\n list = memory = \"\";\n return this;\n },\n disabled: function () {\n return !list;\n },\n // Disable .fire\n // Also disable .add unless we have memory (since it would have no effect)\n // Abort any pending executions\n lock: function () {\n locked = queue = [];\n if (!memory && !firing) {\n list = memory = \"\";\n }\n return this;\n },\n locked: function () {\n return !!locked;\n },\n // Call all callbacks with the given context and arguments\n fireWith: function (context, args) {\n if (!locked) {\n args = args || [];\n args = [context, args.slice ? args.slice() : args];\n queue.push(args);\n if (!firing) {\n fire();\n }\n }\n return this;\n },\n // Call all the callbacks with the given arguments\n fire: function () {\n self.fireWith(this, arguments);\n return this;\n },\n // To know if the callbacks have already been called at least once\n fired: function () {\n return !!fired;\n }\n };\n return self;\n };\n function Identity(v) {\n return v;\n }\n function Thrower(ex) {\n throw ex;\n }\n function adoptValue(value, resolve, reject, noValue) {\n var method;\n try {\n // Check for promise aspect first to privilege synchronous behavior\n if (value && isFunction(method = value.promise)) {\n method.call(value).done(resolve).fail(reject);\n\n // Other thenables\n } else if (value && isFunction(method = value.then)) {\n method.call(value, resolve, reject);\n\n // Other non-thenables\n } else {\n // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n // * false: [ value ].slice( 0 ) => resolve( value )\n // * true: [ value ].slice( 1 ) => resolve()\n resolve.apply(undefined, [value].slice(noValue));\n }\n\n // For Promises/A+, convert exceptions into rejections\n // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n // Deferred#then to conditionally suppress rejection.\n } catch (value) {\n // Support: Android 4.0 only\n // Strict mode functions invoked without .call/.apply get global-object context\n reject.apply(undefined, [value]);\n }\n }\n jQuery.extend({\n Deferred: function (func) {\n var tuples = [\n // action, add listener, callbacks,\n // ... .then handlers, argument index, [final state]\n [\"notify\", \"progress\", jQuery.Callbacks(\"memory\"), jQuery.Callbacks(\"memory\"), 2], [\"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 0, \"resolved\"], [\"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 1, \"rejected\"]],\n state = \"pending\",\n promise = {\n state: function () {\n return state;\n },\n always: function () {\n deferred.done(arguments).fail(arguments);\n return this;\n },\n \"catch\": function (fn) {\n return promise.then(null, fn);\n },\n // Keep pipe for back-compat\n pipe: function /* fnDone, fnFail, fnProgress */\n () {\n var fns = arguments;\n return jQuery.Deferred(function (newDefer) {\n jQuery.each(tuples, function (_i, tuple) {\n // Map tuples (progress, done, fail) to arguments (done, fail, progress)\n var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]];\n\n // deferred.progress(function() { bind to newDefer or newDefer.notify })\n // deferred.done(function() { bind to newDefer or newDefer.resolve })\n // deferred.fail(function() { bind to newDefer or newDefer.reject })\n deferred[tuple[1]](function () {\n var returned = fn && fn.apply(this, arguments);\n if (returned && isFunction(returned.promise)) {\n returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);\n } else {\n newDefer[tuple[0] + \"With\"](this, fn ? [returned] : arguments);\n }\n });\n });\n fns = null;\n }).promise();\n },\n then: function (onFulfilled, onRejected, onProgress) {\n var maxDepth = 0;\n function resolve(depth, deferred, handler, special) {\n return function () {\n var that = this,\n args = arguments,\n mightThrow = function () {\n var returned, then;\n\n // Support: Promises/A+ section 2.3.3.3.3\n // https://promisesaplus.com/#point-59\n // Ignore double-resolution attempts\n if (depth < maxDepth) {\n return;\n }\n returned = handler.apply(that, args);\n\n // Support: Promises/A+ section 2.3.1\n // https://promisesaplus.com/#point-48\n if (returned === deferred.promise()) {\n throw new TypeError(\"Thenable self-resolution\");\n }\n\n // Support: Promises/A+ sections 2.3.3.1, 3.5\n // https://promisesaplus.com/#point-54\n // https://promisesaplus.com/#point-75\n // Retrieve `then` only once\n then = returned && (\n // Support: Promises/A+ section 2.3.4\n // https://promisesaplus.com/#point-64\n // Only check objects and functions for thenability\n typeof returned === \"object\" || typeof returned === \"function\") && returned.then;\n\n // Handle a returned thenable\n if (isFunction(then)) {\n // Special processors (notify) just wait for resolution\n if (special) {\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special));\n\n // Normal processors (resolve) also hook into progress\n } else {\n // ...and disregard older resolution values\n maxDepth++;\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith));\n }\n\n // Handle all other returned values\n } else {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Identity) {\n that = undefined;\n args = [returned];\n }\n\n // Process the value(s)\n // Default process is resolve\n (special || deferred.resolveWith)(that, args);\n }\n },\n // Only normal processors (resolve) catch and reject exceptions\n process = special ? mightThrow : function () {\n try {\n mightThrow();\n } catch (e) {\n if (jQuery.Deferred.exceptionHook) {\n jQuery.Deferred.exceptionHook(e, process.error);\n }\n\n // Support: Promises/A+ section 2.3.3.3.4.1\n // https://promisesaplus.com/#point-61\n // Ignore post-resolution exceptions\n if (depth + 1 >= maxDepth) {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Thrower) {\n that = undefined;\n args = [e];\n }\n deferred.rejectWith(that, args);\n }\n }\n };\n\n // Support: Promises/A+ section 2.3.3.3.1\n // https://promisesaplus.com/#point-57\n // Re-resolve promises immediately to dodge false rejection from\n // subsequent errors\n if (depth) {\n process();\n } else {\n // Call an optional hook to record the error, in case of exception\n // since it's otherwise lost when execution goes async\n if (jQuery.Deferred.getErrorHook) {\n process.error = jQuery.Deferred.getErrorHook();\n\n // The deprecated alias of the above. While the name suggests\n // returning the stack, not an error instance, jQuery just passes\n // it directly to `console.warn` so both will work; an instance\n // just better cooperates with source maps.\n } else if (jQuery.Deferred.getStackHook) {\n process.error = jQuery.Deferred.getStackHook();\n }\n window.setTimeout(process);\n }\n };\n }\n return jQuery.Deferred(function (newDefer) {\n // progress_handlers.add( ... )\n tuples[0][3].add(resolve(0, newDefer, isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith));\n\n // fulfilled_handlers.add( ... )\n tuples[1][3].add(resolve(0, newDefer, isFunction(onFulfilled) ? onFulfilled : Identity));\n\n // rejected_handlers.add( ... )\n tuples[2][3].add(resolve(0, newDefer, isFunction(onRejected) ? onRejected : Thrower));\n }).promise();\n },\n // Get a promise for this deferred\n // If obj is provided, the promise aspect is added to the object\n promise: function (obj) {\n return obj != null ? jQuery.extend(obj, promise) : promise;\n }\n },\n deferred = {};\n\n // Add list-specific methods\n jQuery.each(tuples, function (i, tuple) {\n var list = tuple[2],\n stateString = tuple[5];\n\n // promise.progress = list.add\n // promise.done = list.add\n // promise.fail = list.add\n promise[tuple[1]] = list.add;\n\n // Handle state\n if (stateString) {\n list.add(function () {\n // state = \"resolved\" (i.e., fulfilled)\n // state = \"rejected\"\n state = stateString;\n },\n // rejected_callbacks.disable\n // fulfilled_callbacks.disable\n tuples[3 - i][2].disable,\n // rejected_handlers.disable\n // fulfilled_handlers.disable\n tuples[3 - i][3].disable,\n // progress_callbacks.lock\n tuples[0][2].lock,\n // progress_handlers.lock\n tuples[0][3].lock);\n }\n\n // progress_handlers.fire\n // fulfilled_handlers.fire\n // rejected_handlers.fire\n list.add(tuple[3].fire);\n\n // deferred.notify = function() { deferred.notifyWith(...) }\n // deferred.resolve = function() { deferred.resolveWith(...) }\n // deferred.reject = function() { deferred.rejectWith(...) }\n deferred[tuple[0]] = function () {\n deferred[tuple[0] + \"With\"](this === deferred ? undefined : this, arguments);\n return this;\n };\n\n // deferred.notifyWith = list.fireWith\n // deferred.resolveWith = list.fireWith\n // deferred.rejectWith = list.fireWith\n deferred[tuple[0] + \"With\"] = list.fireWith;\n });\n\n // Make the deferred a promise\n promise.promise(deferred);\n\n // Call given func if any\n if (func) {\n func.call(deferred, deferred);\n }\n\n // All done!\n return deferred;\n },\n // Deferred helper\n when: function (singleValue) {\n var\n // count of uncompleted subordinates\n remaining = arguments.length,\n // count of unprocessed arguments\n i = remaining,\n // subordinate fulfillment data\n resolveContexts = Array(i),\n resolveValues = slice.call(arguments),\n // the primary Deferred\n primary = jQuery.Deferred(),\n // subordinate callback factory\n updateFunc = function (i) {\n return function (value) {\n resolveContexts[i] = this;\n resolveValues[i] = arguments.length > 1 ? slice.call(arguments) : value;\n if (! --remaining) {\n primary.resolveWith(resolveContexts, resolveValues);\n }\n };\n };\n\n // Single- and empty arguments are adopted like Promise.resolve\n if (remaining <= 1) {\n adoptValue(singleValue, primary.done(updateFunc(i)).resolve, primary.reject, !remaining);\n\n // Use .then() to unwrap secondary thenables (cf. gh-3000)\n if (primary.state() === \"pending\" || isFunction(resolveValues[i] && resolveValues[i].then)) {\n return primary.then();\n }\n }\n\n // Multiple arguments are aggregated like Promise.all array elements\n while (i--) {\n adoptValue(resolveValues[i], updateFunc(i), primary.reject);\n }\n return primary.promise();\n }\n });\n\n // These usually indicate a programmer mistake during development,\n // warn about them ASAP rather than swallowing them by default.\n var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n // If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n // captured before the async barrier to get the original error cause\n // which may otherwise be hidden.\n jQuery.Deferred.exceptionHook = function (error, asyncError) {\n // Support: IE 8 - 9 only\n // Console exists when dev tools are open, which can happen at any time\n if (window.console && window.console.warn && error && rerrorNames.test(error.name)) {\n window.console.warn(\"jQuery.Deferred exception: \" + error.message, error.stack, asyncError);\n }\n };\n jQuery.readyException = function (error) {\n window.setTimeout(function () {\n throw error;\n });\n };\n\n // The deferred used on DOM ready\n var readyList = jQuery.Deferred();\n jQuery.fn.ready = function (fn) {\n readyList.then(fn)\n\n // Wrap jQuery.readyException in a function so that the lookup\n // happens at the time of error handling instead of callback\n // registration.\n .catch(function (error) {\n jQuery.readyException(error);\n });\n return this;\n };\n jQuery.extend({\n // Is the DOM ready to be used? Set to true once it occurs.\n isReady: false,\n // A counter to track how many items to wait for before\n // the ready event fires. See trac-6781\n readyWait: 1,\n // Handle when the DOM is ready\n ready: function (wait) {\n // Abort if there are pending holds or we're already ready\n if (wait === true ? --jQuery.readyWait : jQuery.isReady) {\n return;\n }\n\n // Remember that the DOM is ready\n jQuery.isReady = true;\n\n // If a normal DOM Ready event fired, decrement, and wait if need be\n if (wait !== true && --jQuery.readyWait > 0) {\n return;\n }\n\n // If there are functions bound, to execute\n readyList.resolveWith(document, [jQuery]);\n }\n });\n jQuery.ready.then = readyList.then;\n\n // The ready event handler and self cleanup method\n function completed() {\n document.removeEventListener(\"DOMContentLoaded\", completed);\n window.removeEventListener(\"load\", completed);\n jQuery.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\n if (document.readyState === \"complete\" || document.readyState !== \"loading\" && !document.documentElement.doScroll) {\n // Handle it asynchronously to allow scripts the opportunity to delay ready\n window.setTimeout(jQuery.ready);\n } else {\n // Use the handy event callback\n document.addEventListener(\"DOMContentLoaded\", completed);\n\n // A fallback to window.onload, that will always work\n window.addEventListener(\"load\", completed);\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\n var access = function (elems, fn, key, value, chainable, emptyGet, raw) {\n var i = 0,\n len = elems.length,\n bulk = key == null;\n\n // Sets many values\n if (toType(key) === \"object\") {\n chainable = true;\n for (i in key) {\n access(elems, fn, i, key[i], true, emptyGet, raw);\n }\n\n // Sets one value\n } else if (value !== undefined) {\n chainable = true;\n if (!isFunction(value)) {\n raw = true;\n }\n if (bulk) {\n // Bulk operations run against the entire set\n if (raw) {\n fn.call(elems, value);\n fn = null;\n\n // ...except when executing function values\n } else {\n bulk = fn;\n fn = function (elem, _key, value) {\n return bulk.call(jQuery(elem), value);\n };\n }\n }\n if (fn) {\n for (; i < len; i++) {\n fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));\n }\n }\n }\n if (chainable) {\n return elems;\n }\n\n // Gets\n if (bulk) {\n return fn.call(elems);\n }\n return len ? fn(elems[0], key) : emptyGet;\n };\n\n // Matches dashed string for camelizing\n var rmsPrefix = /^-ms-/,\n rdashAlpha = /-([a-z])/g;\n\n // Used by camelCase as callback to replace()\n function fcamelCase(_all, letter) {\n return letter.toUpperCase();\n }\n\n // Convert dashed to camelCase; used by the css and data modules\n // Support: IE <=9 - 11, Edge 12 - 15\n // Microsoft forgot to hump their vendor prefix (trac-9572)\n function camelCase(string) {\n return string.replace(rmsPrefix, \"ms-\").replace(rdashAlpha, fcamelCase);\n }\n var acceptData = function (owner) {\n // Accepts only:\n // - Node\n // - Node.ELEMENT_NODE\n // - Node.DOCUMENT_NODE\n // - Object\n // - Any\n return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;\n };\n function Data() {\n this.expando = jQuery.expando + Data.uid++;\n }\n Data.uid = 1;\n Data.prototype = {\n cache: function (owner) {\n // Check if the owner object already has a cache\n var value = owner[this.expando];\n\n // If not, create one\n if (!value) {\n value = {};\n\n // We can accept data for non-element nodes in modern browsers,\n // but we should not, see trac-8335.\n // Always return an empty object.\n if (acceptData(owner)) {\n // If it is a node unlikely to be stringify-ed or looped over\n // use plain assignment\n if (owner.nodeType) {\n owner[this.expando] = value;\n\n // Otherwise secure it in a non-enumerable property\n // configurable must be true to allow the property to be\n // deleted when data is removed\n } else {\n Object.defineProperty(owner, this.expando, {\n value: value,\n configurable: true\n });\n }\n }\n }\n return value;\n },\n set: function (owner, data, value) {\n var prop,\n cache = this.cache(owner);\n\n // Handle: [ owner, key, value ] args\n // Always use camelCase key (gh-2257)\n if (typeof data === \"string\") {\n cache[camelCase(data)] = value;\n\n // Handle: [ owner, { properties } ] args\n } else {\n // Copy the properties one-by-one to the cache object\n for (prop in data) {\n cache[camelCase(prop)] = data[prop];\n }\n }\n return cache;\n },\n get: function (owner, key) {\n return key === undefined ? this.cache(owner) :\n // Always use camelCase key (gh-2257)\n owner[this.expando] && owner[this.expando][camelCase(key)];\n },\n access: function (owner, key, value) {\n // In cases where either:\n //\n // 1. No key was specified\n // 2. A string key was specified, but no value provided\n //\n // Take the \"read\" path and allow the get method to determine\n // which value to return, respectively either:\n //\n // 1. The entire cache object\n // 2. The data stored at the key\n //\n if (key === undefined || key && typeof key === \"string\" && value === undefined) {\n return this.get(owner, key);\n }\n\n // When the key is not a string, or both a key and value\n // are specified, set or extend (existing objects) with either:\n //\n // 1. An object of properties\n // 2. A key and value\n //\n this.set(owner, key, value);\n\n // Since the \"set\" path can have two possible entry points\n // return the expected data based on which path was taken[*]\n return value !== undefined ? value : key;\n },\n remove: function (owner, key) {\n var i,\n cache = owner[this.expando];\n if (cache === undefined) {\n return;\n }\n if (key !== undefined) {\n // Support array or space separated string of keys\n if (Array.isArray(key)) {\n // If key is an array of keys...\n // We always set camelCase keys, so remove that.\n key = key.map(camelCase);\n } else {\n key = camelCase(key);\n\n // If a key with the spaces exists, use it.\n // Otherwise, create an array by matching non-whitespace\n key = key in cache ? [key] : key.match(rnothtmlwhite) || [];\n }\n i = key.length;\n while (i--) {\n delete cache[key[i]];\n }\n }\n\n // Remove the expando if there's no more data\n if (key === undefined || jQuery.isEmptyObject(cache)) {\n // Support: Chrome <=35 - 45\n // Webkit & Blink performance suffers when deleting properties\n // from DOM nodes, so set to undefined instead\n // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n if (owner.nodeType) {\n owner[this.expando] = undefined;\n } else {\n delete owner[this.expando];\n }\n }\n },\n hasData: function (owner) {\n var cache = owner[this.expando];\n return cache !== undefined && !jQuery.isEmptyObject(cache);\n }\n };\n var dataPriv = new Data();\n var dataUser = new Data();\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\n var rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n rmultiDash = /[A-Z]/g;\n function getData(data) {\n if (data === \"true\") {\n return true;\n }\n if (data === \"false\") {\n return false;\n }\n if (data === \"null\") {\n return null;\n }\n\n // Only convert to a number if it doesn't change the string\n if (data === +data + \"\") {\n return +data;\n }\n if (rbrace.test(data)) {\n return JSON.parse(data);\n }\n return data;\n }\n function dataAttr(elem, key, data) {\n var name;\n\n // If nothing was found internally, try to fetch any\n // data from the HTML5 data-* attribute\n if (data === undefined && elem.nodeType === 1) {\n name = \"data-\" + key.replace(rmultiDash, \"-$&\").toLowerCase();\n data = elem.getAttribute(name);\n if (typeof data === \"string\") {\n try {\n data = getData(data);\n } catch (e) {}\n\n // Make sure we set the data so it isn't changed later\n dataUser.set(elem, key, data);\n } else {\n data = undefined;\n }\n }\n return data;\n }\n jQuery.extend({\n hasData: function (elem) {\n return dataUser.hasData(elem) || dataPriv.hasData(elem);\n },\n data: function (elem, name, data) {\n return dataUser.access(elem, name, data);\n },\n removeData: function (elem, name) {\n dataUser.remove(elem, name);\n },\n // TODO: Now that all calls to _data and _removeData have been replaced\n // with direct calls to dataPriv methods, these can be deprecated.\n _data: function (elem, name, data) {\n return dataPriv.access(elem, name, data);\n },\n _removeData: function (elem, name) {\n dataPriv.remove(elem, name);\n }\n });\n jQuery.fn.extend({\n data: function (key, value) {\n var i,\n name,\n data,\n elem = this[0],\n attrs = elem && elem.attributes;\n\n // Gets all values\n if (key === undefined) {\n if (this.length) {\n data = dataUser.get(elem);\n if (elem.nodeType === 1 && !dataPriv.get(elem, \"hasDataAttrs\")) {\n i = attrs.length;\n while (i--) {\n // Support: IE 11 only\n // The attrs elements can be null (trac-14894)\n if (attrs[i]) {\n name = attrs[i].name;\n if (name.indexOf(\"data-\") === 0) {\n name = camelCase(name.slice(5));\n dataAttr(elem, name, data[name]);\n }\n }\n }\n dataPriv.set(elem, \"hasDataAttrs\", true);\n }\n }\n return data;\n }\n\n // Sets multiple values\n if (typeof key === \"object\") {\n return this.each(function () {\n dataUser.set(this, key);\n });\n }\n return access(this, function (value) {\n var data;\n\n // The calling jQuery object (element matches) is not empty\n // (and therefore has an element appears at this[ 0 ]) and the\n // `value` parameter was not undefined. An empty jQuery object\n // will result in `undefined` for elem = this[ 0 ] which will\n // throw an exception if an attempt to read a data cache is made.\n if (elem && value === undefined) {\n // Attempt to get data from the cache\n // The key will always be camelCased in Data\n data = dataUser.get(elem, key);\n if (data !== undefined) {\n return data;\n }\n\n // Attempt to \"discover\" the data in\n // HTML5 custom data-* attrs\n data = dataAttr(elem, key);\n if (data !== undefined) {\n return data;\n }\n\n // We tried really hard, but the data doesn't exist.\n return;\n }\n\n // Set the data...\n this.each(function () {\n // We always store the camelCased key\n dataUser.set(this, key, value);\n });\n }, null, value, arguments.length > 1, null, true);\n },\n removeData: function (key) {\n return this.each(function () {\n dataUser.remove(this, key);\n });\n }\n });\n jQuery.extend({\n queue: function (elem, type, data) {\n var queue;\n if (elem) {\n type = (type || \"fx\") + \"queue\";\n queue = dataPriv.get(elem, type);\n\n // Speed up dequeue by getting out quickly if this is just a lookup\n if (data) {\n if (!queue || Array.isArray(data)) {\n queue = dataPriv.access(elem, type, jQuery.makeArray(data));\n } else {\n queue.push(data);\n }\n }\n return queue || [];\n }\n },\n dequeue: function (elem, type) {\n type = type || \"fx\";\n var queue = jQuery.queue(elem, type),\n startLength = queue.length,\n fn = queue.shift(),\n hooks = jQuery._queueHooks(elem, type),\n next = function () {\n jQuery.dequeue(elem, type);\n };\n\n // If the fx queue is dequeued, always remove the progress sentinel\n if (fn === \"inprogress\") {\n fn = queue.shift();\n startLength--;\n }\n if (fn) {\n // Add a progress sentinel to prevent the fx queue from being\n // automatically dequeued\n if (type === \"fx\") {\n queue.unshift(\"inprogress\");\n }\n\n // Clear up the last queue stop function\n delete hooks.stop;\n fn.call(elem, next, hooks);\n }\n if (!startLength && hooks) {\n hooks.empty.fire();\n }\n },\n // Not public - generate a queueHooks object, or return the current one\n _queueHooks: function (elem, type) {\n var key = type + \"queueHooks\";\n return dataPriv.get(elem, key) || dataPriv.access(elem, key, {\n empty: jQuery.Callbacks(\"once memory\").add(function () {\n dataPriv.remove(elem, [type + \"queue\", key]);\n })\n });\n }\n });\n jQuery.fn.extend({\n queue: function (type, data) {\n var setter = 2;\n if (typeof type !== \"string\") {\n data = type;\n type = \"fx\";\n setter--;\n }\n if (arguments.length < setter) {\n return jQuery.queue(this[0], type);\n }\n return data === undefined ? this : this.each(function () {\n var queue = jQuery.queue(this, type, data);\n\n // Ensure a hooks for this queue\n jQuery._queueHooks(this, type);\n if (type === \"fx\" && queue[0] !== \"inprogress\") {\n jQuery.dequeue(this, type);\n }\n });\n },\n dequeue: function (type) {\n return this.each(function () {\n jQuery.dequeue(this, type);\n });\n },\n clearQueue: function (type) {\n return this.queue(type || \"fx\", []);\n },\n // Get a promise resolved when queues of a certain type\n // are emptied (fx is the type by default)\n promise: function (type, obj) {\n var tmp,\n count = 1,\n defer = jQuery.Deferred(),\n elements = this,\n i = this.length,\n resolve = function () {\n if (! --count) {\n defer.resolveWith(elements, [elements]);\n }\n };\n if (typeof type !== \"string\") {\n obj = type;\n type = undefined;\n }\n type = type || \"fx\";\n while (i--) {\n tmp = dataPriv.get(elements[i], type + \"queueHooks\");\n if (tmp && tmp.empty) {\n count++;\n tmp.empty.add(resolve);\n }\n }\n resolve();\n return defer.promise(obj);\n }\n });\n var pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\n var rcssNum = new RegExp(\"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\");\n var cssExpand = [\"Top\", \"Right\", \"Bottom\", \"Left\"];\n var documentElement = document.documentElement;\n var isAttached = function (elem) {\n return jQuery.contains(elem.ownerDocument, elem);\n },\n composed = {\n composed: true\n };\n\n // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n // Check attachment across shadow DOM boundaries when possible (gh-3504)\n // Support: iOS 10.0-10.2 only\n // Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n // leading to errors. We need to check for `getRootNode`.\n if (documentElement.getRootNode) {\n isAttached = function (elem) {\n return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;\n };\n }\n var isHiddenWithinTree = function (elem, el) {\n // isHiddenWithinTree might be called from jQuery#filter function;\n // in that case, element will be second argument\n elem = el || elem;\n\n // Inline style trumps all\n return elem.style.display === \"none\" || elem.style.display === \"\" &&\n // Otherwise, check computed style\n // Support: Firefox <=43 - 45\n // Disconnected elements can have computed display: none, so first confirm that elem is\n // in the document.\n isAttached(elem) && jQuery.css(elem, \"display\") === \"none\";\n };\n function adjustCSS(elem, prop, valueParts, tween) {\n var adjusted,\n scale,\n maxIterations = 20,\n currentValue = tween ? function () {\n return tween.cur();\n } : function () {\n return jQuery.css(elem, prop, \"\");\n },\n initial = currentValue(),\n unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? \"\" : \"px\"),\n // Starting value computation is required for potential unit mismatches\n initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== \"px\" && +initial) && rcssNum.exec(jQuery.css(elem, prop));\n if (initialInUnit && initialInUnit[3] !== unit) {\n // Support: Firefox <=54\n // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n initial = initial / 2;\n\n // Trust units reported by jQuery.css\n unit = unit || initialInUnit[3];\n\n // Iteratively approximate from a nonzero starting point\n initialInUnit = +initial || 1;\n while (maxIterations--) {\n // Evaluate and update our best guess (doubling guesses that zero out).\n // Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n jQuery.style(elem, prop, initialInUnit + unit);\n if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {\n maxIterations = 0;\n }\n initialInUnit = initialInUnit / scale;\n }\n initialInUnit = initialInUnit * 2;\n jQuery.style(elem, prop, initialInUnit + unit);\n\n // Make sure we update the tween properties later on\n valueParts = valueParts || [];\n }\n if (valueParts) {\n initialInUnit = +initialInUnit || +initial || 0;\n\n // Apply relative offset (+=/-=) if specified\n adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];\n if (tween) {\n tween.unit = unit;\n tween.start = initialInUnit;\n tween.end = adjusted;\n }\n }\n return adjusted;\n }\n var defaultDisplayMap = {};\n function getDefaultDisplay(elem) {\n var temp,\n doc = elem.ownerDocument,\n nodeName = elem.nodeName,\n display = defaultDisplayMap[nodeName];\n if (display) {\n return display;\n }\n temp = doc.body.appendChild(doc.createElement(nodeName));\n display = jQuery.css(temp, \"display\");\n temp.parentNode.removeChild(temp);\n if (display === \"none\") {\n display = \"block\";\n }\n defaultDisplayMap[nodeName] = display;\n return display;\n }\n function showHide(elements, show) {\n var display,\n elem,\n values = [],\n index = 0,\n length = elements.length;\n\n // Determine new display value for elements that need to change\n for (; index < length; index++) {\n elem = elements[index];\n if (!elem.style) {\n continue;\n }\n display = elem.style.display;\n if (show) {\n // Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n // check is required in this first loop unless we have a nonempty display value (either\n // inline or about-to-be-restored)\n if (display === \"none\") {\n values[index] = dataPriv.get(elem, \"display\") || null;\n if (!values[index]) {\n elem.style.display = \"\";\n }\n }\n if (elem.style.display === \"\" && isHiddenWithinTree(elem)) {\n values[index] = getDefaultDisplay(elem);\n }\n } else {\n if (display !== \"none\") {\n values[index] = \"none\";\n\n // Remember what we're overwriting\n dataPriv.set(elem, \"display\", display);\n }\n }\n }\n\n // Set the display of the elements in a second loop to avoid constant reflow\n for (index = 0; index < length; index++) {\n if (values[index] != null) {\n elements[index].style.display = values[index];\n }\n }\n return elements;\n }\n jQuery.fn.extend({\n show: function () {\n return showHide(this, true);\n },\n hide: function () {\n return showHide(this);\n },\n toggle: function (state) {\n if (typeof state === \"boolean\") {\n return state ? this.show() : this.hide();\n }\n return this.each(function () {\n if (isHiddenWithinTree(this)) {\n jQuery(this).show();\n } else {\n jQuery(this).hide();\n }\n });\n }\n });\n var rcheckableType = /^(?:checkbox|radio)$/i;\n var rtagName = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i;\n var rscriptType = /^$|^module$|\\/(?:java|ecma)script/i;\n (function () {\n var fragment = document.createDocumentFragment(),\n div = fragment.appendChild(document.createElement(\"div\")),\n input = document.createElement(\"input\");\n\n // Support: Android 4.0 - 4.3 only\n // Check state lost if the name is set (trac-11217)\n // Support: Windows Web Apps (WWA)\n // `name` and `type` must use .setAttribute for WWA (trac-14901)\n input.setAttribute(\"type\", \"radio\");\n input.setAttribute(\"checked\", \"checked\");\n input.setAttribute(\"name\", \"t\");\n div.appendChild(input);\n\n // Support: Android <=4.1 only\n // Older WebKit doesn't clone checked state correctly in fragments\n support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;\n\n // Support: IE <=11 only\n // Make sure textarea (and checkbox) defaultValue is properly cloned\n div.innerHTML = \"<textarea>x</textarea>\";\n support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;\n\n // Support: IE <=9 only\n // IE <=9 replaces <option> tags with their contents when inserted outside of\n // the select element.\n div.innerHTML = \"<option></option>\";\n support.option = !!div.lastChild;\n })();\n\n // We have to close these tags to support XHTML (trac-13200)\n var wrapMap = {\n // XHTML parsers do not magically insert elements in the\n // same way that tag soup parsers do. So we cannot shorten\n // this by omitting <tbody> or other required elements.\n thead: [1, \"<table>\", \"</table>\"],\n col: [2, \"<table><colgroup>\", \"</colgroup></table>\"],\n tr: [2, \"<table><tbody>\", \"</tbody></table>\"],\n td: [3, \"<table><tbody><tr>\", \"</tr></tbody></table>\"],\n _default: [0, \"\", \"\"]\n };\n wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n wrapMap.th = wrapMap.td;\n\n // Support: IE <=9 only\n if (!support.option) {\n wrapMap.optgroup = wrapMap.option = [1, \"<select multiple='multiple'>\", \"</select>\"];\n }\n function getAll(context, tag) {\n // Support: IE <=9 - 11 only\n // Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n var ret;\n if (typeof context.getElementsByTagName !== \"undefined\") {\n ret = context.getElementsByTagName(tag || \"*\");\n } else if (typeof context.querySelectorAll !== \"undefined\") {\n ret = context.querySelectorAll(tag || \"*\");\n } else {\n ret = [];\n }\n if (tag === undefined || tag && nodeName(context, tag)) {\n return jQuery.merge([context], ret);\n }\n return ret;\n }\n\n // Mark scripts as having already been evaluated\n function setGlobalEval(elems, refElements) {\n var i = 0,\n l = elems.length;\n for (; i < l; i++) {\n dataPriv.set(elems[i], \"globalEval\", !refElements || dataPriv.get(refElements[i], \"globalEval\"));\n }\n }\n var rhtml = /<|&#?\\w+;/;\n function buildFragment(elems, context, scripts, selection, ignored) {\n var elem,\n tmp,\n tag,\n wrap,\n attached,\n j,\n fragment = context.createDocumentFragment(),\n nodes = [],\n i = 0,\n l = elems.length;\n for (; i < l; i++) {\n elem = elems[i];\n if (elem || elem === 0) {\n // Add nodes directly\n if (toType(elem) === \"object\") {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, elem.nodeType ? [elem] : elem);\n\n // Convert non-html into a text node\n } else if (!rhtml.test(elem)) {\n nodes.push(context.createTextNode(elem));\n\n // Convert html into DOM nodes\n } else {\n tmp = tmp || fragment.appendChild(context.createElement(\"div\"));\n\n // Deserialize a standard representation\n tag = (rtagName.exec(elem) || [\"\", \"\"])[1].toLowerCase();\n wrap = wrapMap[tag] || wrapMap._default;\n tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2];\n\n // Descend through wrappers to the right content\n j = wrap[0];\n while (j--) {\n tmp = tmp.lastChild;\n }\n\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, tmp.childNodes);\n\n // Remember the top-level container\n tmp = fragment.firstChild;\n\n // Ensure the created nodes are orphaned (trac-12392)\n tmp.textContent = \"\";\n }\n }\n }\n\n // Remove wrapper from fragment\n fragment.textContent = \"\";\n i = 0;\n while (elem = nodes[i++]) {\n // Skip elements already in the context collection (trac-4087)\n if (selection && jQuery.inArray(elem, selection) > -1) {\n if (ignored) {\n ignored.push(elem);\n }\n continue;\n }\n attached = isAttached(elem);\n\n // Append to fragment\n tmp = getAll(fragment.appendChild(elem), \"script\");\n\n // Preserve script evaluation history\n if (attached) {\n setGlobalEval(tmp);\n }\n\n // Capture executables\n if (scripts) {\n j = 0;\n while (elem = tmp[j++]) {\n if (rscriptType.test(elem.type || \"\")) {\n scripts.push(elem);\n }\n }\n }\n }\n return fragment;\n }\n var rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n function returnTrue() {\n return true;\n }\n function returnFalse() {\n return false;\n }\n function on(elem, types, selector, data, fn, one) {\n var origFn, type;\n\n // Types can be a map of types/handlers\n if (typeof types === \"object\") {\n // ( types-Object, selector, data )\n if (typeof selector !== \"string\") {\n // ( types-Object, data )\n data = data || selector;\n selector = undefined;\n }\n for (type in types) {\n on(elem, type, selector, data, types[type], one);\n }\n return elem;\n }\n if (data == null && fn == null) {\n // ( types, fn )\n fn = selector;\n data = selector = undefined;\n } else if (fn == null) {\n if (typeof selector === \"string\") {\n // ( types, selector, fn )\n fn = data;\n data = undefined;\n } else {\n // ( types, data, fn )\n fn = data;\n data = selector;\n selector = undefined;\n }\n }\n if (fn === false) {\n fn = returnFalse;\n } else if (!fn) {\n return elem;\n }\n if (one === 1) {\n origFn = fn;\n fn = function (event) {\n // Can use an empty set, since event contains the info\n jQuery().off(event);\n return origFn.apply(this, arguments);\n };\n\n // Use same guid so caller can remove using origFn\n fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);\n }\n return elem.each(function () {\n jQuery.event.add(this, types, fn, data, selector);\n });\n }\n\n /*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\n jQuery.event = {\n global: {},\n add: function (elem, types, handler, data, selector) {\n var handleObjIn,\n eventHandle,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.get(elem);\n\n // Only attach events to objects that accept data\n if (!acceptData(elem)) {\n return;\n }\n\n // Caller can pass in an object of custom data in lieu of the handler\n if (handler.handler) {\n handleObjIn = handler;\n handler = handleObjIn.handler;\n selector = handleObjIn.selector;\n }\n\n // Ensure that invalid selectors throw exceptions at attach time\n // Evaluate against documentElement in case elem is a non-element node (e.g., document)\n if (selector) {\n jQuery.find.matchesSelector(documentElement, selector);\n }\n\n // Make sure that the handler has a unique ID, used to find/remove it later\n if (!handler.guid) {\n handler.guid = jQuery.guid++;\n }\n\n // Init the element's event structure and main handler, if this is the first\n if (!(events = elemData.events)) {\n events = elemData.events = Object.create(null);\n }\n if (!(eventHandle = elemData.handle)) {\n eventHandle = elemData.handle = function (e) {\n // Discard the second event of a jQuery.event.trigger() and\n // when an event is called after a page has unloaded\n return typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined;\n };\n }\n\n // Handle multiple events separated by a space\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort();\n\n // There *must* be a type, no attaching namespace-only handlers\n if (!type) {\n continue;\n }\n\n // If event changes its type, use the special event handlers for the changed type\n special = jQuery.event.special[type] || {};\n\n // If selector defined, determine special event api type, otherwise given type\n type = (selector ? special.delegateType : special.bindType) || type;\n\n // Update special based on newly reset type\n special = jQuery.event.special[type] || {};\n\n // handleObj is passed to all event handlers\n handleObj = jQuery.extend({\n type: type,\n origType: origType,\n data: data,\n handler: handler,\n guid: handler.guid,\n selector: selector,\n needsContext: selector && jQuery.expr.match.needsContext.test(selector),\n namespace: namespaces.join(\".\")\n }, handleObjIn);\n\n // Init the event handler queue if we're the first\n if (!(handlers = events[type])) {\n handlers = events[type] = [];\n handlers.delegateCount = 0;\n\n // Only use addEventListener if the special events handler returns false\n if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {\n if (elem.addEventListener) {\n elem.addEventListener(type, eventHandle);\n }\n }\n }\n if (special.add) {\n special.add.call(elem, handleObj);\n if (!handleObj.handler.guid) {\n handleObj.handler.guid = handler.guid;\n }\n }\n\n // Add to the element's handler list, delegates in front\n if (selector) {\n handlers.splice(handlers.delegateCount++, 0, handleObj);\n } else {\n handlers.push(handleObj);\n }\n\n // Keep track of which events have ever been used, for event optimization\n jQuery.event.global[type] = true;\n }\n },\n // Detach an event or set of events from an element\n remove: function (elem, types, handler, selector, mappedTypes) {\n var j,\n origCount,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.hasData(elem) && dataPriv.get(elem);\n if (!elemData || !(events = elemData.events)) {\n return;\n }\n\n // Once for each type.namespace in types; type may be omitted\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort();\n\n // Unbind all events (on this namespace, if provided) for the element\n if (!type) {\n for (type in events) {\n jQuery.event.remove(elem, type + types[t], handler, selector, true);\n }\n continue;\n }\n special = jQuery.event.special[type] || {};\n type = (selector ? special.delegateType : special.bindType) || type;\n handlers = events[type] || [];\n tmp = tmp[2] && new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\");\n\n // Remove matching events\n origCount = j = handlers.length;\n while (j--) {\n handleObj = handlers[j];\n if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector)) {\n handlers.splice(j, 1);\n if (handleObj.selector) {\n handlers.delegateCount--;\n }\n if (special.remove) {\n special.remove.call(elem, handleObj);\n }\n }\n }\n\n // Remove generic event handler if we removed something and no more handlers exist\n // (avoids potential for endless recursion during removal of special event handlers)\n if (origCount && !handlers.length) {\n if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {\n jQuery.removeEvent(elem, type, elemData.handle);\n }\n delete events[type];\n }\n }\n\n // Remove data and the expando if it's no longer used\n if (jQuery.isEmptyObject(events)) {\n dataPriv.remove(elem, \"handle events\");\n }\n },\n dispatch: function (nativeEvent) {\n var i,\n j,\n ret,\n matched,\n handleObj,\n handlerQueue,\n args = new Array(arguments.length),\n // Make a writable jQuery.Event from the native event object\n event = jQuery.event.fix(nativeEvent),\n handlers = (dataPriv.get(this, \"events\") || Object.create(null))[event.type] || [],\n special = jQuery.event.special[event.type] || {};\n\n // Use the fix-ed jQuery.Event rather than the (read-only) native event\n args[0] = event;\n for (i = 1; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n event.delegateTarget = this;\n\n // Call the preDispatch hook for the mapped type, and let it bail if desired\n if (special.preDispatch && special.preDispatch.call(this, event) === false) {\n return;\n }\n\n // Determine handlers\n handlerQueue = jQuery.event.handlers.call(this, event, handlers);\n\n // Run delegates first; they may want to stop propagation beneath us\n i = 0;\n while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {\n event.currentTarget = matched.elem;\n j = 0;\n while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {\n // If the event is namespaced, then each handler is only invoked if it is\n // specially universal or its namespaces are a superset of the event's.\n if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {\n event.handleObj = handleObj;\n event.data = handleObj.data;\n ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);\n if (ret !== undefined) {\n if ((event.result = ret) === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n }\n }\n\n // Call the postDispatch hook for the mapped type\n if (special.postDispatch) {\n special.postDispatch.call(this, event);\n }\n return event.result;\n },\n handlers: function (event, handlers) {\n var i,\n handleObj,\n sel,\n matchedHandlers,\n matchedSelectors,\n handlerQueue = [],\n delegateCount = handlers.delegateCount,\n cur = event.target;\n\n // Find delegate handlers\n if (delegateCount &&\n // Support: IE <=9\n // Black-hole SVG <use> instance trees (trac-13180)\n cur.nodeType &&\n // Support: Firefox <=42\n // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n // Support: IE 11 only\n // ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n !(event.type === \"click\" && event.button >= 1)) {\n for (; cur !== this; cur = cur.parentNode || this) {\n // Don't check non-elements (trac-13208)\n // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n if (cur.nodeType === 1 && !(event.type === \"click\" && cur.disabled === true)) {\n matchedHandlers = [];\n matchedSelectors = {};\n for (i = 0; i < delegateCount; i++) {\n handleObj = handlers[i];\n\n // Don't conflict with Object.prototype properties (trac-13203)\n sel = handleObj.selector + \" \";\n if (matchedSelectors[sel] === undefined) {\n matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;\n }\n if (matchedSelectors[sel]) {\n matchedHandlers.push(handleObj);\n }\n }\n if (matchedHandlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: matchedHandlers\n });\n }\n }\n }\n }\n\n // Add the remaining (directly-bound) handlers\n cur = this;\n if (delegateCount < handlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: handlers.slice(delegateCount)\n });\n }\n return handlerQueue;\n },\n addProp: function (name, hook) {\n Object.defineProperty(jQuery.Event.prototype, name, {\n enumerable: true,\n configurable: true,\n get: isFunction(hook) ? function () {\n if (this.originalEvent) {\n return hook(this.originalEvent);\n }\n } : function () {\n if (this.originalEvent) {\n return this.originalEvent[name];\n }\n },\n set: function (value) {\n Object.defineProperty(this, name, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n });\n }\n });\n },\n fix: function (originalEvent) {\n return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent);\n },\n special: {\n load: {\n // Prevent triggered image.load events from bubbling to window.load\n noBubble: true\n },\n click: {\n // Utilize native event to ensure correct state for checkable inputs\n setup: function (data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data;\n\n // Claim the first handler\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n // dataPriv.set( el, \"click\", ... )\n leverageNative(el, \"click\", true);\n }\n\n // Return false to allow normal processing in the caller\n return false;\n },\n trigger: function (data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data;\n\n // Force setup before triggering a click\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n leverageNative(el, \"click\");\n }\n\n // Return non-false to allow normal event-path propagation\n return true;\n },\n // For cross-browser consistency, suppress native .click() on links\n // Also prevent it if we're currently inside a leveraged native-event stack\n _default: function (event) {\n var target = event.target;\n return rcheckableType.test(target.type) && target.click && nodeName(target, \"input\") && dataPriv.get(target, \"click\") || nodeName(target, \"a\");\n }\n },\n beforeunload: {\n postDispatch: function (event) {\n // Support: Firefox 20+\n // Firefox doesn't alert if the returnValue field is not set.\n if (event.result !== undefined && event.originalEvent) {\n event.originalEvent.returnValue = event.result;\n }\n }\n }\n }\n };\n\n // Ensure the presence of an event listener that handles manually-triggered\n // synthetic events by interrupting progress until reinvoked in response to\n // *native* events that it fires directly, ensuring that state changes have\n // already occurred before other listeners are invoked.\n function leverageNative(el, type, isSetup) {\n // Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n if (!isSetup) {\n if (dataPriv.get(el, type) === undefined) {\n jQuery.event.add(el, type, returnTrue);\n }\n return;\n }\n\n // Register the controller as a special universal handler for all event namespaces\n dataPriv.set(el, type, false);\n jQuery.event.add(el, type, {\n namespace: false,\n handler: function (event) {\n var result,\n saved = dataPriv.get(this, type);\n if (event.isTrigger & 1 && this[type]) {\n // Interrupt processing of the outer synthetic .trigger()ed event\n if (!saved) {\n // Store arguments for use when handling the inner native event\n // There will always be at least one argument (an event object), so this array\n // will not be confused with a leftover capture object.\n saved = slice.call(arguments);\n dataPriv.set(this, type, saved);\n\n // Trigger the native event and capture its result\n this[type]();\n result = dataPriv.get(this, type);\n dataPriv.set(this, type, false);\n if (saved !== result) {\n // Cancel the outer synthetic event\n event.stopImmediatePropagation();\n event.preventDefault();\n return result;\n }\n\n // If this is an inner synthetic event for an event with a bubbling surrogate\n // (focus or blur), assume that the surrogate already propagated from triggering\n // the native event and prevent that from happening again here.\n // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n // bubbling surrogate propagates *after* the non-bubbling base), but that seems\n // less bad than duplication.\n } else if ((jQuery.event.special[type] || {}).delegateType) {\n event.stopPropagation();\n }\n\n // If this is a native event triggered above, everything is now in order\n // Fire an inner synthetic event with the original arguments\n } else if (saved) {\n // ...and capture the result\n dataPriv.set(this, type, jQuery.event.trigger(saved[0], saved.slice(1), this));\n\n // Abort handling of the native event by all jQuery handlers while allowing\n // native handlers on the same element to run. On target, this is achieved\n // by stopping immediate propagation just on the jQuery event. However,\n // the native event is re-wrapped by a jQuery one on each level of the\n // propagation so the only way to stop it for jQuery is to stop it for\n // everyone via native `stopPropagation()`. This is not a problem for\n // focus/blur which don't bubble, but it does also stop click on checkboxes\n // and radios. We accept this limitation.\n event.stopPropagation();\n event.isImmediatePropagationStopped = returnTrue;\n }\n }\n });\n }\n jQuery.removeEvent = function (elem, type, handle) {\n // This \"if\" is needed for plain objects\n if (elem.removeEventListener) {\n elem.removeEventListener(type, handle);\n }\n };\n jQuery.Event = function (src, props) {\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof jQuery.Event)) {\n return new jQuery.Event(src, props);\n }\n\n // Event object\n if (src && src.type) {\n this.originalEvent = src;\n this.type = src.type;\n\n // Events bubbling up the document may have been marked as prevented\n // by a handler lower down the tree; reflect the correct value.\n this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined &&\n // Support: Android <=2.3 only\n src.returnValue === false ? returnTrue : returnFalse;\n\n // Create target properties\n // Support: Safari <=6 - 7 only\n // Target should not be a text node (trac-504, trac-13143)\n this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;\n this.currentTarget = src.currentTarget;\n this.relatedTarget = src.relatedTarget;\n\n // Event type\n } else {\n this.type = src;\n }\n\n // Put explicitly provided properties onto the event object\n if (props) {\n jQuery.extend(this, props);\n }\n\n // Create a timestamp if incoming event doesn't have one\n this.timeStamp = src && src.timeStamp || Date.now();\n\n // Mark it as fixed\n this[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\n jQuery.Event.prototype = {\n constructor: jQuery.Event,\n isDefaultPrevented: returnFalse,\n isPropagationStopped: returnFalse,\n isImmediatePropagationStopped: returnFalse,\n isSimulated: false,\n preventDefault: function () {\n var e = this.originalEvent;\n this.isDefaultPrevented = returnTrue;\n if (e && !this.isSimulated) {\n e.preventDefault();\n }\n },\n stopPropagation: function () {\n var e = this.originalEvent;\n this.isPropagationStopped = returnTrue;\n if (e && !this.isSimulated) {\n e.stopPropagation();\n }\n },\n stopImmediatePropagation: function () {\n var e = this.originalEvent;\n this.isImmediatePropagationStopped = returnTrue;\n if (e && !this.isSimulated) {\n e.stopImmediatePropagation();\n }\n this.stopPropagation();\n }\n };\n\n // Includes all common event props including KeyEvent and MouseEvent specific props\n jQuery.each({\n altKey: true,\n bubbles: true,\n cancelable: true,\n changedTouches: true,\n ctrlKey: true,\n detail: true,\n eventPhase: true,\n metaKey: true,\n pageX: true,\n pageY: true,\n shiftKey: true,\n view: true,\n \"char\": true,\n code: true,\n charCode: true,\n key: true,\n keyCode: true,\n button: true,\n buttons: true,\n clientX: true,\n clientY: true,\n offsetX: true,\n offsetY: true,\n pointerId: true,\n pointerType: true,\n screenX: true,\n screenY: true,\n targetTouches: true,\n toElement: true,\n touches: true,\n which: true\n }, jQuery.event.addProp);\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (type, delegateType) {\n function focusMappedHandler(nativeEvent) {\n if (document.documentMode) {\n // Support: IE 11+\n // Attach a single focusin/focusout handler on the document while someone wants\n // focus/blur. This is because the former are synchronous in IE while the latter\n // are async. In other browsers, all those handlers are invoked synchronously.\n\n // `handle` from private data would already wrap the event, but we need\n // to change the `type` here.\n var handle = dataPriv.get(this, \"handle\"),\n event = jQuery.event.fix(nativeEvent);\n event.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n event.isSimulated = true;\n\n // First, handle focusin/focusout\n handle(nativeEvent);\n\n // ...then, handle focus/blur\n //\n // focus/blur don't bubble while focusin/focusout do; simulate the former by only\n // invoking the handler at the lower level.\n if (event.target === event.currentTarget) {\n // The setup part calls `leverageNative`, which, in turn, calls\n // `jQuery.event.add`, so event handle will already have been set\n // by this point.\n handle(event);\n }\n } else {\n // For non-IE browsers, attach a single capturing handler on the document\n // while someone wants focusin/focusout.\n jQuery.event.simulate(delegateType, nativeEvent.target, jQuery.event.fix(nativeEvent));\n }\n }\n jQuery.event.special[type] = {\n // Utilize native event if possible so blur/focus sequence is correct\n setup: function () {\n var attaches;\n\n // Claim the first handler\n // dataPriv.set( this, \"focus\", ... )\n // dataPriv.set( this, \"blur\", ... )\n leverageNative(this, type, true);\n if (document.documentMode) {\n // Support: IE 9 - 11+\n // We use the same native handler for focusin & focus (and focusout & blur)\n // so we need to coordinate setup & teardown parts between those events.\n // Use `delegateType` as the key as `type` is already used by `leverageNative`.\n attaches = dataPriv.get(this, delegateType);\n if (!attaches) {\n this.addEventListener(delegateType, focusMappedHandler);\n }\n dataPriv.set(this, delegateType, (attaches || 0) + 1);\n } else {\n // Return false to allow normal processing in the caller\n return false;\n }\n },\n trigger: function () {\n // Force setup before trigger\n leverageNative(this, type);\n\n // Return non-false to allow normal event-path propagation\n return true;\n },\n teardown: function () {\n var attaches;\n if (document.documentMode) {\n attaches = dataPriv.get(this, delegateType) - 1;\n if (!attaches) {\n this.removeEventListener(delegateType, focusMappedHandler);\n dataPriv.remove(this, delegateType);\n } else {\n dataPriv.set(this, delegateType, attaches);\n }\n } else {\n // Return false to indicate standard teardown should be applied\n return false;\n }\n },\n // Suppress native focus or blur if we're currently inside\n // a leveraged native-event stack\n _default: function (event) {\n return dataPriv.get(event.target, type);\n },\n delegateType: delegateType\n };\n\n // Support: Firefox <=44\n // Firefox doesn't have focus(in | out) events\n // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n //\n // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n // focus(in | out) events fire after focus & blur events,\n // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n //\n // Support: IE 9 - 11+\n // To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n // attach a single handler for both events in IE.\n jQuery.event.special[delegateType] = {\n setup: function () {\n // Handle: regular nodes (via `this.ownerDocument`), window\n // (via `this.document`) & document (via `this`).\n var doc = this.ownerDocument || this.document || this,\n dataHolder = document.documentMode ? this : doc,\n attaches = dataPriv.get(dataHolder, delegateType);\n\n // Support: IE 9 - 11+\n // We use the same native handler for focusin & focus (and focusout & blur)\n // so we need to coordinate setup & teardown parts between those events.\n // Use `delegateType` as the key as `type` is already used by `leverageNative`.\n if (!attaches) {\n if (document.documentMode) {\n this.addEventListener(delegateType, focusMappedHandler);\n } else {\n doc.addEventListener(type, focusMappedHandler, true);\n }\n }\n dataPriv.set(dataHolder, delegateType, (attaches || 0) + 1);\n },\n teardown: function () {\n var doc = this.ownerDocument || this.document || this,\n dataHolder = document.documentMode ? this : doc,\n attaches = dataPriv.get(dataHolder, delegateType) - 1;\n if (!attaches) {\n if (document.documentMode) {\n this.removeEventListener(delegateType, focusMappedHandler);\n } else {\n doc.removeEventListener(type, focusMappedHandler, true);\n }\n dataPriv.remove(dataHolder, delegateType);\n } else {\n dataPriv.set(dataHolder, delegateType, attaches);\n }\n }\n };\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).\n jQuery.each({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\",\n pointerenter: \"pointerover\",\n pointerleave: \"pointerout\"\n }, function (orig, fix) {\n jQuery.event.special[orig] = {\n delegateType: fix,\n bindType: fix,\n handle: function (event) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj;\n\n // For mouseenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n if (!related || related !== target && !jQuery.contains(target, related)) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply(this, arguments);\n event.type = fix;\n }\n return ret;\n }\n };\n });\n jQuery.fn.extend({\n on: function (types, selector, data, fn) {\n return on(this, types, selector, data, fn);\n },\n one: function (types, selector, data, fn) {\n return on(this, types, selector, data, fn, 1);\n },\n off: function (types, selector, fn) {\n var handleObj, type;\n if (types && types.preventDefault && types.handleObj) {\n // ( event ) dispatched jQuery.Event\n handleObj = types.handleObj;\n jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);\n return this;\n }\n if (typeof types === \"object\") {\n // ( types-object [, selector] )\n for (type in types) {\n this.off(type, selector, types[type]);\n }\n return this;\n }\n if (selector === false || typeof selector === \"function\") {\n // ( types [, fn] )\n fn = selector;\n selector = undefined;\n }\n if (fn === false) {\n fn = returnFalse;\n }\n return this.each(function () {\n jQuery.event.remove(this, types, fn, selector);\n });\n }\n });\n var\n // Support: IE <=10 - 11, Edge 12 - 13 only\n // In IE/Edge using regex groups here causes severe slowdowns.\n // See https://connect.microsoft.com/IE/feedback/details/1736512/\n rnoInnerhtml = /<script|<style|<link/i,\n // checked=\"checked\" or checked\n rchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n rcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n // Prefer a tbody over its parent table for containing new rows\n function manipulationTarget(elem, content) {\n if (nodeName(elem, \"table\") && nodeName(content.nodeType !== 11 ? content : content.firstChild, \"tr\")) {\n return jQuery(elem).children(\"tbody\")[0] || elem;\n }\n return elem;\n }\n\n // Replace/restore the type attribute of script elements for safe DOM manipulation\n function disableScript(elem) {\n elem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n return elem;\n }\n function restoreScript(elem) {\n if ((elem.type || \"\").slice(0, 5) === \"true/\") {\n elem.type = elem.type.slice(5);\n } else {\n elem.removeAttribute(\"type\");\n }\n return elem;\n }\n function cloneCopyEvent(src, dest) {\n var i, l, type, pdataOld, udataOld, udataCur, events;\n if (dest.nodeType !== 1) {\n return;\n }\n\n // 1. Copy private data: events, handlers, etc.\n if (dataPriv.hasData(src)) {\n pdataOld = dataPriv.get(src);\n events = pdataOld.events;\n if (events) {\n dataPriv.remove(dest, \"handle events\");\n for (type in events) {\n for (i = 0, l = events[type].length; i < l; i++) {\n jQuery.event.add(dest, type, events[type][i]);\n }\n }\n }\n }\n\n // 2. Copy user data\n if (dataUser.hasData(src)) {\n udataOld = dataUser.access(src);\n udataCur = jQuery.extend({}, udataOld);\n dataUser.set(dest, udataCur);\n }\n }\n\n // Fix IE bugs, see support tests\n function fixInput(src, dest) {\n var nodeName = dest.nodeName.toLowerCase();\n\n // Fails to persist the checked state of a cloned checkbox or radio button.\n if (nodeName === \"input\" && rcheckableType.test(src.type)) {\n dest.checked = src.checked;\n\n // Fails to return the selected option to the default selected state when cloning options\n } else if (nodeName === \"input\" || nodeName === \"textarea\") {\n dest.defaultValue = src.defaultValue;\n }\n }\n function domManip(collection, args, callback, ignored) {\n // Flatten any nested arrays\n args = flat(args);\n var fragment,\n first,\n scripts,\n hasScripts,\n node,\n doc,\n i = 0,\n l = collection.length,\n iNoClone = l - 1,\n value = args[0],\n valueIsFunction = isFunction(value);\n\n // We can't cloneNode fragments that contain checked, in WebKit\n if (valueIsFunction || l > 1 && typeof value === \"string\" && !support.checkClone && rchecked.test(value)) {\n return collection.each(function (index) {\n var self = collection.eq(index);\n if (valueIsFunction) {\n args[0] = value.call(this, index, self.html());\n }\n domManip(self, args, callback, ignored);\n });\n }\n if (l) {\n fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);\n first = fragment.firstChild;\n if (fragment.childNodes.length === 1) {\n fragment = first;\n }\n\n // Require either new content or an interest in ignored elements to invoke the callback\n if (first || ignored) {\n scripts = jQuery.map(getAll(fragment, \"script\"), disableScript);\n hasScripts = scripts.length;\n\n // Use the original fragment for the last item\n // instead of the first because it can end up\n // being emptied incorrectly in certain situations (trac-8070).\n for (; i < l; i++) {\n node = fragment;\n if (i !== iNoClone) {\n node = jQuery.clone(node, true, true);\n\n // Keep references to cloned scripts for later restoration\n if (hasScripts) {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(scripts, getAll(node, \"script\"));\n }\n }\n callback.call(collection[i], node, i);\n }\n if (hasScripts) {\n doc = scripts[scripts.length - 1].ownerDocument;\n\n // Re-enable scripts\n jQuery.map(scripts, restoreScript);\n\n // Evaluate executable scripts on first document insertion\n for (i = 0; i < hasScripts; i++) {\n node = scripts[i];\n if (rscriptType.test(node.type || \"\") && !dataPriv.access(node, \"globalEval\") && jQuery.contains(doc, node)) {\n if (node.src && (node.type || \"\").toLowerCase() !== \"module\") {\n // Optional AJAX dependency, but won't run scripts if not present\n if (jQuery._evalUrl && !node.noModule) {\n jQuery._evalUrl(node.src, {\n nonce: node.nonce || node.getAttribute(\"nonce\")\n }, doc);\n }\n } else {\n // Unwrap a CDATA section containing script contents. This shouldn't be\n // needed as in XML documents they're already not visible when\n // inspecting element contents and in HTML documents they have no\n // meaning but we're preserving that logic for backwards compatibility.\n // This will be removed completely in 4.0. See gh-4904.\n DOMEval(node.textContent.replace(rcleanScript, \"\"), node, doc);\n }\n }\n }\n }\n }\n }\n return collection;\n }\n function remove(elem, selector, keepData) {\n var node,\n nodes = selector ? jQuery.filter(selector, elem) : elem,\n i = 0;\n for (; (node = nodes[i]) != null; i++) {\n if (!keepData && node.nodeType === 1) {\n jQuery.cleanData(getAll(node));\n }\n if (node.parentNode) {\n if (keepData && isAttached(node)) {\n setGlobalEval(getAll(node, \"script\"));\n }\n node.parentNode.removeChild(node);\n }\n }\n return elem;\n }\n jQuery.extend({\n htmlPrefilter: function (html) {\n return html;\n },\n clone: function (elem, dataAndEvents, deepDataAndEvents) {\n var i,\n l,\n srcElements,\n destElements,\n clone = elem.cloneNode(true),\n inPage = isAttached(elem);\n\n // Fix IE cloning issues\n if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {\n // We eschew jQuery#find here for performance reasons:\n // https://jsperf.com/getall-vs-sizzle/2\n destElements = getAll(clone);\n srcElements = getAll(elem);\n for (i = 0, l = srcElements.length; i < l; i++) {\n fixInput(srcElements[i], destElements[i]);\n }\n }\n\n // Copy the events from the original to the clone\n if (dataAndEvents) {\n if (deepDataAndEvents) {\n srcElements = srcElements || getAll(elem);\n destElements = destElements || getAll(clone);\n for (i = 0, l = srcElements.length; i < l; i++) {\n cloneCopyEvent(srcElements[i], destElements[i]);\n }\n } else {\n cloneCopyEvent(elem, clone);\n }\n }\n\n // Preserve script evaluation history\n destElements = getAll(clone, \"script\");\n if (destElements.length > 0) {\n setGlobalEval(destElements, !inPage && getAll(elem, \"script\"));\n }\n\n // Return the cloned set\n return clone;\n },\n cleanData: function (elems) {\n var data,\n elem,\n type,\n special = jQuery.event.special,\n i = 0;\n for (; (elem = elems[i]) !== undefined; i++) {\n if (acceptData(elem)) {\n if (data = elem[dataPriv.expando]) {\n if (data.events) {\n for (type in data.events) {\n if (special[type]) {\n jQuery.event.remove(elem, type);\n\n // This is a shortcut to avoid jQuery.event.remove's overhead\n } else {\n jQuery.removeEvent(elem, type, data.handle);\n }\n }\n }\n\n // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataPriv.expando] = undefined;\n }\n if (elem[dataUser.expando]) {\n // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataUser.expando] = undefined;\n }\n }\n }\n }\n });\n jQuery.fn.extend({\n detach: function (selector) {\n return remove(this, selector, true);\n },\n remove: function (selector) {\n return remove(this, selector);\n },\n text: function (value) {\n return access(this, function (value) {\n return value === undefined ? jQuery.text(this) : this.empty().each(function () {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n this.textContent = value;\n }\n });\n }, null, value, arguments.length);\n },\n append: function () {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.appendChild(elem);\n }\n });\n },\n prepend: function () {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.insertBefore(elem, target.firstChild);\n }\n });\n },\n before: function () {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this);\n }\n });\n },\n after: function () {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this.nextSibling);\n }\n });\n },\n empty: function () {\n var elem,\n i = 0;\n for (; (elem = this[i]) != null; i++) {\n if (elem.nodeType === 1) {\n // Prevent memory leaks\n jQuery.cleanData(getAll(elem, false));\n\n // Remove any remaining nodes\n elem.textContent = \"\";\n }\n }\n return this;\n },\n clone: function (dataAndEvents, deepDataAndEvents) {\n dataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n return this.map(function () {\n return jQuery.clone(this, dataAndEvents, deepDataAndEvents);\n });\n },\n html: function (value) {\n return access(this, function (value) {\n var elem = this[0] || {},\n i = 0,\n l = this.length;\n if (value === undefined && elem.nodeType === 1) {\n return elem.innerHTML;\n }\n\n // See if we can take a shortcut and just use innerHTML\n if (typeof value === \"string\" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || [\"\", \"\"])[1].toLowerCase()]) {\n value = jQuery.htmlPrefilter(value);\n try {\n for (; i < l; i++) {\n elem = this[i] || {};\n\n // Remove element nodes and prevent memory leaks\n if (elem.nodeType === 1) {\n jQuery.cleanData(getAll(elem, false));\n elem.innerHTML = value;\n }\n }\n elem = 0;\n\n // If using innerHTML throws an exception, use the fallback method\n } catch (e) {}\n }\n if (elem) {\n this.empty().append(value);\n }\n }, null, value, arguments.length);\n },\n replaceWith: function () {\n var ignored = [];\n\n // Make the changes, replacing each non-ignored context element with the new content\n return domManip(this, arguments, function (elem) {\n var parent = this.parentNode;\n if (jQuery.inArray(this, ignored) < 0) {\n jQuery.cleanData(getAll(this));\n if (parent) {\n parent.replaceChild(elem, this);\n }\n }\n\n // Force callback invocation\n }, ignored);\n }\n });\n jQuery.each({\n appendTo: \"append\",\n prependTo: \"prepend\",\n insertBefore: \"before\",\n insertAfter: \"after\",\n replaceAll: \"replaceWith\"\n }, function (name, original) {\n jQuery.fn[name] = function (selector) {\n var elems,\n ret = [],\n insert = jQuery(selector),\n last = insert.length - 1,\n i = 0;\n for (; i <= last; i++) {\n elems = i === last ? this : this.clone(true);\n jQuery(insert[i])[original](elems);\n\n // Support: Android <=4.0 only, PhantomJS 1 only\n // .get() because push.apply(_, arraylike) throws on ancient WebKit\n push.apply(ret, elems.get());\n }\n return this.pushStack(ret);\n };\n });\n var rnumnonpx = new RegExp(\"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\");\n var rcustomProp = /^--/;\n var getStyles = function (elem) {\n // Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n var view = elem.ownerDocument.defaultView;\n if (!view || !view.opener) {\n view = window;\n }\n return view.getComputedStyle(elem);\n };\n var swap = function (elem, options, callback) {\n var ret,\n name,\n old = {};\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n old[name] = elem.style[name];\n elem.style[name] = options[name];\n }\n ret = callback.call(elem);\n\n // Revert the old values\n for (name in options) {\n elem.style[name] = old[name];\n }\n return ret;\n };\n var rboxStyle = new RegExp(cssExpand.join(\"|\"), \"i\");\n (function () {\n // Executing both pixelPosition & boxSizingReliable tests require only one layout\n // so they're executed at the same time to save the second computation.\n function computeStyleTests() {\n // This is a singleton, we need to execute it only once\n if (!div) {\n return;\n }\n container.style.cssText = \"position:absolute;left:-11111px;width:60px;\" + \"margin-top:1px;padding:0;border:0\";\n div.style.cssText = \"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" + \"margin:auto;border:1px;padding:1px;\" + \"width:60%;top:1%\";\n documentElement.appendChild(container).appendChild(div);\n var divStyle = window.getComputedStyle(div);\n pixelPositionVal = divStyle.top !== \"1%\";\n\n // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12;\n\n // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n // Some styles come back with percentage values, even though they shouldn't\n div.style.right = \"60%\";\n pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36;\n\n // Support: IE 9 - 11 only\n // Detect misreporting of content dimensions for box-sizing:border-box elements\n boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36;\n\n // Support: IE 9 only\n // Detect overflow:scroll screwiness (gh-3699)\n // Support: Chrome <=64\n // Don't get tricked when zoom affects offsetWidth (gh-4029)\n div.style.position = \"absolute\";\n scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;\n documentElement.removeChild(container);\n\n // Nullify the div so it wouldn't be stored in the memory and\n // it will also be a sign that checks already performed\n div = null;\n }\n function roundPixelMeasures(measure) {\n return Math.round(parseFloat(measure));\n }\n var pixelPositionVal,\n boxSizingReliableVal,\n scrollboxSizeVal,\n pixelBoxStylesVal,\n reliableTrDimensionsVal,\n reliableMarginLeftVal,\n container = document.createElement(\"div\"),\n div = document.createElement(\"div\");\n\n // Finish early in limited (non-browser) environments\n if (!div.style) {\n return;\n }\n\n // Support: IE <=9 - 11 only\n // Style of cloned element affects source element cloned (trac-8908)\n div.style.backgroundClip = \"content-box\";\n div.cloneNode(true).style.backgroundClip = \"\";\n support.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n jQuery.extend(support, {\n boxSizingReliable: function () {\n computeStyleTests();\n return boxSizingReliableVal;\n },\n pixelBoxStyles: function () {\n computeStyleTests();\n return pixelBoxStylesVal;\n },\n pixelPosition: function () {\n computeStyleTests();\n return pixelPositionVal;\n },\n reliableMarginLeft: function () {\n computeStyleTests();\n return reliableMarginLeftVal;\n },\n scrollboxSize: function () {\n computeStyleTests();\n return scrollboxSizeVal;\n },\n // Support: IE 9 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Behavior in IE 9 is more subtle than in newer versions & it passes\n // some versions of this test; make sure not to make it pass there!\n //\n // Support: Firefox 70+\n // Only Firefox includes border widths\n // in computed dimensions. (gh-4529)\n reliableTrDimensions: function () {\n var table, tr, trChild, trStyle;\n if (reliableTrDimensionsVal == null) {\n table = document.createElement(\"table\");\n tr = document.createElement(\"tr\");\n trChild = document.createElement(\"div\");\n table.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n tr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n // Support: Chrome 86+\n // Height set through cssText does not get applied.\n // Computed height then comes back as 0.\n tr.style.height = \"1px\";\n trChild.style.height = \"9px\";\n\n // Support: Android 8 Chrome 86+\n // In our bodyBackground.html iframe,\n // display for all div elements is set to \"inline\",\n // which causes a problem only in Android 8 Chrome 86.\n // Ensuring the div is `display: block`\n // gets around this issue.\n trChild.style.display = \"block\";\n documentElement.appendChild(table).appendChild(tr).appendChild(trChild);\n trStyle = window.getComputedStyle(tr);\n reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight;\n documentElement.removeChild(table);\n }\n return reliableTrDimensionsVal;\n }\n });\n })();\n function curCSS(elem, name, computed) {\n var width,\n minWidth,\n maxWidth,\n ret,\n isCustomProp = rcustomProp.test(name),\n // Support: Firefox 51+\n // Retrieving style before computed somehow\n // fixes an issue with getting wrong values\n // on detached elements\n style = elem.style;\n computed = computed || getStyles(elem);\n\n // getPropertyValue is needed for:\n // .css('filter') (IE 9 only, trac-12537)\n // .css('--customProperty) (gh-3144)\n if (computed) {\n // Support: IE <=9 - 11+\n // IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n // it's only available as `\"cssFloat\"`. We no longer modify properties\n // sent to `.css()` apart from camelCasing, so we need to check both.\n // Normally, this would create difference in behavior: if\n // `getPropertyValue` returns an empty string, the value returned\n // by `.css()` would be `undefined`. This is usually the case for\n // disconnected elements. However, in IE even disconnected elements\n // with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n ret = computed.getPropertyValue(name) || computed[name];\n if (isCustomProp && ret) {\n // Support: Firefox 105+, Chrome <=105+\n // Spec requires trimming whitespace for custom properties (gh-4926).\n // Firefox only trims leading whitespace. Chrome just collapses\n // both leading & trailing whitespace to a single space.\n //\n // Fall back to `undefined` if empty string returned.\n // This collapses a missing definition with property defined\n // and set to an empty string but there's no standard API\n // allowing us to differentiate them without a performance penalty\n // and returning `undefined` aligns with older jQuery.\n //\n // rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n // as whitespace while CSS does not, but this is not a problem\n // because CSS preprocessing replaces them with U+000A LINE FEED\n // (which *is* CSS whitespace)\n // https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n ret = ret.replace(rtrimCSS, \"$1\") || undefined;\n }\n if (ret === \"\" && !isAttached(elem)) {\n ret = jQuery.style(elem, name);\n }\n\n // A tribute to the \"awesome hack by Dean Edwards\"\n // Android Browser returns percentage for some values,\n // but width seems to be reliably pixels.\n // This is against the CSSOM draft spec:\n // https://drafts.csswg.org/cssom/#resolved-values\n if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) {\n // Remember the original values\n width = style.width;\n minWidth = style.minWidth;\n maxWidth = style.maxWidth;\n\n // Put in the new values to get a computed value out\n style.minWidth = style.maxWidth = style.width = ret;\n ret = computed.width;\n\n // Revert the changed values\n style.width = width;\n style.minWidth = minWidth;\n style.maxWidth = maxWidth;\n }\n }\n return ret !== undefined ?\n // Support: IE <=9 - 11 only\n // IE returns zIndex value as an integer.\n ret + \"\" : ret;\n }\n function addGetHookIf(conditionFn, hookFn) {\n // Define the hook, we'll check on the first run if it's really needed.\n return {\n get: function () {\n if (conditionFn()) {\n // Hook not needed (or it's not possible to use it due\n // to missing dependency), remove it.\n delete this.get;\n return;\n }\n\n // Hook needed; redefine it so that the support test is not executed again.\n return (this.get = hookFn).apply(this, arguments);\n }\n };\n }\n var cssPrefixes = [\"Webkit\", \"Moz\", \"ms\"],\n emptyStyle = document.createElement(\"div\").style,\n vendorProps = {};\n\n // Return a vendor-prefixed property or undefined\n function vendorPropName(name) {\n // Check for vendor prefixed names\n var capName = name[0].toUpperCase() + name.slice(1),\n i = cssPrefixes.length;\n while (i--) {\n name = cssPrefixes[i] + capName;\n if (name in emptyStyle) {\n return name;\n }\n }\n }\n\n // Return a potentially-mapped jQuery.cssProps or vendor prefixed property\n function finalPropName(name) {\n var final = jQuery.cssProps[name] || vendorProps[name];\n if (final) {\n return final;\n }\n if (name in emptyStyle) {\n return name;\n }\n return vendorProps[name] = vendorPropName(name) || name;\n }\n var\n // Swappable if display is none or starts with table\n // except \"table\", \"table-cell\", or \"table-caption\"\n // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n rdisplayswap = /^(none|table(?!-c[ea]).+)/,\n cssShow = {\n position: \"absolute\",\n visibility: \"hidden\",\n display: \"block\"\n },\n cssNormalTransform = {\n letterSpacing: \"0\",\n fontWeight: \"400\"\n };\n function setPositiveNumber(_elem, value, subtract) {\n // Any relative (+/-) values have already been\n // normalized at this point\n var matches = rcssNum.exec(value);\n return matches ?\n // Guard against undefined \"subtract\", e.g., when used as in cssHooks\n Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || \"px\") : value;\n }\n function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {\n var i = dimension === \"width\" ? 1 : 0,\n extra = 0,\n delta = 0,\n marginDelta = 0;\n\n // Adjustment may not be necessary\n if (box === (isBorderBox ? \"border\" : \"content\")) {\n return 0;\n }\n for (; i < 4; i += 2) {\n // Both box models exclude margin\n // Count margin delta separately to only add it after scroll gutter adjustment.\n // This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n if (box === \"margin\") {\n marginDelta += jQuery.css(elem, box + cssExpand[i], true, styles);\n }\n\n // If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n if (!isBorderBox) {\n // Add padding\n delta += jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n\n // For \"border\" or \"margin\", add border\n if (box !== \"padding\") {\n delta += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n\n // But still keep track of it otherwise\n } else {\n extra += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n\n // If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n // \"padding\" or \"margin\"\n } else {\n // For \"content\", subtract padding\n if (box === \"content\") {\n delta -= jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n }\n\n // For \"content\" or \"padding\", subtract border\n if (box !== \"margin\") {\n delta -= jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n }\n }\n\n // Account for positive content-box scroll gutter when requested by providing computedVal\n if (!isBorderBox && computedVal >= 0) {\n // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n // Assuming integer scroll gutter, subtract the rest and round down\n delta += Math.max(0, Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5\n\n // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n // Use an explicit zero to avoid NaN (gh-3964)\n )) || 0;\n }\n return delta + marginDelta;\n }\n function getWidthOrHeight(elem, dimension, extra) {\n // Start with computed style\n var styles = getStyles(elem),\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n // Fake content-box until we know it's needed to know the true value.\n boxSizingNeeded = !support.boxSizingReliable() || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n valueIsBorderBox = isBorderBox,\n val = curCSS(elem, dimension, styles),\n offsetProp = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1);\n\n // Support: Firefox <=54\n // Return a confounding non-pixel value or feign ignorance, as appropriate.\n if (rnumnonpx.test(val)) {\n if (!extra) {\n return val;\n }\n val = \"auto\";\n }\n\n // Support: IE 9 - 11 only\n // Use offsetWidth/offsetHeight for when box sizing is unreliable.\n // In those cases, the computed value can be trusted to be border-box.\n if ((!support.boxSizingReliable() && isBorderBox ||\n // Support: IE 10 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Interestingly, in some cases IE 9 doesn't suffer from this issue.\n !support.reliableTrDimensions() && nodeName(elem, \"tr\") ||\n // Fall back to offsetWidth/offsetHeight when value is \"auto\"\n // This happens for inline elements with no explicit setting (gh-3571)\n val === \"auto\" ||\n // Support: Android <=4.1 - 4.3 only\n // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n !parseFloat(val) && jQuery.css(elem, \"display\", false, styles) === \"inline\") &&\n // Make sure the element is visible & connected\n elem.getClientRects().length) {\n isBorderBox = jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\";\n\n // Where available, offsetWidth/offsetHeight approximate border box dimensions.\n // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n // retrieved value as a content box dimension.\n valueIsBorderBox = offsetProp in elem;\n if (valueIsBorderBox) {\n val = elem[offsetProp];\n }\n }\n\n // Normalize \"\" and auto\n val = parseFloat(val) || 0;\n\n // Adjust for the element's box model\n return val + boxModelAdjustment(elem, dimension, extra || (isBorderBox ? \"border\" : \"content\"), valueIsBorderBox, styles,\n // Provide the current computed size to request scroll gutter calculation (gh-3589)\n val) + \"px\";\n }\n jQuery.extend({\n // Add in style property hooks for overriding the default\n // behavior of getting and setting a style property\n cssHooks: {\n opacity: {\n get: function (elem, computed) {\n if (computed) {\n // We should always get a number back from opacity\n var ret = curCSS(elem, \"opacity\");\n return ret === \"\" ? \"1\" : ret;\n }\n }\n }\n },\n // Don't automatically add \"px\" to these possibly-unitless properties\n cssNumber: {\n animationIterationCount: true,\n aspectRatio: true,\n borderImageSlice: true,\n columnCount: true,\n flexGrow: true,\n flexShrink: true,\n fontWeight: true,\n gridArea: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnStart: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowStart: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n scale: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeMiterlimit: true,\n strokeOpacity: true\n },\n // Add in properties whose names you wish to fix before\n // setting or getting the value\n cssProps: {},\n // Get and set the style property on a DOM Node\n style: function (elem, name, value, extra) {\n // Don't set styles on text and comment nodes\n if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {\n return;\n }\n\n // Make sure that we're working with the right name\n var ret,\n type,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name),\n style = elem.style;\n\n // Make sure that we're working with the right name. We don't\n // want to query the value if it is a CSS custom property\n // since they are user-defined.\n if (!isCustomProp) {\n name = finalPropName(origName);\n }\n\n // Gets hook for the prefixed version, then unprefixed version\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];\n\n // Check if we're setting a value\n if (value !== undefined) {\n type = typeof value;\n\n // Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n if (type === \"string\" && (ret = rcssNum.exec(value)) && ret[1]) {\n value = adjustCSS(elem, name, ret);\n\n // Fixes bug trac-9237\n type = \"number\";\n }\n\n // Make sure that null and NaN values aren't set (trac-7116)\n if (value == null || value !== value) {\n return;\n }\n\n // If a number was passed in, add the unit (except for certain CSS properties)\n // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n // \"px\" to a few hardcoded values.\n if (type === \"number\" && !isCustomProp) {\n value += ret && ret[3] || (jQuery.cssNumber[origName] ? \"\" : \"px\");\n }\n\n // background-* props affect original clone's values\n if (!support.clearCloneStyle && value === \"\" && name.indexOf(\"background\") === 0) {\n style[name] = \"inherit\";\n }\n\n // If a hook was provided, use that value, otherwise just set the specified value\n if (!hooks || !(\"set\" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {\n if (isCustomProp) {\n style.setProperty(name, value);\n } else {\n style[name] = value;\n }\n }\n } else {\n // If a hook was provided get the non-computed value from there\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {\n return ret;\n }\n\n // Otherwise just get the value from the style object\n return style[name];\n }\n },\n css: function (elem, name, extra, styles) {\n var val,\n num,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name);\n\n // Make sure that we're working with the right name. We don't\n // want to modify the value if it is a CSS custom property\n // since they are user-defined.\n if (!isCustomProp) {\n name = finalPropName(origName);\n }\n\n // Try prefixed name followed by the unprefixed name\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];\n\n // If a hook was provided get the computed value from there\n if (hooks && \"get\" in hooks) {\n val = hooks.get(elem, true, extra);\n }\n\n // Otherwise, if a way to get the computed value exists, use that\n if (val === undefined) {\n val = curCSS(elem, name, styles);\n }\n\n // Convert \"normal\" to computed value\n if (val === \"normal\" && name in cssNormalTransform) {\n val = cssNormalTransform[name];\n }\n\n // Make numeric if forced or a qualifier was provided and val looks numeric\n if (extra === \"\" || extra) {\n num = parseFloat(val);\n return extra === true || isFinite(num) ? num || 0 : val;\n }\n return val;\n }\n });\n jQuery.each([\"height\", \"width\"], function (_i, dimension) {\n jQuery.cssHooks[dimension] = {\n get: function (elem, computed, extra) {\n if (computed) {\n // Certain elements can have dimension info if we invisibly show them\n // but it must have a current display style that would benefit\n return rdisplayswap.test(jQuery.css(elem, \"display\")) && (\n // Support: Safari 8+\n // Table columns in Safari have non-zero offsetWidth & zero\n // getBoundingClientRect().width unless display is changed.\n // Support: IE <=11 only\n // Running getBoundingClientRect on a disconnected node\n // in IE throws an error.\n !elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function () {\n return getWidthOrHeight(elem, dimension, extra);\n }) : getWidthOrHeight(elem, dimension, extra);\n }\n },\n set: function (elem, value, extra) {\n var matches,\n styles = getStyles(elem),\n // Only read styles.position if the test has a chance to fail\n // to avoid forcing a reflow.\n scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === \"absolute\",\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n boxSizingNeeded = scrollboxSizeBuggy || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n subtract = extra ? boxModelAdjustment(elem, dimension, extra, isBorderBox, styles) : 0;\n\n // Account for unreliable border-box dimensions by comparing offset* to computed and\n // faking a content-box to get border and padding (gh-3699)\n if (isBorderBox && scrollboxSizeBuggy) {\n subtract -= Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, \"border\", false, styles) - 0.5);\n }\n\n // Convert to pixels if value adjustment is needed\n if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || \"px\") !== \"px\") {\n elem.style[dimension] = value;\n value = jQuery.css(elem, dimension);\n }\n return setPositiveNumber(elem, value, subtract);\n }\n };\n });\n jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) {\n if (computed) {\n return (parseFloat(curCSS(elem, \"marginLeft\")) || elem.getBoundingClientRect().left - swap(elem, {\n marginLeft: 0\n }, function () {\n return elem.getBoundingClientRect().left;\n })) + \"px\";\n }\n });\n\n // These hooks are used by animate to expand properties\n jQuery.each({\n margin: \"\",\n padding: \"\",\n border: \"Width\"\n }, function (prefix, suffix) {\n jQuery.cssHooks[prefix + suffix] = {\n expand: function (value) {\n var i = 0,\n expanded = {},\n // Assumes a single number if not a string\n parts = typeof value === \"string\" ? value.split(\" \") : [value];\n for (; i < 4; i++) {\n expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];\n }\n return expanded;\n }\n };\n if (prefix !== \"margin\") {\n jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;\n }\n });\n jQuery.fn.extend({\n css: function (name, value) {\n return access(this, function (elem, name, value) {\n var styles,\n len,\n map = {},\n i = 0;\n if (Array.isArray(name)) {\n styles = getStyles(elem);\n len = name.length;\n for (; i < len; i++) {\n map[name[i]] = jQuery.css(elem, name[i], false, styles);\n }\n return map;\n }\n return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name);\n }, name, value, arguments.length > 1);\n }\n });\n function Tween(elem, options, prop, end, easing) {\n return new Tween.prototype.init(elem, options, prop, end, easing);\n }\n jQuery.Tween = Tween;\n Tween.prototype = {\n constructor: Tween,\n init: function (elem, options, prop, end, easing, unit) {\n this.elem = elem;\n this.prop = prop;\n this.easing = easing || jQuery.easing._default;\n this.options = options;\n this.start = this.now = this.cur();\n this.end = end;\n this.unit = unit || (jQuery.cssNumber[prop] ? \"\" : \"px\");\n },\n cur: function () {\n var hooks = Tween.propHooks[this.prop];\n return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);\n },\n run: function (percent) {\n var eased,\n hooks = Tween.propHooks[this.prop];\n if (this.options.duration) {\n this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration);\n } else {\n this.pos = eased = percent;\n }\n this.now = (this.end - this.start) * eased + this.start;\n if (this.options.step) {\n this.options.step.call(this.elem, this.now, this);\n }\n if (hooks && hooks.set) {\n hooks.set(this);\n } else {\n Tween.propHooks._default.set(this);\n }\n return this;\n }\n };\n Tween.prototype.init.prototype = Tween.prototype;\n Tween.propHooks = {\n _default: {\n get: function (tween) {\n var result;\n\n // Use a property on the element directly when it is not a DOM element,\n // or when there is no matching style property that exists.\n if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {\n return tween.elem[tween.prop];\n }\n\n // Passing an empty string as a 3rd parameter to .css will automatically\n // attempt a parseFloat and fallback to a string if the parse fails.\n // Simple values such as \"10px\" are parsed to Float;\n // complex values such as \"rotate(1rad)\" are returned as-is.\n result = jQuery.css(tween.elem, tween.prop, \"\");\n\n // Empty strings, null, undefined and \"auto\" are converted to 0.\n return !result || result === \"auto\" ? 0 : result;\n },\n set: function (tween) {\n // Use step hook for back compat.\n // Use cssHook if its there.\n // Use .style if available and use plain properties where available.\n if (jQuery.fx.step[tween.prop]) {\n jQuery.fx.step[tween.prop](tween);\n } else if (tween.elem.nodeType === 1 && (jQuery.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {\n jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);\n } else {\n tween.elem[tween.prop] = tween.now;\n }\n }\n }\n };\n\n // Support: IE <=9 only\n // Panic based approach to setting things on disconnected nodes\n Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n set: function (tween) {\n if (tween.elem.nodeType && tween.elem.parentNode) {\n tween.elem[tween.prop] = tween.now;\n }\n }\n };\n jQuery.easing = {\n linear: function (p) {\n return p;\n },\n swing: function (p) {\n return 0.5 - Math.cos(p * Math.PI) / 2;\n },\n _default: \"swing\"\n };\n jQuery.fx = Tween.prototype.init;\n\n // Back compat <1.8 extension point\n jQuery.fx.step = {};\n var fxNow,\n inProgress,\n rfxtypes = /^(?:toggle|show|hide)$/,\n rrun = /queueHooks$/;\n function schedule() {\n if (inProgress) {\n if (document.hidden === false && window.requestAnimationFrame) {\n window.requestAnimationFrame(schedule);\n } else {\n window.setTimeout(schedule, jQuery.fx.interval);\n }\n jQuery.fx.tick();\n }\n }\n\n // Animations created synchronously will run synchronously\n function createFxNow() {\n window.setTimeout(function () {\n fxNow = undefined;\n });\n return fxNow = Date.now();\n }\n\n // Generate parameters to create a standard animation\n function genFx(type, includeWidth) {\n var which,\n i = 0,\n attrs = {\n height: type\n };\n\n // If we include width, step value is 1 to do all cssExpand values,\n // otherwise step value is 2 to skip over Left and Right\n includeWidth = includeWidth ? 1 : 0;\n for (; i < 4; i += 2 - includeWidth) {\n which = cssExpand[i];\n attrs[\"margin\" + which] = attrs[\"padding\" + which] = type;\n }\n if (includeWidth) {\n attrs.opacity = attrs.width = type;\n }\n return attrs;\n }\n function createTween(value, prop, animation) {\n var tween,\n collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners[\"*\"]),\n index = 0,\n length = collection.length;\n for (; index < length; index++) {\n if (tween = collection[index].call(animation, prop, value)) {\n // We're done with this property\n return tween;\n }\n }\n }\n function defaultPrefilter(elem, props, opts) {\n var prop,\n value,\n toggle,\n hooks,\n oldfire,\n propTween,\n restoreDisplay,\n display,\n isBox = \"width\" in props || \"height\" in props,\n anim = this,\n orig = {},\n style = elem.style,\n hidden = elem.nodeType && isHiddenWithinTree(elem),\n dataShow = dataPriv.get(elem, \"fxshow\");\n\n // Queue-skipping animations hijack the fx hooks\n if (!opts.queue) {\n hooks = jQuery._queueHooks(elem, \"fx\");\n if (hooks.unqueued == null) {\n hooks.unqueued = 0;\n oldfire = hooks.empty.fire;\n hooks.empty.fire = function () {\n if (!hooks.unqueued) {\n oldfire();\n }\n };\n }\n hooks.unqueued++;\n anim.always(function () {\n // Ensure the complete handler is called before this completes\n anim.always(function () {\n hooks.unqueued--;\n if (!jQuery.queue(elem, \"fx\").length) {\n hooks.empty.fire();\n }\n });\n });\n }\n\n // Detect show/hide animations\n for (prop in props) {\n value = props[prop];\n if (rfxtypes.test(value)) {\n delete props[prop];\n toggle = toggle || value === \"toggle\";\n if (value === (hidden ? \"hide\" : \"show\")) {\n // Pretend to be hidden if this is a \"show\" and\n // there is still data from a stopped show/hide\n if (value === \"show\" && dataShow && dataShow[prop] !== undefined) {\n hidden = true;\n\n // Ignore all other no-op show/hide data\n } else {\n continue;\n }\n }\n orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);\n }\n }\n\n // Bail out if this is a no-op like .hide().hide()\n propTween = !jQuery.isEmptyObject(props);\n if (!propTween && jQuery.isEmptyObject(orig)) {\n return;\n }\n\n // Restrict \"overflow\" and \"display\" styles during box animations\n if (isBox && elem.nodeType === 1) {\n // Support: IE <=9 - 11, Edge 12 - 15\n // Record all 3 overflow attributes because IE does not infer the shorthand\n // from identically-valued overflowX and overflowY and Edge just mirrors\n // the overflowX value there.\n opts.overflow = [style.overflow, style.overflowX, style.overflowY];\n\n // Identify a display type, preferring old show/hide data over the CSS cascade\n restoreDisplay = dataShow && dataShow.display;\n if (restoreDisplay == null) {\n restoreDisplay = dataPriv.get(elem, \"display\");\n }\n display = jQuery.css(elem, \"display\");\n if (display === \"none\") {\n if (restoreDisplay) {\n display = restoreDisplay;\n } else {\n // Get nonempty value(s) by temporarily forcing visibility\n showHide([elem], true);\n restoreDisplay = elem.style.display || restoreDisplay;\n display = jQuery.css(elem, \"display\");\n showHide([elem]);\n }\n }\n\n // Animate inline elements as inline-block\n if (display === \"inline\" || display === \"inline-block\" && restoreDisplay != null) {\n if (jQuery.css(elem, \"float\") === \"none\") {\n // Restore the original display value at the end of pure show/hide animations\n if (!propTween) {\n anim.done(function () {\n style.display = restoreDisplay;\n });\n if (restoreDisplay == null) {\n display = style.display;\n restoreDisplay = display === \"none\" ? \"\" : display;\n }\n }\n style.display = \"inline-block\";\n }\n }\n }\n if (opts.overflow) {\n style.overflow = \"hidden\";\n anim.always(function () {\n style.overflow = opts.overflow[0];\n style.overflowX = opts.overflow[1];\n style.overflowY = opts.overflow[2];\n });\n }\n\n // Implement show/hide animations\n propTween = false;\n for (prop in orig) {\n // General show/hide setup for this element animation\n if (!propTween) {\n if (dataShow) {\n if (\"hidden\" in dataShow) {\n hidden = dataShow.hidden;\n }\n } else {\n dataShow = dataPriv.access(elem, \"fxshow\", {\n display: restoreDisplay\n });\n }\n\n // Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n if (toggle) {\n dataShow.hidden = !hidden;\n }\n\n // Show elements before animating them\n if (hidden) {\n showHide([elem], true);\n }\n\n /* eslint-disable no-loop-func */\n\n anim.done(function () {\n /* eslint-enable no-loop-func */\n\n // The final step of a \"hide\" animation is actually hiding the element\n if (!hidden) {\n showHide([elem]);\n }\n dataPriv.remove(elem, \"fxshow\");\n for (prop in orig) {\n jQuery.style(elem, prop, orig[prop]);\n }\n });\n }\n\n // Per-property setup\n propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);\n if (!(prop in dataShow)) {\n dataShow[prop] = propTween.start;\n if (hidden) {\n propTween.end = propTween.start;\n propTween.start = 0;\n }\n }\n }\n }\n function propFilter(props, specialEasing) {\n var index, name, easing, value, hooks;\n\n // camelCase, specialEasing and expand cssHook pass\n for (index in props) {\n name = camelCase(index);\n easing = specialEasing[name];\n value = props[index];\n if (Array.isArray(value)) {\n easing = value[1];\n value = props[index] = value[0];\n }\n if (index !== name) {\n props[name] = value;\n delete props[index];\n }\n hooks = jQuery.cssHooks[name];\n if (hooks && \"expand\" in hooks) {\n value = hooks.expand(value);\n delete props[name];\n\n // Not quite $.extend, this won't overwrite existing keys.\n // Reusing 'index' because we have the correct \"name\"\n for (index in value) {\n if (!(index in props)) {\n props[index] = value[index];\n specialEasing[index] = easing;\n }\n }\n } else {\n specialEasing[name] = easing;\n }\n }\n }\n function Animation(elem, properties, options) {\n var result,\n stopped,\n index = 0,\n length = Animation.prefilters.length,\n deferred = jQuery.Deferred().always(function () {\n // Don't match elem in the :animated selector\n delete tick.elem;\n }),\n tick = function () {\n if (stopped) {\n return false;\n }\n var currentTime = fxNow || createFxNow(),\n remaining = Math.max(0, animation.startTime + animation.duration - currentTime),\n // Support: Android 2.3 only\n // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n temp = remaining / animation.duration || 0,\n percent = 1 - temp,\n index = 0,\n length = animation.tweens.length;\n for (; index < length; index++) {\n animation.tweens[index].run(percent);\n }\n deferred.notifyWith(elem, [animation, percent, remaining]);\n\n // If there's more to do, yield\n if (percent < 1 && length) {\n return remaining;\n }\n\n // If this was an empty animation, synthesize a final progress notification\n if (!length) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n }\n\n // Resolve the animation and report its conclusion\n deferred.resolveWith(elem, [animation]);\n return false;\n },\n animation = deferred.promise({\n elem: elem,\n props: jQuery.extend({}, properties),\n opts: jQuery.extend(true, {\n specialEasing: {},\n easing: jQuery.easing._default\n }, options),\n originalProperties: properties,\n originalOptions: options,\n startTime: fxNow || createFxNow(),\n duration: options.duration,\n tweens: [],\n createTween: function (prop, end) {\n var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);\n animation.tweens.push(tween);\n return tween;\n },\n stop: function (gotoEnd) {\n var index = 0,\n // If we are going to the end, we want to run all the tweens\n // otherwise we skip this part\n length = gotoEnd ? animation.tweens.length : 0;\n if (stopped) {\n return this;\n }\n stopped = true;\n for (; index < length; index++) {\n animation.tweens[index].run(1);\n }\n\n // Resolve when we played the last frame; otherwise, reject\n if (gotoEnd) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n deferred.resolveWith(elem, [animation, gotoEnd]);\n } else {\n deferred.rejectWith(elem, [animation, gotoEnd]);\n }\n return this;\n }\n }),\n props = animation.props;\n propFilter(props, animation.opts.specialEasing);\n for (; index < length; index++) {\n result = Animation.prefilters[index].call(animation, elem, props, animation.opts);\n if (result) {\n if (isFunction(result.stop)) {\n jQuery._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);\n }\n return result;\n }\n }\n jQuery.map(props, createTween, animation);\n if (isFunction(animation.opts.start)) {\n animation.opts.start.call(elem, animation);\n }\n\n // Attach callbacks from options\n animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);\n jQuery.fx.timer(jQuery.extend(tick, {\n elem: elem,\n anim: animation,\n queue: animation.opts.queue\n }));\n return animation;\n }\n jQuery.Animation = jQuery.extend(Animation, {\n tweeners: {\n \"*\": [function (prop, value) {\n var tween = this.createTween(prop, value);\n adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);\n return tween;\n }]\n },\n tweener: function (props, callback) {\n if (isFunction(props)) {\n callback = props;\n props = [\"*\"];\n } else {\n props = props.match(rnothtmlwhite);\n }\n var prop,\n index = 0,\n length = props.length;\n for (; index < length; index++) {\n prop = props[index];\n Animation.tweeners[prop] = Animation.tweeners[prop] || [];\n Animation.tweeners[prop].unshift(callback);\n }\n },\n prefilters: [defaultPrefilter],\n prefilter: function (callback, prepend) {\n if (prepend) {\n Animation.prefilters.unshift(callback);\n } else {\n Animation.prefilters.push(callback);\n }\n }\n });\n jQuery.speed = function (speed, easing, fn) {\n var opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n complete: fn || !fn && easing || isFunction(speed) && speed,\n duration: speed,\n easing: fn && easing || easing && !isFunction(easing) && easing\n };\n\n // Go to the end state if fx are off\n if (jQuery.fx.off) {\n opt.duration = 0;\n } else {\n if (typeof opt.duration !== \"number\") {\n if (opt.duration in jQuery.fx.speeds) {\n opt.duration = jQuery.fx.speeds[opt.duration];\n } else {\n opt.duration = jQuery.fx.speeds._default;\n }\n }\n }\n\n // Normalize opt.queue - true/undefined/null -> \"fx\"\n if (opt.queue == null || opt.queue === true) {\n opt.queue = \"fx\";\n }\n\n // Queueing\n opt.old = opt.complete;\n opt.complete = function () {\n if (isFunction(opt.old)) {\n opt.old.call(this);\n }\n if (opt.queue) {\n jQuery.dequeue(this, opt.queue);\n }\n };\n return opt;\n };\n jQuery.fn.extend({\n fadeTo: function (speed, to, easing, callback) {\n // Show any hidden elements after setting opacity to 0\n return this.filter(isHiddenWithinTree).css(\"opacity\", 0).show()\n\n // Animate to the value specified\n .end().animate({\n opacity: to\n }, speed, easing, callback);\n },\n animate: function (prop, speed, easing, callback) {\n var empty = jQuery.isEmptyObject(prop),\n optall = jQuery.speed(speed, easing, callback),\n doAnimation = function () {\n // Operate on a copy of prop so per-property easing won't be lost\n var anim = Animation(this, jQuery.extend({}, prop), optall);\n\n // Empty animations, or finishing resolves immediately\n if (empty || dataPriv.get(this, \"finish\")) {\n anim.stop(true);\n }\n };\n doAnimation.finish = doAnimation;\n return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);\n },\n stop: function (type, clearQueue, gotoEnd) {\n var stopQueue = function (hooks) {\n var stop = hooks.stop;\n delete hooks.stop;\n stop(gotoEnd);\n };\n if (typeof type !== \"string\") {\n gotoEnd = clearQueue;\n clearQueue = type;\n type = undefined;\n }\n if (clearQueue) {\n this.queue(type || \"fx\", []);\n }\n return this.each(function () {\n var dequeue = true,\n index = type != null && type + \"queueHooks\",\n timers = jQuery.timers,\n data = dataPriv.get(this);\n if (index) {\n if (data[index] && data[index].stop) {\n stopQueue(data[index]);\n }\n } else {\n for (index in data) {\n if (data[index] && data[index].stop && rrun.test(index)) {\n stopQueue(data[index]);\n }\n }\n }\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && (type == null || timers[index].queue === type)) {\n timers[index].anim.stop(gotoEnd);\n dequeue = false;\n timers.splice(index, 1);\n }\n }\n\n // Start the next in the queue if the last step wasn't forced.\n // Timers currently will call their complete callbacks, which\n // will dequeue but only if they were gotoEnd.\n if (dequeue || !gotoEnd) {\n jQuery.dequeue(this, type);\n }\n });\n },\n finish: function (type) {\n if (type !== false) {\n type = type || \"fx\";\n }\n return this.each(function () {\n var index,\n data = dataPriv.get(this),\n queue = data[type + \"queue\"],\n hooks = data[type + \"queueHooks\"],\n timers = jQuery.timers,\n length = queue ? queue.length : 0;\n\n // Enable finishing flag on private data\n data.finish = true;\n\n // Empty the queue first\n jQuery.queue(this, type, []);\n if (hooks && hooks.stop) {\n hooks.stop.call(this, true);\n }\n\n // Look for any active animations, and finish them\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && timers[index].queue === type) {\n timers[index].anim.stop(true);\n timers.splice(index, 1);\n }\n }\n\n // Look for any animations in the old queue and finish them\n for (index = 0; index < length; index++) {\n if (queue[index] && queue[index].finish) {\n queue[index].finish.call(this);\n }\n }\n\n // Turn off finishing flag\n delete data.finish;\n });\n }\n });\n jQuery.each([\"toggle\", \"show\", \"hide\"], function (_i, name) {\n var cssFn = jQuery.fn[name];\n jQuery.fn[name] = function (speed, easing, callback) {\n return speed == null || typeof speed === \"boolean\" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);\n };\n });\n\n // Generate shortcuts for custom animations\n jQuery.each({\n slideDown: genFx(\"show\"),\n slideUp: genFx(\"hide\"),\n slideToggle: genFx(\"toggle\"),\n fadeIn: {\n opacity: \"show\"\n },\n fadeOut: {\n opacity: \"hide\"\n },\n fadeToggle: {\n opacity: \"toggle\"\n }\n }, function (name, props) {\n jQuery.fn[name] = function (speed, easing, callback) {\n return this.animate(props, speed, easing, callback);\n };\n });\n jQuery.timers = [];\n jQuery.fx.tick = function () {\n var timer,\n i = 0,\n timers = jQuery.timers;\n fxNow = Date.now();\n for (; i < timers.length; i++) {\n timer = timers[i];\n\n // Run the timer and safely remove it when done (allowing for external removal)\n if (!timer() && timers[i] === timer) {\n timers.splice(i--, 1);\n }\n }\n if (!timers.length) {\n jQuery.fx.stop();\n }\n fxNow = undefined;\n };\n jQuery.fx.timer = function (timer) {\n jQuery.timers.push(timer);\n jQuery.fx.start();\n };\n jQuery.fx.interval = 13;\n jQuery.fx.start = function () {\n if (inProgress) {\n return;\n }\n inProgress = true;\n schedule();\n };\n jQuery.fx.stop = function () {\n inProgress = null;\n };\n jQuery.fx.speeds = {\n slow: 600,\n fast: 200,\n // Default speed\n _default: 400\n };\n\n // Based off of the plugin by Clint Helfers, with permission.\n jQuery.fn.delay = function (time, type) {\n time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n type = type || \"fx\";\n return this.queue(type, function (next, hooks) {\n var timeout = window.setTimeout(next, time);\n hooks.stop = function () {\n window.clearTimeout(timeout);\n };\n });\n };\n (function () {\n var input = document.createElement(\"input\"),\n select = document.createElement(\"select\"),\n opt = select.appendChild(document.createElement(\"option\"));\n input.type = \"checkbox\";\n\n // Support: Android <=4.3 only\n // Default value for a checkbox should be \"on\"\n support.checkOn = input.value !== \"\";\n\n // Support: IE <=11 only\n // Must access selectedIndex to make default options select\n support.optSelected = opt.selected;\n\n // Support: IE <=11 only\n // An input loses its value after becoming a radio\n input = document.createElement(\"input\");\n input.value = \"t\";\n input.type = \"radio\";\n support.radioValue = input.value === \"t\";\n })();\n var boolHook,\n attrHandle = jQuery.expr.attrHandle;\n jQuery.fn.extend({\n attr: function (name, value) {\n return access(this, jQuery.attr, name, value, arguments.length > 1);\n },\n removeAttr: function (name) {\n return this.each(function () {\n jQuery.removeAttr(this, name);\n });\n }\n });\n jQuery.extend({\n attr: function (elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType;\n\n // Don't get/set attributes on text, comment and attribute nodes\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n\n // Fallback to prop when attributes are not supported\n if (typeof elem.getAttribute === \"undefined\") {\n return jQuery.prop(elem, name, value);\n }\n\n // Attribute hooks are determined by the lowercase version\n // Grab necessary hook if one is defined\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined);\n }\n if (value !== undefined) {\n if (value === null) {\n jQuery.removeAttr(elem, name);\n return;\n }\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n elem.setAttribute(name, value + \"\");\n return value;\n }\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n ret = jQuery.find.attr(elem, name);\n\n // Non-existent attributes return null, we normalize to undefined\n return ret == null ? undefined : ret;\n },\n attrHooks: {\n type: {\n set: function (elem, value) {\n if (!support.radioValue && value === \"radio\" && nodeName(elem, \"input\")) {\n var val = elem.value;\n elem.setAttribute(\"type\", value);\n if (val) {\n elem.value = val;\n }\n return value;\n }\n }\n }\n },\n removeAttr: function (elem, value) {\n var name,\n i = 0,\n // Attribute names can contain non-HTML whitespace characters\n // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n attrNames = value && value.match(rnothtmlwhite);\n if (attrNames && elem.nodeType === 1) {\n while (name = attrNames[i++]) {\n elem.removeAttribute(name);\n }\n }\n }\n });\n\n // Hooks for boolean attributes\n boolHook = {\n set: function (elem, value, name) {\n if (value === false) {\n // Remove boolean attributes when set to false\n jQuery.removeAttr(elem, name);\n } else {\n elem.setAttribute(name, name);\n }\n return name;\n }\n };\n jQuery.each(jQuery.expr.match.bool.source.match(/\\w+/g), function (_i, name) {\n var getter = attrHandle[name] || jQuery.find.attr;\n attrHandle[name] = function (elem, name, isXML) {\n var ret,\n handle,\n lowercaseName = name.toLowerCase();\n if (!isXML) {\n // Avoid an infinite loop by temporarily removing this function from the getter\n handle = attrHandle[lowercaseName];\n attrHandle[lowercaseName] = ret;\n ret = getter(elem, name, isXML) != null ? lowercaseName : null;\n attrHandle[lowercaseName] = handle;\n }\n return ret;\n };\n });\n var rfocusable = /^(?:input|select|textarea|button)$/i,\n rclickable = /^(?:a|area)$/i;\n jQuery.fn.extend({\n prop: function (name, value) {\n return access(this, jQuery.prop, name, value, arguments.length > 1);\n },\n removeProp: function (name) {\n return this.each(function () {\n delete this[jQuery.propFix[name] || name];\n });\n }\n });\n jQuery.extend({\n prop: function (elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType;\n\n // Don't get/set properties on text, comment and attribute nodes\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n // Fix name and attach hooks\n name = jQuery.propFix[name] || name;\n hooks = jQuery.propHooks[name];\n }\n if (value !== undefined) {\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n return elem[name] = value;\n }\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n return elem[name];\n },\n propHooks: {\n tabIndex: {\n get: function (elem) {\n // Support: IE <=9 - 11 only\n // elem.tabIndex doesn't always return the\n // correct value when it hasn't been explicitly set\n // Use proper attribute retrieval (trac-12072)\n var tabindex = jQuery.find.attr(elem, \"tabindex\");\n if (tabindex) {\n return parseInt(tabindex, 10);\n }\n if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {\n return 0;\n }\n return -1;\n }\n }\n },\n propFix: {\n \"for\": \"htmlFor\",\n \"class\": \"className\"\n }\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\n if (!support.optSelected) {\n jQuery.propHooks.selected = {\n get: function (elem) {\n /* eslint no-unused-expressions: \"off\" */\n\n var parent = elem.parentNode;\n if (parent && parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n return null;\n },\n set: function (elem) {\n /* eslint no-unused-expressions: \"off\" */\n\n var parent = elem.parentNode;\n if (parent) {\n parent.selectedIndex;\n if (parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n }\n }\n };\n }\n jQuery.each([\"tabIndex\", \"readOnly\", \"maxLength\", \"cellSpacing\", \"cellPadding\", \"rowSpan\", \"colSpan\", \"useMap\", \"frameBorder\", \"contentEditable\"], function () {\n jQuery.propFix[this.toLowerCase()] = this;\n });\n\n // Strip and collapse whitespace according to HTML spec\n // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n function stripAndCollapse(value) {\n var tokens = value.match(rnothtmlwhite) || [];\n return tokens.join(\" \");\n }\n function getClass(elem) {\n return elem.getAttribute && elem.getAttribute(\"class\") || \"\";\n }\n function classesToArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n if (typeof value === \"string\") {\n return value.match(rnothtmlwhite) || [];\n }\n return [];\n }\n jQuery.fn.extend({\n addClass: function (value) {\n var classNames, cur, curValue, className, i, finalValue;\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).addClass(value.call(this, j, getClass(this)));\n });\n }\n classNames = classesToArray(value);\n if (classNames.length) {\n return this.each(function () {\n curValue = getClass(this);\n cur = this.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n if (cur) {\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i];\n if (cur.indexOf(\" \" + className + \" \") < 0) {\n cur += className + \" \";\n }\n }\n\n // Only assign if different to avoid unneeded rendering.\n finalValue = stripAndCollapse(cur);\n if (curValue !== finalValue) {\n this.setAttribute(\"class\", finalValue);\n }\n }\n });\n }\n return this;\n },\n removeClass: function (value) {\n var classNames, cur, curValue, className, i, finalValue;\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).removeClass(value.call(this, j, getClass(this)));\n });\n }\n if (!arguments.length) {\n return this.attr(\"class\", \"\");\n }\n classNames = classesToArray(value);\n if (classNames.length) {\n return this.each(function () {\n curValue = getClass(this);\n\n // This expression is here for better compressibility (see addClass)\n cur = this.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n if (cur) {\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i];\n\n // Remove *all* instances\n while (cur.indexOf(\" \" + className + \" \") > -1) {\n cur = cur.replace(\" \" + className + \" \", \" \");\n }\n }\n\n // Only assign if different to avoid unneeded rendering.\n finalValue = stripAndCollapse(cur);\n if (curValue !== finalValue) {\n this.setAttribute(\"class\", finalValue);\n }\n }\n });\n }\n return this;\n },\n toggleClass: function (value, stateVal) {\n var classNames,\n className,\n i,\n self,\n type = typeof value,\n isValidValue = type === \"string\" || Array.isArray(value);\n if (isFunction(value)) {\n return this.each(function (i) {\n jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal);\n });\n }\n if (typeof stateVal === \"boolean\" && isValidValue) {\n return stateVal ? this.addClass(value) : this.removeClass(value);\n }\n classNames = classesToArray(value);\n return this.each(function () {\n if (isValidValue) {\n // Toggle individual class names\n self = jQuery(this);\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i];\n\n // Check each className given, space separated list\n if (self.hasClass(className)) {\n self.removeClass(className);\n } else {\n self.addClass(className);\n }\n }\n\n // Toggle whole class name\n } else if (value === undefined || type === \"boolean\") {\n className = getClass(this);\n if (className) {\n // Store className if set\n dataPriv.set(this, \"__className__\", className);\n }\n\n // If the element has a class name or if we're passed `false`,\n // then remove the whole classname (if there was one, the above saved it).\n // Otherwise bring back whatever was previously saved (if anything),\n // falling back to the empty string if nothing was stored.\n if (this.setAttribute) {\n this.setAttribute(\"class\", className || value === false ? \"\" : dataPriv.get(this, \"__className__\") || \"\");\n }\n }\n });\n },\n hasClass: function (selector) {\n var className,\n elem,\n i = 0;\n className = \" \" + selector + \" \";\n while (elem = this[i++]) {\n if (elem.nodeType === 1 && (\" \" + stripAndCollapse(getClass(elem)) + \" \").indexOf(className) > -1) {\n return true;\n }\n }\n return false;\n }\n });\n var rreturn = /\\r/g;\n jQuery.fn.extend({\n val: function (value) {\n var hooks,\n ret,\n valueIsFunction,\n elem = this[0];\n if (!arguments.length) {\n if (elem) {\n hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, \"value\")) !== undefined) {\n return ret;\n }\n ret = elem.value;\n\n // Handle most common string cases\n if (typeof ret === \"string\") {\n return ret.replace(rreturn, \"\");\n }\n\n // Handle cases where value is null/undef or number\n return ret == null ? \"\" : ret;\n }\n return;\n }\n valueIsFunction = isFunction(value);\n return this.each(function (i) {\n var val;\n if (this.nodeType !== 1) {\n return;\n }\n if (valueIsFunction) {\n val = value.call(this, i, jQuery(this).val());\n } else {\n val = value;\n }\n\n // Treat null/undefined as \"\"; convert numbers to string\n if (val == null) {\n val = \"\";\n } else if (typeof val === \"number\") {\n val += \"\";\n } else if (Array.isArray(val)) {\n val = jQuery.map(val, function (value) {\n return value == null ? \"\" : value + \"\";\n });\n }\n hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()];\n\n // If set returns undefined, fall back to normal setting\n if (!hooks || !(\"set\" in hooks) || hooks.set(this, val, \"value\") === undefined) {\n this.value = val;\n }\n });\n }\n });\n jQuery.extend({\n valHooks: {\n option: {\n get: function (elem) {\n var val = jQuery.find.attr(elem, \"value\");\n return val != null ? val :\n // Support: IE <=10 - 11 only\n // option.text throws exceptions (trac-14686, trac-14858)\n // Strip and collapse whitespace\n // https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n stripAndCollapse(jQuery.text(elem));\n }\n },\n select: {\n get: function (elem) {\n var value,\n option,\n i,\n options = elem.options,\n index = elem.selectedIndex,\n one = elem.type === \"select-one\",\n values = one ? null : [],\n max = one ? index + 1 : options.length;\n if (index < 0) {\n i = max;\n } else {\n i = one ? index : 0;\n }\n\n // Loop through all the selected options\n for (; i < max; i++) {\n option = options[i];\n\n // Support: IE <=9 only\n // IE8-9 doesn't update selected after form reset (trac-2551)\n if ((option.selected || i === index) &&\n // Don't return options that are disabled or in a disabled optgroup\n !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, \"optgroup\"))) {\n // Get the specific value for the option\n value = jQuery(option).val();\n\n // We don't need an array for one selects\n if (one) {\n return value;\n }\n\n // Multi-Selects return an array\n values.push(value);\n }\n }\n return values;\n },\n set: function (elem, value) {\n var optionSet,\n option,\n options = elem.options,\n values = jQuery.makeArray(value),\n i = options.length;\n while (i--) {\n option = options[i];\n\n /* eslint-disable no-cond-assign */\n\n if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {\n optionSet = true;\n }\n\n /* eslint-enable no-cond-assign */\n }\n\n // Force browsers to behave consistently when non-matching value is set\n if (!optionSet) {\n elem.selectedIndex = -1;\n }\n return values;\n }\n }\n }\n });\n\n // Radios and checkboxes getter/setter\n jQuery.each([\"radio\", \"checkbox\"], function () {\n jQuery.valHooks[this] = {\n set: function (elem, value) {\n if (Array.isArray(value)) {\n return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1;\n }\n }\n };\n if (!support.checkOn) {\n jQuery.valHooks[this].get = function (elem) {\n return elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n };\n }\n });\n\n // Return jQuery for attributes-only inclusion\n var location = window.location;\n var nonce = {\n guid: Date.now()\n };\n var rquery = /\\?/;\n\n // Cross-browser xml parsing\n jQuery.parseXML = function (data) {\n var xml, parserErrorElem;\n if (!data || typeof data !== \"string\") {\n return null;\n }\n\n // Support: IE 9 - 11 only\n // IE throws on parseFromString with invalid input.\n try {\n xml = new window.DOMParser().parseFromString(data, \"text/xml\");\n } catch (e) {}\n parserErrorElem = xml && xml.getElementsByTagName(\"parsererror\")[0];\n if (!xml || parserErrorElem) {\n jQuery.error(\"Invalid XML: \" + (parserErrorElem ? jQuery.map(parserErrorElem.childNodes, function (el) {\n return el.textContent;\n }).join(\"\\n\") : data));\n }\n return xml;\n };\n var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n stopPropagationCallback = function (e) {\n e.stopPropagation();\n };\n jQuery.extend(jQuery.event, {\n trigger: function (event, data, elem, onlyHandlers) {\n var i,\n cur,\n tmp,\n bubbleType,\n ontype,\n handle,\n special,\n lastElement,\n eventPath = [elem || document],\n type = hasOwn.call(event, \"type\") ? event.type : event,\n namespaces = hasOwn.call(event, \"namespace\") ? event.namespace.split(\".\") : [];\n cur = lastElement = tmp = elem = elem || document;\n\n // Don't do events on text and comment nodes\n if (elem.nodeType === 3 || elem.nodeType === 8) {\n return;\n }\n\n // focus/blur morphs to focusin/out; ensure we're not firing them right now\n if (rfocusMorph.test(type + jQuery.event.triggered)) {\n return;\n }\n if (type.indexOf(\".\") > -1) {\n // Namespaced trigger; create a regexp to match event type in handle()\n namespaces = type.split(\".\");\n type = namespaces.shift();\n namespaces.sort();\n }\n ontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n // Caller can pass in a jQuery.Event object, Object, or just an event type string\n event = event[jQuery.expando] ? event : new jQuery.Event(type, typeof event === \"object\" && event);\n\n // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n event.isTrigger = onlyHandlers ? 2 : 3;\n event.namespace = namespaces.join(\".\");\n event.rnamespace = event.namespace ? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\n // Clean up the event in case it is being reused\n event.result = undefined;\n if (!event.target) {\n event.target = elem;\n }\n\n // Clone any incoming data and prepend the event, creating the handler arg list\n data = data == null ? [event] : jQuery.makeArray(data, [event]);\n\n // Allow special events to draw outside the lines\n special = jQuery.event.special[type] || {};\n if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {\n return;\n }\n\n // Determine event propagation path in advance, per W3C events spec (trac-9951)\n // Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {\n bubbleType = special.delegateType || type;\n if (!rfocusMorph.test(bubbleType + type)) {\n cur = cur.parentNode;\n }\n for (; cur; cur = cur.parentNode) {\n eventPath.push(cur);\n tmp = cur;\n }\n\n // Only add window if we got to document (e.g., not plain obj or detached DOM)\n if (tmp === (elem.ownerDocument || document)) {\n eventPath.push(tmp.defaultView || tmp.parentWindow || window);\n }\n }\n\n // Fire handlers on the event path\n i = 0;\n while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {\n lastElement = cur;\n event.type = i > 1 ? bubbleType : special.bindType || type;\n\n // jQuery handler\n handle = (dataPriv.get(cur, \"events\") || Object.create(null))[event.type] && dataPriv.get(cur, \"handle\");\n if (handle) {\n handle.apply(cur, data);\n }\n\n // Native handler\n handle = ontype && cur[ontype];\n if (handle && handle.apply && acceptData(cur)) {\n event.result = handle.apply(cur, data);\n if (event.result === false) {\n event.preventDefault();\n }\n }\n }\n event.type = type;\n\n // If nobody prevented the default action, do it now\n if (!onlyHandlers && !event.isDefaultPrevented()) {\n if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {\n // Call a native DOM method on the target with the same name as the event.\n // Don't do default actions on window, that's where global variables be (trac-6170)\n if (ontype && isFunction(elem[type]) && !isWindow(elem)) {\n // Don't re-trigger an onFOO event when we call its FOO() method\n tmp = elem[ontype];\n if (tmp) {\n elem[ontype] = null;\n }\n\n // Prevent re-triggering of the same event, since we already bubbled it above\n jQuery.event.triggered = type;\n if (event.isPropagationStopped()) {\n lastElement.addEventListener(type, stopPropagationCallback);\n }\n elem[type]();\n if (event.isPropagationStopped()) {\n lastElement.removeEventListener(type, stopPropagationCallback);\n }\n jQuery.event.triggered = undefined;\n if (tmp) {\n elem[ontype] = tmp;\n }\n }\n }\n }\n return event.result;\n },\n // Piggyback on a donor event to simulate a different one\n // Used only for `focus(in | out)` events\n simulate: function (type, elem, event) {\n var e = jQuery.extend(new jQuery.Event(), event, {\n type: type,\n isSimulated: true\n });\n jQuery.event.trigger(e, null, elem);\n }\n });\n jQuery.fn.extend({\n trigger: function (type, data) {\n return this.each(function () {\n jQuery.event.trigger(type, data, this);\n });\n },\n triggerHandler: function (type, data) {\n var elem = this[0];\n if (elem) {\n return jQuery.event.trigger(type, data, elem, true);\n }\n }\n });\n var rbracket = /\\[\\]$/,\n rCRLF = /\\r?\\n/g,\n rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n rsubmittable = /^(?:input|select|textarea|keygen)/i;\n function buildParams(prefix, obj, traditional, add) {\n var name;\n if (Array.isArray(obj)) {\n // Serialize array item.\n jQuery.each(obj, function (i, v) {\n if (traditional || rbracket.test(prefix)) {\n // Treat each array item as a scalar.\n add(prefix, v);\n } else {\n // Item is non-scalar (array or object), encode its numeric index.\n buildParams(prefix + \"[\" + (typeof v === \"object\" && v != null ? i : \"\") + \"]\", v, traditional, add);\n }\n });\n } else if (!traditional && toType(obj) === \"object\") {\n // Serialize object item.\n for (name in obj) {\n buildParams(prefix + \"[\" + name + \"]\", obj[name], traditional, add);\n }\n } else {\n // Serialize scalar item.\n add(prefix, obj);\n }\n }\n\n // Serialize an array of form elements or a set of\n // key/values into a query string\n jQuery.param = function (a, traditional) {\n var prefix,\n s = [],\n add = function (key, valueOrFunction) {\n // If value is a function, invoke it and use its return value\n var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;\n s[s.length] = encodeURIComponent(key) + \"=\" + encodeURIComponent(value == null ? \"\" : value);\n };\n if (a == null) {\n return \"\";\n }\n\n // If an array was passed in, assume that it is an array of form elements.\n if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {\n // Serialize the form elements\n jQuery.each(a, function () {\n add(this.name, this.value);\n });\n } else {\n // If traditional, encode the \"old\" way (the way 1.3.2 or older\n // did it), otherwise encode params recursively.\n for (prefix in a) {\n buildParams(prefix, a[prefix], traditional, add);\n }\n }\n\n // Return the resulting serialization\n return s.join(\"&\");\n };\n jQuery.fn.extend({\n serialize: function () {\n return jQuery.param(this.serializeArray());\n },\n serializeArray: function () {\n return this.map(function () {\n // Can add propHook for \"elements\" to filter or add form elements\n var elements = jQuery.prop(this, \"elements\");\n return elements ? jQuery.makeArray(elements) : this;\n }).filter(function () {\n var type = this.type;\n\n // Use .is( \":disabled\" ) so that fieldset[disabled] works\n return this.name && !jQuery(this).is(\":disabled\") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));\n }).map(function (_i, elem) {\n var val = jQuery(this).val();\n if (val == null) {\n return null;\n }\n if (Array.isArray(val)) {\n return jQuery.map(val, function (val) {\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n });\n }\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n }).get();\n }\n });\n var r20 = /%20/g,\n rhash = /#.*$/,\n rantiCache = /([?&])_=[^&]*/,\n rheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n // trac-7653, trac-8125, trac-8152: local protocol detection\n rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n rnoContent = /^(?:GET|HEAD)$/,\n rprotocol = /^\\/\\//,\n /* Prefilters\n * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n * 2) These are called:\n * - BEFORE asking for a transport\n * - AFTER param serialization (s.data is a string if s.processData is true)\n * 3) key is the dataType\n * 4) the catchall symbol \"*\" can be used\n * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n */\n prefilters = {},\n /* Transports bindings\n * 1) key is the dataType\n * 2) the catchall symbol \"*\" can be used\n * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n */\n transports = {},\n // Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n allTypes = \"*/\".concat(\"*\"),\n // Anchor tag for parsing the document origin\n originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href;\n\n // Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n function addToPrefiltersOrTransports(structure) {\n // dataTypeExpression is optional and defaults to \"*\"\n return function (dataTypeExpression, func) {\n if (typeof dataTypeExpression !== \"string\") {\n func = dataTypeExpression;\n dataTypeExpression = \"*\";\n }\n var dataType,\n i = 0,\n dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];\n if (isFunction(func)) {\n // For each dataType in the dataTypeExpression\n while (dataType = dataTypes[i++]) {\n // Prepend if requested\n if (dataType[0] === \"+\") {\n dataType = dataType.slice(1) || \"*\";\n (structure[dataType] = structure[dataType] || []).unshift(func);\n\n // Otherwise append\n } else {\n (structure[dataType] = structure[dataType] || []).push(func);\n }\n }\n }\n };\n }\n\n // Base inspection function for prefilters and transports\n function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {\n var inspected = {},\n seekingTransport = structure === transports;\n function inspect(dataType) {\n var selected;\n inspected[dataType] = true;\n jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {\n var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);\n if (typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[dataTypeOrTransport]) {\n options.dataTypes.unshift(dataTypeOrTransport);\n inspect(dataTypeOrTransport);\n return false;\n } else if (seekingTransport) {\n return !(selected = dataTypeOrTransport);\n }\n });\n return selected;\n }\n return inspect(options.dataTypes[0]) || !inspected[\"*\"] && inspect(\"*\");\n }\n\n // A special extend for ajax options\n // that takes \"flat\" options (not to be deep extended)\n // Fixes trac-9887\n function ajaxExtend(target, src) {\n var key,\n deep,\n flatOptions = jQuery.ajaxSettings.flatOptions || {};\n for (key in src) {\n if (src[key] !== undefined) {\n (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];\n }\n }\n if (deep) {\n jQuery.extend(true, target, deep);\n }\n return 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 */\n function ajaxHandleResponses(s, jqXHR, responses) {\n var ct,\n type,\n finalDataType,\n firstDataType,\n contents = s.contents,\n dataTypes = s.dataTypes;\n\n // Remove auto dataType and get content-type in the process\n while (dataTypes[0] === \"*\") {\n dataTypes.shift();\n if (ct === undefined) {\n ct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n }\n }\n\n // Check if we're dealing with a known content-type\n if (ct) {\n for (type in contents) {\n if (contents[type] && contents[type].test(ct)) {\n dataTypes.unshift(type);\n break;\n }\n }\n }\n\n // Check to see if we have a response for the expected dataType\n if (dataTypes[0] in responses) {\n finalDataType = dataTypes[0];\n } else {\n // Try convertible dataTypes\n for (type in responses) {\n if (!dataTypes[0] || s.converters[type + \" \" + dataTypes[0]]) {\n finalDataType = type;\n break;\n }\n if (!firstDataType) {\n firstDataType = type;\n }\n }\n\n // Or just use first one\n finalDataType = finalDataType || firstDataType;\n }\n\n // If we found a dataType\n // We add the dataType to the list if needed\n // and return the corresponding response\n if (finalDataType) {\n if (finalDataType !== dataTypes[0]) {\n dataTypes.unshift(finalDataType);\n }\n return responses[finalDataType];\n }\n }\n\n /* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\n function ajaxConvert(s, response, jqXHR, isSuccess) {\n var conv2,\n current,\n conv,\n tmp,\n prev,\n converters = {},\n // Work with a copy of dataTypes in case we need to modify it for conversion\n dataTypes = s.dataTypes.slice();\n\n // Create converters map with lowercased keys\n if (dataTypes[1]) {\n for (conv in s.converters) {\n converters[conv.toLowerCase()] = s.converters[conv];\n }\n }\n current = dataTypes.shift();\n\n // Convert to each sequential dataType\n while (current) {\n if (s.responseFields[current]) {\n jqXHR[s.responseFields[current]] = response;\n }\n\n // Apply the dataFilter if provided\n if (!prev && isSuccess && s.dataFilter) {\n response = s.dataFilter(response, s.dataType);\n }\n prev = current;\n current = dataTypes.shift();\n if (current) {\n // There's only work to do if current dataType is non-auto\n if (current === \"*\") {\n current = prev;\n\n // Convert response if prev dataType is non-auto and differs from current\n } else if (prev !== \"*\" && prev !== current) {\n // Seek a direct converter\n conv = converters[prev + \" \" + current] || converters[\"* \" + current];\n\n // If none found, seek a pair\n if (!conv) {\n for (conv2 in converters) {\n // If conv2 outputs current\n tmp = conv2.split(\" \");\n if (tmp[1] === current) {\n // If prev can be converted to accepted input\n conv = converters[prev + \" \" + tmp[0]] || converters[\"* \" + tmp[0]];\n if (conv) {\n // Condense equivalence converters\n if (conv === true) {\n conv = converters[conv2];\n\n // Otherwise, insert the intermediate dataType\n } else if (converters[conv2] !== true) {\n current = tmp[0];\n dataTypes.unshift(tmp[1]);\n }\n break;\n }\n }\n }\n }\n\n // Apply converter (if not an equivalence)\n if (conv !== true) {\n // Unless errors are allowed to bubble, catch and return them\n if (conv && s.throws) {\n response = conv(response);\n } else {\n try {\n response = conv(response);\n } catch (e) {\n return {\n state: \"parsererror\",\n error: conv ? e : \"No conversion from \" + prev + \" to \" + current\n };\n }\n }\n }\n }\n }\n }\n return {\n state: \"success\",\n data: response\n };\n }\n jQuery.extend({\n // Counter for holding the number of active queries\n active: 0,\n // Last-Modified header cache for next request\n lastModified: {},\n etag: {},\n ajaxSettings: {\n url: location.href,\n type: \"GET\",\n isLocal: rlocalProtocol.test(location.protocol),\n global: true,\n processData: true,\n async: true,\n contentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n /*\n timeout: 0,\n data: null,\n dataType: null,\n username: null,\n password: null,\n cache: null,\n throws: false,\n traditional: false,\n headers: {},\n */\n\n accepts: {\n \"*\": allTypes,\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\"\n },\n contents: {\n xml: /\\bxml\\b/,\n html: /\\bhtml/,\n json: /\\bjson\\b/\n },\n responseFields: {\n xml: \"responseXML\",\n text: \"responseText\",\n json: \"responseJSON\"\n },\n // Data converters\n // Keys separate source (or catchall \"*\") and destination types with a single space\n converters: {\n // Convert anything to text\n \"* text\": String,\n // Text to html (true = no transformation)\n \"text html\": true,\n // Evaluate text as a json expression\n \"text json\": JSON.parse,\n // Parse text as xml\n \"text xml\": jQuery.parseXML\n },\n // For options that shouldn't be deep extended:\n // you can add your own custom options here if\n // and when you create one that shouldn't be\n // deep extended (see ajaxExtend)\n flatOptions: {\n url: true,\n context: true\n }\n },\n // Creates a full fledged settings object into target\n // with both ajaxSettings and settings fields.\n // If target is omitted, writes into ajaxSettings.\n ajaxSetup: function (target, settings) {\n return settings ?\n // Building a settings object\n ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) :\n // Extending ajaxSettings\n ajaxExtend(jQuery.ajaxSettings, target);\n },\n ajaxPrefilter: addToPrefiltersOrTransports(prefilters),\n ajaxTransport: addToPrefiltersOrTransports(transports),\n // Main method\n ajax: function (url, options) {\n // If url is an object, simulate pre-1.5 signature\n if (typeof url === \"object\") {\n options = url;\n url = undefined;\n }\n\n // Force options to be an object\n options = options || {};\n var transport,\n // URL without anti-cache param\n cacheURL,\n // Response headers\n responseHeadersString,\n responseHeaders,\n // timeout handle\n timeoutTimer,\n // Url cleanup var\n urlAnchor,\n // Request state (becomes false upon send and true upon completion)\n completed,\n // To know if global events are to be dispatched\n fireGlobals,\n // Loop variable\n i,\n // uncached part of the url\n uncached,\n // Create the final options object\n s = jQuery.ajaxSetup({}, options),\n // Callbacks context\n callbackContext = s.context || s,\n // Context for global events is callbackContext if it is a DOM node or jQuery collection\n globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,\n // Deferreds\n deferred = jQuery.Deferred(),\n completeDeferred = jQuery.Callbacks(\"once memory\"),\n // Status-dependent callbacks\n statusCode = s.statusCode || {},\n // Headers (they are sent all at once)\n requestHeaders = {},\n requestHeadersNames = {},\n // Default abort message\n strAbort = \"canceled\",\n // Fake xhr\n jqXHR = {\n readyState: 0,\n // Builds headers hashtable if needed\n getResponseHeader: function (key) {\n var match;\n if (completed) {\n if (!responseHeaders) {\n responseHeaders = {};\n while (match = rheaders.exec(responseHeadersString)) {\n responseHeaders[match[1].toLowerCase() + \" \"] = (responseHeaders[match[1].toLowerCase() + \" \"] || []).concat(match[2]);\n }\n }\n match = responseHeaders[key.toLowerCase() + \" \"];\n }\n return match == null ? null : match.join(\", \");\n },\n // Raw string\n getAllResponseHeaders: function () {\n return completed ? responseHeadersString : null;\n },\n // Caches the header\n setRequestHeader: function (name, value) {\n if (completed == null) {\n name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name;\n requestHeaders[name] = value;\n }\n return this;\n },\n // Overrides response content-type header\n overrideMimeType: function (type) {\n if (completed == null) {\n s.mimeType = type;\n }\n return this;\n },\n // Status-dependent callbacks\n statusCode: function (map) {\n var code;\n if (map) {\n if (completed) {\n // Execute the appropriate callbacks\n jqXHR.always(map[jqXHR.status]);\n } else {\n // Lazy-add the new callbacks in a way that preserves old ones\n for (code in map) {\n statusCode[code] = [statusCode[code], map[code]];\n }\n }\n }\n return this;\n },\n // Cancel the request\n abort: function (statusText) {\n var finalText = statusText || strAbort;\n if (transport) {\n transport.abort(finalText);\n }\n done(0, finalText);\n return this;\n }\n };\n\n // Attach deferreds\n deferred.promise(jqXHR);\n\n // Add protocol if not provided (prefilters might expect it)\n // Handle falsy url in the settings object (trac-10093: consistency with old signature)\n // We also use the url parameter if available\n s.url = ((url || s.url || location.href) + \"\").replace(rprotocol, location.protocol + \"//\");\n\n // Alias method option to type as per ticket trac-12004\n s.type = options.method || options.type || s.method || s.type;\n\n // Extract dataTypes list\n s.dataTypes = (s.dataType || \"*\").toLowerCase().match(rnothtmlwhite) || [\"\"];\n\n // A cross-domain request is in order when the origin doesn't match the current origin.\n if (s.crossDomain == null) {\n urlAnchor = document.createElement(\"a\");\n\n // Support: IE <=8 - 11, Edge 12 - 15\n // IE throws exception on accessing the href property if url is malformed,\n // e.g. http://example.com:80x/\n try {\n urlAnchor.href = s.url;\n\n // Support: IE <=8 - 11 only\n // Anchor's host property isn't correctly set when s.url is relative\n urlAnchor.href = urlAnchor.href;\n s.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !== urlAnchor.protocol + \"//\" + urlAnchor.host;\n } catch (e) {\n // If there is an error parsing the URL, assume it is crossDomain,\n // it can be rejected by the transport if it is invalid\n s.crossDomain = true;\n }\n }\n\n // Convert data if not already a string\n if (s.data && s.processData && typeof s.data !== \"string\") {\n s.data = jQuery.param(s.data, s.traditional);\n }\n\n // Apply prefilters\n inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);\n\n // If request was aborted inside a prefilter, stop there\n if (completed) {\n return jqXHR;\n }\n\n // We can fire global events as of now if asked to\n // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n fireGlobals = jQuery.event && s.global;\n\n // Watch for a new set of requests\n if (fireGlobals && jQuery.active++ === 0) {\n jQuery.event.trigger(\"ajaxStart\");\n }\n\n // Uppercase the type\n s.type = s.type.toUpperCase();\n\n // Determine if request has content\n s.hasContent = !rnoContent.test(s.type);\n\n // Save the URL in case we're toying with the If-Modified-Since\n // and/or If-None-Match header later on\n // Remove hash to simplify url manipulation\n cacheURL = s.url.replace(rhash, \"\");\n\n // More options handling for requests with no content\n if (!s.hasContent) {\n // Remember the hash so we can put it back\n uncached = s.url.slice(cacheURL.length);\n\n // If data is available and should be processed, append data to url\n if (s.data && (s.processData || typeof s.data === \"string\")) {\n cacheURL += (rquery.test(cacheURL) ? \"&\" : \"?\") + s.data;\n\n // trac-9682: remove data so that it's not used in an eventual retry\n delete s.data;\n }\n\n // Add or update anti-cache param if needed\n if (s.cache === false) {\n cacheURL = cacheURL.replace(rantiCache, \"$1\");\n uncached = (rquery.test(cacheURL) ? \"&\" : \"?\") + \"_=\" + nonce.guid++ + uncached;\n }\n\n // Put hash and anti-cache on the URL that will be requested (gh-1732)\n s.url = cacheURL + uncached;\n\n // Change '%20' to '+' if this is encoded form body content (gh-2658)\n } else if (s.data && s.processData && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0) {\n s.data = s.data.replace(r20, \"+\");\n }\n\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n if (jQuery.lastModified[cacheURL]) {\n jqXHR.setRequestHeader(\"If-Modified-Since\", jQuery.lastModified[cacheURL]);\n }\n if (jQuery.etag[cacheURL]) {\n jqXHR.setRequestHeader(\"If-None-Match\", jQuery.etag[cacheURL]);\n }\n }\n\n // Set the correct header, if data is being sent\n if (s.data && s.hasContent && s.contentType !== false || options.contentType) {\n jqXHR.setRequestHeader(\"Content-Type\", s.contentType);\n }\n\n // Set the Accepts header for the server, depending on the dataType\n jqXHR.setRequestHeader(\"Accept\", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\") : s.accepts[\"*\"]);\n\n // Check for headers option\n for (i in s.headers) {\n jqXHR.setRequestHeader(i, s.headers[i]);\n }\n\n // Allow custom headers/mimetypes and early abort\n if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed)) {\n // Abort if not done already and return\n return jqXHR.abort();\n }\n\n // Aborting is no longer a cancellation\n strAbort = \"abort\";\n\n // Install callbacks on deferreds\n completeDeferred.add(s.complete);\n jqXHR.done(s.success);\n jqXHR.fail(s.error);\n\n // Get transport\n transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR);\n\n // If no transport, we auto-abort\n if (!transport) {\n done(-1, \"No Transport\");\n } else {\n jqXHR.readyState = 1;\n\n // Send global event\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxSend\", [jqXHR, s]);\n }\n\n // If request was aborted inside ajaxSend, stop there\n if (completed) {\n return jqXHR;\n }\n\n // Timeout\n if (s.async && s.timeout > 0) {\n timeoutTimer = window.setTimeout(function () {\n jqXHR.abort(\"timeout\");\n }, s.timeout);\n }\n try {\n completed = false;\n transport.send(requestHeaders, done);\n } catch (e) {\n // Rethrow post-completion exceptions\n if (completed) {\n throw e;\n }\n\n // Propagate others as results\n done(-1, e);\n }\n }\n\n // Callback for when everything is done\n function done(status, nativeStatusText, responses, headers) {\n var isSuccess,\n success,\n error,\n response,\n modified,\n statusText = nativeStatusText;\n\n // Ignore repeat invocations\n if (completed) {\n return;\n }\n completed = true;\n\n // Clear timeout if it exists\n if (timeoutTimer) {\n window.clearTimeout(timeoutTimer);\n }\n\n // Dereference transport for early garbage collection\n // (no matter how long the jqXHR object will be used)\n transport = undefined;\n\n // Cache response headers\n responseHeadersString = headers || \"\";\n\n // Set readyState\n jqXHR.readyState = status > 0 ? 4 : 0;\n\n // Determine if successful\n isSuccess = status >= 200 && status < 300 || status === 304;\n\n // Get response data\n if (responses) {\n response = ajaxHandleResponses(s, jqXHR, responses);\n }\n\n // Use a noop converter for missing script but not if jsonp\n if (!isSuccess && jQuery.inArray(\"script\", s.dataTypes) > -1 && jQuery.inArray(\"json\", s.dataTypes) < 0) {\n s.converters[\"text script\"] = function () {};\n }\n\n // Convert no matter what (that way responseXXX fields are always set)\n response = ajaxConvert(s, response, jqXHR, isSuccess);\n\n // If successful, handle type chaining\n if (isSuccess) {\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n modified = jqXHR.getResponseHeader(\"Last-Modified\");\n if (modified) {\n jQuery.lastModified[cacheURL] = modified;\n }\n modified = jqXHR.getResponseHeader(\"etag\");\n if (modified) {\n jQuery.etag[cacheURL] = modified;\n }\n }\n\n // if no content\n if (status === 204 || s.type === \"HEAD\") {\n statusText = \"nocontent\";\n\n // if not modified\n } else if (status === 304) {\n statusText = \"notmodified\";\n\n // If we have data, let's convert it\n } else {\n statusText = response.state;\n success = response.data;\n error = response.error;\n isSuccess = !error;\n }\n } else {\n // Extract error from statusText and normalize for non-aborts\n error = statusText;\n if (status || !statusText) {\n statusText = \"error\";\n if (status < 0) {\n status = 0;\n }\n }\n }\n\n // Set data for the fake xhr object\n jqXHR.status = status;\n jqXHR.statusText = (nativeStatusText || statusText) + \"\";\n\n // Success/Error\n if (isSuccess) {\n deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);\n } else {\n deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);\n }\n\n // Status-dependent callbacks\n jqXHR.statusCode(statusCode);\n statusCode = undefined;\n if (fireGlobals) {\n globalEventContext.trigger(isSuccess ? \"ajaxSuccess\" : \"ajaxError\", [jqXHR, s, isSuccess ? success : error]);\n }\n\n // Complete\n completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxComplete\", [jqXHR, s]);\n\n // Handle the global AJAX counter\n if (! --jQuery.active) {\n jQuery.event.trigger(\"ajaxStop\");\n }\n }\n }\n return jqXHR;\n },\n getJSON: function (url, data, callback) {\n return jQuery.get(url, data, callback, \"json\");\n },\n getScript: function (url, callback) {\n return jQuery.get(url, undefined, callback, \"script\");\n }\n });\n jQuery.each([\"get\", \"post\"], function (_i, method) {\n jQuery[method] = function (url, data, callback, type) {\n // Shift arguments if data argument was omitted\n if (isFunction(data)) {\n type = type || callback;\n callback = data;\n data = undefined;\n }\n\n // The url can be an options object (which then must have .url)\n return jQuery.ajax(jQuery.extend({\n url: url,\n type: method,\n dataType: type,\n data: data,\n success: callback\n }, jQuery.isPlainObject(url) && url));\n };\n });\n jQuery.ajaxPrefilter(function (s) {\n var i;\n for (i in s.headers) {\n if (i.toLowerCase() === \"content-type\") {\n s.contentType = s.headers[i] || \"\";\n }\n }\n });\n jQuery._evalUrl = function (url, options, doc) {\n return jQuery.ajax({\n url: url,\n // Make this explicit, since user can override this through ajaxSetup (trac-11264)\n type: \"GET\",\n dataType: \"script\",\n cache: true,\n async: false,\n global: false,\n // Only evaluate the response if it is successful (gh-4126)\n // dataFilter is not invoked for failure responses, so using it instead\n // of the default converter is kludgy but it works.\n converters: {\n \"text script\": function () {}\n },\n dataFilter: function (response) {\n jQuery.globalEval(response, options, doc);\n }\n });\n };\n jQuery.fn.extend({\n wrapAll: function (html) {\n var wrap;\n if (this[0]) {\n if (isFunction(html)) {\n html = html.call(this[0]);\n }\n\n // The elements to wrap the target around\n wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);\n if (this[0].parentNode) {\n wrap.insertBefore(this[0]);\n }\n wrap.map(function () {\n var elem = this;\n while (elem.firstElementChild) {\n elem = elem.firstElementChild;\n }\n return elem;\n }).append(this);\n }\n return this;\n },\n wrapInner: function (html) {\n if (isFunction(html)) {\n return this.each(function (i) {\n jQuery(this).wrapInner(html.call(this, i));\n });\n }\n return this.each(function () {\n var self = jQuery(this),\n contents = self.contents();\n if (contents.length) {\n contents.wrapAll(html);\n } else {\n self.append(html);\n }\n });\n },\n wrap: function (html) {\n var htmlIsFunction = isFunction(html);\n return this.each(function (i) {\n jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i) : html);\n });\n },\n unwrap: function (selector) {\n this.parent(selector).not(\"body\").each(function () {\n jQuery(this).replaceWith(this.childNodes);\n });\n return this;\n }\n });\n jQuery.expr.pseudos.hidden = function (elem) {\n return !jQuery.expr.pseudos.visible(elem);\n };\n jQuery.expr.pseudos.visible = function (elem) {\n return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n };\n jQuery.ajaxSettings.xhr = function () {\n try {\n return new window.XMLHttpRequest();\n } catch (e) {}\n };\n var xhrSuccessStatus = {\n // File protocol always yields status code 0, assume 200\n 0: 200,\n // Support: IE <=9 only\n // trac-1450: sometimes IE returns 1223 when it should be 204\n 1223: 204\n },\n xhrSupported = jQuery.ajaxSettings.xhr();\n support.cors = !!xhrSupported && \"withCredentials\" in xhrSupported;\n support.ajax = xhrSupported = !!xhrSupported;\n jQuery.ajaxTransport(function (options) {\n var callback, errorCallback;\n\n // Cross domain only allowed if supported through XMLHttpRequest\n if (support.cors || xhrSupported && !options.crossDomain) {\n return {\n send: function (headers, complete) {\n var i,\n xhr = options.xhr();\n xhr.open(options.type, options.url, options.async, options.username, options.password);\n\n // Apply custom fields if provided\n if (options.xhrFields) {\n for (i in options.xhrFields) {\n xhr[i] = options.xhrFields[i];\n }\n }\n\n // Override mime type if needed\n if (options.mimeType && xhr.overrideMimeType) {\n xhr.overrideMimeType(options.mimeType);\n }\n\n // X-Requested-With header\n // For cross-domain requests, seeing as conditions for a preflight are\n // akin to a jigsaw puzzle, we simply never set it to be sure.\n // (it can always be set on a per-request basis or even using ajaxSetup)\n // For same-domain requests, won't change header if already provided.\n if (!options.crossDomain && !headers[\"X-Requested-With\"]) {\n headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n }\n\n // Set headers\n for (i in headers) {\n xhr.setRequestHeader(i, headers[i]);\n }\n\n // Callback\n callback = function (type) {\n return function () {\n if (callback) {\n callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;\n if (type === \"abort\") {\n xhr.abort();\n } else if (type === \"error\") {\n // Support: IE <=9 only\n // On a manual native abort, IE9 throws\n // errors on any property access that is not readyState\n if (typeof xhr.status !== \"number\") {\n complete(0, \"error\");\n } else {\n complete(\n // File: protocol always yields status 0; see trac-8605, trac-14207\n xhr.status, xhr.statusText);\n }\n } else {\n complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText,\n // Support: IE <=9 only\n // IE9 has no XHR2 but throws on binary (trac-11426)\n // For XHR2 non-text, let the caller handle it (gh-2498)\n (xhr.responseType || \"text\") !== \"text\" || typeof xhr.responseText !== \"string\" ? {\n binary: xhr.response\n } : {\n text: xhr.responseText\n }, xhr.getAllResponseHeaders());\n }\n }\n };\n };\n\n // Listen to events\n xhr.onload = callback();\n errorCallback = xhr.onerror = xhr.ontimeout = callback(\"error\");\n\n // Support: IE 9 only\n // Use onreadystatechange to replace onabort\n // to handle uncaught aborts\n if (xhr.onabort !== undefined) {\n xhr.onabort = errorCallback;\n } else {\n xhr.onreadystatechange = function () {\n // Check readyState before timeout as it changes\n if (xhr.readyState === 4) {\n // Allow onerror to be called first,\n // but that will not handle a native abort\n // Also, save errorCallback to a variable\n // as xhr.onerror cannot be accessed\n window.setTimeout(function () {\n if (callback) {\n errorCallback();\n }\n });\n }\n };\n }\n\n // Create the abort callback\n callback = callback(\"abort\");\n try {\n // Do send the request (this may raise an exception)\n xhr.send(options.hasContent && options.data || null);\n } catch (e) {\n // trac-14683: Only rethrow if this hasn't been notified as an error yet\n if (callback) {\n throw e;\n }\n }\n },\n abort: function () {\n if (callback) {\n callback();\n }\n }\n };\n }\n });\n\n // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\n jQuery.ajaxPrefilter(function (s) {\n if (s.crossDomain) {\n s.contents.script = false;\n }\n });\n\n // Install script dataType\n jQuery.ajaxSetup({\n accepts: {\n script: \"text/javascript, application/javascript, \" + \"application/ecmascript, application/x-ecmascript\"\n },\n contents: {\n script: /\\b(?:java|ecma)script\\b/\n },\n converters: {\n \"text script\": function (text) {\n jQuery.globalEval(text);\n return text;\n }\n }\n });\n\n // Handle cache's special case and crossDomain\n jQuery.ajaxPrefilter(\"script\", function (s) {\n if (s.cache === undefined) {\n s.cache = false;\n }\n if (s.crossDomain) {\n s.type = \"GET\";\n }\n });\n\n // Bind script tag hack transport\n jQuery.ajaxTransport(\"script\", function (s) {\n // This transport only deals with cross domain or forced-by-attrs requests\n if (s.crossDomain || s.scriptAttrs) {\n var script, callback;\n return {\n send: function (_, complete) {\n script = jQuery(\"<script>\").attr(s.scriptAttrs || {}).prop({\n charset: s.scriptCharset,\n src: s.url\n }).on(\"load error\", callback = function (evt) {\n script.remove();\n callback = null;\n if (evt) {\n complete(evt.type === \"error\" ? 404 : 200, evt.type);\n }\n });\n\n // Use native DOM manipulation to avoid our domManip AJAX trickery\n document.head.appendChild(script[0]);\n },\n abort: function () {\n if (callback) {\n callback();\n }\n }\n };\n }\n });\n var oldCallbacks = [],\n rjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n // Default jsonp settings\n jQuery.ajaxSetup({\n jsonp: \"callback\",\n jsonpCallback: function () {\n var callback = oldCallbacks.pop() || jQuery.expando + \"_\" + nonce.guid++;\n this[callback] = true;\n return callback;\n }\n });\n\n // Detect, normalize options and install callbacks for jsonp requests\n jQuery.ajaxPrefilter(\"json jsonp\", function (s, originalSettings, jqXHR) {\n var callbackName,\n overwritten,\n responseContainer,\n jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? \"url\" : typeof s.data === \"string\" && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0 && rjsonp.test(s.data) && \"data\");\n\n // Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n if (jsonProp || s.dataTypes[0] === \"jsonp\") {\n // Get callback name, remembering preexisting value associated with it\n callbackName = s.jsonpCallback = isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback;\n\n // Insert callback into url or form data\n if (jsonProp) {\n s[jsonProp] = s[jsonProp].replace(rjsonp, \"$1\" + callbackName);\n } else if (s.jsonp !== false) {\n s.url += (rquery.test(s.url) ? \"&\" : \"?\") + s.jsonp + \"=\" + callbackName;\n }\n\n // Use data converter to retrieve json after script execution\n s.converters[\"script json\"] = function () {\n if (!responseContainer) {\n jQuery.error(callbackName + \" was not called\");\n }\n return responseContainer[0];\n };\n\n // Force json dataType\n s.dataTypes[0] = \"json\";\n\n // Install callback\n overwritten = window[callbackName];\n window[callbackName] = function () {\n responseContainer = arguments;\n };\n\n // Clean-up function (fires after converters)\n jqXHR.always(function () {\n // If previous value didn't exist - remove it\n if (overwritten === undefined) {\n jQuery(window).removeProp(callbackName);\n\n // Otherwise restore preexisting value\n } else {\n window[callbackName] = overwritten;\n }\n\n // Save back as free\n if (s[callbackName]) {\n // Make sure that re-using the options doesn't screw things around\n s.jsonpCallback = originalSettings.jsonpCallback;\n\n // Save the callback name for future use\n oldCallbacks.push(callbackName);\n }\n\n // Call if it was a function and we have a response\n if (responseContainer && isFunction(overwritten)) {\n overwritten(responseContainer[0]);\n }\n responseContainer = overwritten = undefined;\n });\n\n // Delegate to script\n return \"script\";\n }\n });\n\n // Support: Safari 8 only\n // In Safari 8 documents created via document.implementation.createHTMLDocument\n // collapse sibling forms: the second one becomes a child of the first one.\n // Because of that, this security measure has to be disabled in Safari 8.\n // https://bugs.webkit.org/show_bug.cgi?id=137337\n support.createHTMLDocument = function () {\n var body = document.implementation.createHTMLDocument(\"\").body;\n body.innerHTML = \"<form></form><form></form>\";\n return body.childNodes.length === 2;\n }();\n\n // Argument \"data\" should be string of html\n // context (optional): If specified, the fragment will be created in this context,\n // defaults to document\n // keepScripts (optional): If true, will include scripts passed in the html string\n jQuery.parseHTML = function (data, context, keepScripts) {\n if (typeof data !== \"string\") {\n return [];\n }\n if (typeof context === \"boolean\") {\n keepScripts = context;\n context = false;\n }\n var base, parsed, scripts;\n if (!context) {\n // Stop scripts or inline event handlers from being executed immediately\n // by using document.implementation\n if (support.createHTMLDocument) {\n context = document.implementation.createHTMLDocument(\"\");\n\n // Set the base href for the created document\n // so any parsed elements with URLs\n // are based on the document's URL (gh-2965)\n base = context.createElement(\"base\");\n base.href = document.location.href;\n context.head.appendChild(base);\n } else {\n context = document;\n }\n }\n parsed = rsingleTag.exec(data);\n scripts = !keepScripts && [];\n\n // Single tag\n if (parsed) {\n return [context.createElement(parsed[1])];\n }\n parsed = buildFragment([data], context, scripts);\n if (scripts && scripts.length) {\n jQuery(scripts).remove();\n }\n return jQuery.merge([], parsed.childNodes);\n };\n\n /**\n * Load a url into a page\n */\n jQuery.fn.load = function (url, params, callback) {\n var selector,\n type,\n response,\n self = this,\n off = url.indexOf(\" \");\n if (off > -1) {\n selector = stripAndCollapse(url.slice(off));\n url = url.slice(0, off);\n }\n\n // If it's a function\n if (isFunction(params)) {\n // We assume that it's the callback\n callback = params;\n params = undefined;\n\n // Otherwise, build a param string\n } else if (params && typeof params === \"object\") {\n type = \"POST\";\n }\n\n // If we have elements to modify, make the request\n if (self.length > 0) {\n jQuery.ajax({\n url: url,\n // If \"type\" variable is undefined, then \"GET\" method will be used.\n // Make value of this field explicit since\n // user can override it through ajaxSetup method\n type: type || \"GET\",\n dataType: \"html\",\n data: params\n }).done(function (responseText) {\n // Save response for use in complete callback\n response = arguments;\n self.html(selector ?\n // If a selector was specified, locate the right elements in a dummy div\n // Exclude scripts to avoid IE 'Permission Denied' errors\n jQuery(\"<div>\").append(jQuery.parseHTML(responseText)).find(selector) :\n // Otherwise use the full result\n responseText);\n\n // If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n // but they are ignored because response was set above.\n // If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n }).always(callback && function (jqXHR, status) {\n self.each(function () {\n callback.apply(this, response || [jqXHR.responseText, status, jqXHR]);\n });\n });\n }\n return this;\n };\n jQuery.expr.pseudos.animated = function (elem) {\n return jQuery.grep(jQuery.timers, function (fn) {\n return elem === fn.elem;\n }).length;\n };\n jQuery.offset = {\n setOffset: function (elem, options, i) {\n var curPosition,\n curLeft,\n curCSSTop,\n curTop,\n curOffset,\n curCSSLeft,\n calculatePosition,\n position = jQuery.css(elem, \"position\"),\n curElem = jQuery(elem),\n props = {};\n\n // Set position first, in-case top/left are set even on static elem\n if (position === \"static\") {\n elem.style.position = \"relative\";\n }\n curOffset = curElem.offset();\n curCSSTop = jQuery.css(elem, \"top\");\n curCSSLeft = jQuery.css(elem, \"left\");\n calculatePosition = (position === \"absolute\" || position === \"fixed\") && (curCSSTop + curCSSLeft).indexOf(\"auto\") > -1;\n\n // Need to be able to calculate position if either\n // top or left is auto and position is either absolute or fixed\n if (calculatePosition) {\n curPosition = curElem.position();\n curTop = curPosition.top;\n curLeft = curPosition.left;\n } else {\n curTop = parseFloat(curCSSTop) || 0;\n curLeft = parseFloat(curCSSLeft) || 0;\n }\n if (isFunction(options)) {\n // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n options = options.call(elem, i, jQuery.extend({}, curOffset));\n }\n if (options.top != null) {\n props.top = options.top - curOffset.top + curTop;\n }\n if (options.left != null) {\n props.left = options.left - curOffset.left + curLeft;\n }\n if (\"using\" in options) {\n options.using.call(elem, props);\n } else {\n curElem.css(props);\n }\n }\n };\n jQuery.fn.extend({\n // offset() relates an element's border box to the document origin\n offset: function (options) {\n // Preserve chaining for setter\n if (arguments.length) {\n return options === undefined ? this : this.each(function (i) {\n jQuery.offset.setOffset(this, options, i);\n });\n }\n var rect,\n win,\n elem = this[0];\n if (!elem) {\n return;\n }\n\n // Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n // Support: IE <=11 only\n // Running getBoundingClientRect on a\n // disconnected node in IE throws an error\n if (!elem.getClientRects().length) {\n return {\n top: 0,\n left: 0\n };\n }\n\n // Get document-relative position by adding viewport scroll to viewport-relative gBCR\n rect = elem.getBoundingClientRect();\n win = elem.ownerDocument.defaultView;\n return {\n top: rect.top + win.pageYOffset,\n left: rect.left + win.pageXOffset\n };\n },\n // position() relates an element's margin box to its offset parent's padding box\n // This corresponds to the behavior of CSS absolute positioning\n position: function () {\n if (!this[0]) {\n return;\n }\n var offsetParent,\n offset,\n doc,\n elem = this[0],\n parentOffset = {\n top: 0,\n left: 0\n };\n\n // position:fixed elements are offset from the viewport, which itself always has zero offset\n if (jQuery.css(elem, \"position\") === \"fixed\") {\n // Assume position:fixed implies availability of getBoundingClientRect\n offset = elem.getBoundingClientRect();\n } else {\n offset = this.offset();\n\n // Account for the *real* offset parent, which can be the document or its root element\n // when a statically positioned element is identified\n doc = elem.ownerDocument;\n offsetParent = elem.offsetParent || doc.documentElement;\n while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && jQuery.css(offsetParent, \"position\") === \"static\") {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n // Incorporate borders into its offset, since they are outside its content origin\n parentOffset = jQuery(offsetParent).offset();\n parentOffset.top += jQuery.css(offsetParent, \"borderTopWidth\", true);\n parentOffset.left += jQuery.css(offsetParent, \"borderLeftWidth\", true);\n }\n }\n\n // Subtract parent offsets and element margins\n return {\n top: offset.top - parentOffset.top - jQuery.css(elem, \"marginTop\", true),\n left: offset.left - parentOffset.left - jQuery.css(elem, \"marginLeft\", true)\n };\n },\n // This method will return documentElement in the following cases:\n // 1) For the element inside the iframe without offsetParent, this method will return\n // documentElement of the parent window\n // 2) For the hidden or detached element\n // 3) For body or html element, i.e. in case of the html node - it will return itself\n //\n // but those exceptions were never presented as a real life use-cases\n // and might be considered as more preferable results.\n //\n // This logic, however, is not guaranteed and can change at any point in the future\n offsetParent: function () {\n return this.map(function () {\n var offsetParent = this.offsetParent;\n while (offsetParent && jQuery.css(offsetParent, \"position\") === \"static\") {\n offsetParent = offsetParent.offsetParent;\n }\n return offsetParent || documentElement;\n });\n }\n });\n\n // Create scrollLeft and scrollTop methods\n jQuery.each({\n scrollLeft: \"pageXOffset\",\n scrollTop: \"pageYOffset\"\n }, function (method, prop) {\n var top = \"pageYOffset\" === prop;\n jQuery.fn[method] = function (val) {\n return access(this, function (elem, method, val) {\n // Coalesce documents and windows\n var win;\n if (isWindow(elem)) {\n win = elem;\n } else if (elem.nodeType === 9) {\n win = elem.defaultView;\n }\n if (val === undefined) {\n return win ? win[prop] : elem[method];\n }\n if (win) {\n win.scrollTo(!top ? val : win.pageXOffset, top ? val : win.pageYOffset);\n } else {\n elem[method] = val;\n }\n }, method, val, arguments.length);\n };\n });\n\n // Support: Safari <=7 - 9.1, Chrome <=37 - 49\n // Add the top/left cssHooks using jQuery.fn.position\n // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n // Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n // getComputedStyle returns percent when specified for top/left/bottom/right;\n // rather than make the css module depend on the offset module, just check for it here\n jQuery.each([\"top\", \"left\"], function (_i, prop) {\n jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function (elem, computed) {\n if (computed) {\n computed = curCSS(elem, prop);\n\n // If curCSS returns percentage, fallback to offset\n return rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + \"px\" : computed;\n }\n });\n });\n\n // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\n jQuery.each({\n Height: \"height\",\n Width: \"width\"\n }, function (name, type) {\n jQuery.each({\n padding: \"inner\" + name,\n content: type,\n \"\": \"outer\" + name\n }, function (defaultExtra, funcName) {\n // Margin is only for outerHeight, outerWidth\n jQuery.fn[funcName] = function (margin, value) {\n var chainable = arguments.length && (defaultExtra || typeof margin !== \"boolean\"),\n extra = defaultExtra || (margin === true || value === true ? \"margin\" : \"border\");\n return access(this, function (elem, type, value) {\n var doc;\n if (isWindow(elem)) {\n // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n return funcName.indexOf(\"outer\") === 0 ? elem[\"inner\" + name] : elem.document.documentElement[\"client\" + name];\n }\n\n // Get document width or height\n if (elem.nodeType === 9) {\n doc = elem.documentElement;\n\n // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n // whichever is greatest\n return Math.max(elem.body[\"scroll\" + name], doc[\"scroll\" + name], elem.body[\"offset\" + name], doc[\"offset\" + name], doc[\"client\" + name]);\n }\n return value === undefined ?\n // Get width or height on the element, requesting but not forcing parseFloat\n jQuery.css(elem, type, extra) :\n // Set width or height on the element\n jQuery.style(elem, type, value, extra);\n }, type, chainable ? margin : undefined, chainable);\n };\n });\n });\n jQuery.each([\"ajaxStart\", \"ajaxStop\", \"ajaxComplete\", \"ajaxError\", \"ajaxSuccess\", \"ajaxSend\"], function (_i, type) {\n jQuery.fn[type] = function (fn) {\n return this.on(type, fn);\n };\n });\n jQuery.fn.extend({\n bind: function (types, data, fn) {\n return this.on(types, null, data, fn);\n },\n unbind: function (types, fn) {\n return this.off(types, null, fn);\n },\n delegate: function (selector, types, data, fn) {\n return this.on(types, selector, data, fn);\n },\n undelegate: function (selector, types, fn) {\n // ( namespace ) or ( selector, types [, fn] )\n return arguments.length === 1 ? this.off(selector, \"**\") : this.off(types, selector || \"**\", fn);\n },\n hover: function (fnOver, fnOut) {\n return this.on(\"mouseenter\", fnOver).on(\"mouseleave\", fnOut || fnOver);\n }\n });\n jQuery.each((\"blur focus focusin focusout resize scroll click dblclick \" + \"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" + \"change select submit keydown keypress keyup contextmenu\").split(\" \"), function (_i, name) {\n // Handle event binding\n jQuery.fn[name] = function (data, fn) {\n return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);\n };\n });\n\n // Support: Android <=4.0 only\n // Make sure we trim BOM and NBSP\n // Require that the \"whitespace run\" starts from a non-whitespace\n // to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\n var rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n // Bind a function to a context, optionally partially applying any\n // arguments.\n // jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n // However, it is not slated for removal any time soon\n jQuery.proxy = function (fn, context) {\n var tmp, args, proxy;\n if (typeof context === \"string\") {\n tmp = fn[context];\n context = fn;\n fn = tmp;\n }\n\n // Quick check to determine if target is callable, in the spec\n // this throws a TypeError, but we will just return undefined.\n if (!isFunction(fn)) {\n return undefined;\n }\n\n // Simulated bind\n args = slice.call(arguments, 2);\n proxy = function () {\n return fn.apply(context || this, args.concat(slice.call(arguments)));\n };\n\n // Set the guid of unique handler to the same of original handler, so it can be removed\n proxy.guid = fn.guid = fn.guid || jQuery.guid++;\n return proxy;\n };\n jQuery.holdReady = function (hold) {\n if (hold) {\n jQuery.readyWait++;\n } else {\n jQuery.ready(true);\n }\n };\n jQuery.isArray = Array.isArray;\n jQuery.parseJSON = JSON.parse;\n jQuery.nodeName = nodeName;\n jQuery.isFunction = isFunction;\n jQuery.isWindow = isWindow;\n jQuery.camelCase = camelCase;\n jQuery.type = toType;\n jQuery.now = Date.now;\n jQuery.isNumeric = function (obj) {\n // As of jQuery 3.0, isNumeric is limited to\n // strings and numbers (primitives or objects)\n // that can be coerced to finite numbers (gh-2662)\n var type = jQuery.type(obj);\n return (type === \"number\" || type === \"string\") &&\n // parseFloat NaNs numeric-cast false positives (\"\")\n // ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n // subtraction forces infinities to NaN\n !isNaN(obj - parseFloat(obj));\n };\n jQuery.trim = function (text) {\n return text == null ? \"\" : (text + \"\").replace(rtrim, \"$1\");\n };\n\n // Register as a named AMD module, since jQuery can be concatenated with other\n // files that may use define, but not via a proper concatenation script that\n // understands anonymous AMD modules. A named AMD is safest and most robust\n // way to register. Lowercase jquery is used because AMD module names are\n // derived from file names, and jQuery is normally delivered in a lowercase\n // file name. Do this after creating the global so that if an AMD module wants\n // to call noConflict to hide this version of jQuery, it will work.\n\n // Note that for maximum portability, libraries that are not jQuery should\n // declare themselves as anonymous modules, and avoid setting a global if an\n // AMD loader is present. jQuery is a special case. For more information, see\n // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\n if (typeof define === \"function\" && define.amd) {\n define(\"jquery\", [], function () {\n return jQuery;\n });\n }\n var\n // Map over jQuery in case of overwrite\n _jQuery = window.jQuery,\n // Map over the $ in case of overwrite\n _$ = window.$;\n jQuery.noConflict = function (deep) {\n if (window.$ === jQuery) {\n window.$ = _$;\n }\n if (deep && window.jQuery === jQuery) {\n window.jQuery = _jQuery;\n }\n return jQuery;\n };\n\n // Expose jQuery and $ identifiers, even in AMD\n // (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n // and CommonJS for browser emulators (trac-13566)\n if (typeof noGlobal === \"undefined\") {\n window.jQuery = window.$ = jQuery;\n }\n return jQuery;\n});","/*\n * Toastr\n * Copyright 2012-2015\n * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.\n * All Rights Reserved.\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\n * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php\n *\n * ARIA Support: Greta Krafsig\n *\n * Project: https://github.com/CodeSeven/toastr\n */\n/* global define */\n(function (define) {\n define(['jquery'], function ($) {\n return function () {\n var $container;\n var listener;\n var toastId = 0;\n var toastType = {\n error: 'error',\n info: 'info',\n success: 'success',\n warning: 'warning'\n };\n var toastr = {\n clear: clear,\n remove: remove,\n error: error,\n getContainer: getContainer,\n info: info,\n options: {},\n subscribe: subscribe,\n success: success,\n version: '2.1.4',\n warning: warning\n };\n var previousToast;\n return toastr;\n\n ////////////////\n\n function error(message, title, optionsOverride) {\n return notify({\n type: toastType.error,\n iconClass: getOptions().iconClasses.error,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n function getContainer(options, create) {\n if (!options) {\n options = getOptions();\n }\n $container = $('#' + options.containerId);\n if ($container.length) {\n return $container;\n }\n if (create) {\n $container = createContainer(options);\n }\n return $container;\n }\n function info(message, title, optionsOverride) {\n return notify({\n type: toastType.info,\n iconClass: getOptions().iconClasses.info,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n function subscribe(callback) {\n listener = callback;\n }\n function success(message, title, optionsOverride) {\n return notify({\n type: toastType.success,\n iconClass: getOptions().iconClasses.success,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n function warning(message, title, optionsOverride) {\n return notify({\n type: toastType.warning,\n iconClass: getOptions().iconClasses.warning,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n function clear($toastElement, clearOptions) {\n var options = getOptions();\n if (!$container) {\n getContainer(options);\n }\n if (!clearToast($toastElement, options, clearOptions)) {\n clearContainer(options);\n }\n }\n function remove($toastElement) {\n var options = getOptions();\n if (!$container) {\n getContainer(options);\n }\n if ($toastElement && $(':focus', $toastElement).length === 0) {\n removeToast($toastElement);\n return;\n }\n if ($container.children().length) {\n $container.remove();\n }\n }\n\n // internal functions\n\n function clearContainer(options) {\n var toastsToClear = $container.children();\n for (var i = toastsToClear.length - 1; i >= 0; i--) {\n clearToast($(toastsToClear[i]), options);\n }\n }\n function clearToast($toastElement, options, clearOptions) {\n var force = clearOptions && clearOptions.force ? clearOptions.force : false;\n if ($toastElement && (force || $(':focus', $toastElement).length === 0)) {\n $toastElement[options.hideMethod]({\n duration: options.hideDuration,\n easing: options.hideEasing,\n complete: function () {\n removeToast($toastElement);\n }\n });\n return true;\n }\n return false;\n }\n function createContainer(options) {\n $container = $('<div/>').attr('id', options.containerId).addClass(options.positionClass);\n $container.appendTo($(options.target));\n return $container;\n }\n function getDefaults() {\n return {\n tapToDismiss: true,\n toastClass: 'toast',\n containerId: 'toast-container',\n debug: false,\n showMethod: 'fadeIn',\n //fadeIn, slideDown, and show are built into jQuery\n showDuration: 300,\n showEasing: 'swing',\n //swing and linear are built into jQuery\n onShown: undefined,\n hideMethod: 'fadeOut',\n hideDuration: 1000,\n hideEasing: 'swing',\n onHidden: undefined,\n closeMethod: false,\n closeDuration: false,\n closeEasing: false,\n closeOnHover: true,\n extendedTimeOut: 1000,\n iconClasses: {\n error: 'toast-error',\n info: 'toast-info',\n success: 'toast-success',\n warning: 'toast-warning'\n },\n iconClass: 'toast-info',\n positionClass: 'toast-top-right',\n timeOut: 5000,\n // Set timeOut and extendedTimeOut to 0 to make it sticky\n titleClass: 'toast-title',\n messageClass: 'toast-message',\n escapeHtml: false,\n target: 'body',\n closeHtml: '<button type=\"button\">×</button>',\n closeClass: 'toast-close-button',\n newestOnTop: true,\n preventDuplicates: false,\n progressBar: false,\n progressClass: 'toast-progress',\n rtl: false\n };\n }\n function publish(args) {\n if (!listener) {\n return;\n }\n listener(args);\n }\n function notify(map) {\n var options = getOptions();\n var iconClass = map.iconClass || options.iconClass;\n if (typeof map.optionsOverride !== 'undefined') {\n options = $.extend(options, map.optionsOverride);\n iconClass = map.optionsOverride.iconClass || iconClass;\n }\n if (shouldExit(options, map)) {\n return;\n }\n toastId++;\n $container = getContainer(options, true);\n var intervalId = null;\n var $toastElement = $('<div/>');\n var $titleElement = $('<div/>');\n var $messageElement = $('<div/>');\n var $progressElement = $('<div/>');\n var $closeElement = $(options.closeHtml);\n var progressBar = {\n intervalId: null,\n hideEta: null,\n maxHideTime: null\n };\n var response = {\n toastId: toastId,\n state: 'visible',\n startTime: new Date(),\n options: options,\n map: map\n };\n personalizeToast();\n displayToast();\n handleEvents();\n publish(response);\n if (options.debug && console) {\n console.log(response);\n }\n return $toastElement;\n function escapeHtml(source) {\n if (source == null) {\n source = '';\n }\n return source.replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');\n }\n function personalizeToast() {\n setIcon();\n setTitle();\n setMessage();\n setCloseButton();\n setProgressBar();\n setRTL();\n setSequence();\n setAria();\n }\n function setAria() {\n var ariaValue = '';\n switch (map.iconClass) {\n case 'toast-success':\n case 'toast-info':\n ariaValue = 'polite';\n break;\n default:\n ariaValue = 'assertive';\n }\n $toastElement.attr('aria-live', ariaValue);\n }\n function handleEvents() {\n if (options.closeOnHover) {\n $toastElement.hover(stickAround, delayedHideToast);\n }\n if (!options.onclick && options.tapToDismiss) {\n $toastElement.click(hideToast);\n }\n if (options.closeButton && $closeElement) {\n $closeElement.click(function (event) {\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) {\n event.cancelBubble = true;\n }\n if (options.onCloseClick) {\n options.onCloseClick(event);\n }\n hideToast(true);\n });\n }\n if (options.onclick) {\n $toastElement.click(function (event) {\n options.onclick(event);\n hideToast();\n });\n }\n }\n function displayToast() {\n $toastElement.hide();\n $toastElement[options.showMethod]({\n duration: options.showDuration,\n easing: options.showEasing,\n complete: options.onShown\n });\n if (options.timeOut > 0) {\n intervalId = setTimeout(hideToast, options.timeOut);\n progressBar.maxHideTime = parseFloat(options.timeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n if (options.progressBar) {\n progressBar.intervalId = setInterval(updateProgress, 10);\n }\n }\n }\n function setIcon() {\n if (map.iconClass) {\n $toastElement.addClass(options.toastClass).addClass(iconClass);\n }\n }\n function setSequence() {\n if (options.newestOnTop) {\n $container.prepend($toastElement);\n } else {\n $container.append($toastElement);\n }\n }\n function setTitle() {\n if (map.title) {\n var suffix = map.title;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.title);\n }\n $titleElement.append(suffix).addClass(options.titleClass);\n $toastElement.append($titleElement);\n }\n }\n function setMessage() {\n if (map.message) {\n var suffix = map.message;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.message);\n }\n $messageElement.append(suffix).addClass(options.messageClass);\n $toastElement.append($messageElement);\n }\n }\n function setCloseButton() {\n if (options.closeButton) {\n $closeElement.addClass(options.closeClass).attr('role', 'button');\n $toastElement.prepend($closeElement);\n }\n }\n function setProgressBar() {\n if (options.progressBar) {\n $progressElement.addClass(options.progressClass);\n $toastElement.prepend($progressElement);\n }\n }\n function setRTL() {\n if (options.rtl) {\n $toastElement.addClass('rtl');\n }\n }\n function shouldExit(options, map) {\n if (options.preventDuplicates) {\n if (map.message === previousToast) {\n return true;\n } else {\n previousToast = map.message;\n }\n }\n return false;\n }\n function hideToast(override) {\n var method = override && options.closeMethod !== false ? options.closeMethod : options.hideMethod;\n var duration = override && options.closeDuration !== false ? options.closeDuration : options.hideDuration;\n var easing = override && options.closeEasing !== false ? options.closeEasing : options.hideEasing;\n if ($(':focus', $toastElement).length && !override) {\n return;\n }\n clearTimeout(progressBar.intervalId);\n return $toastElement[method]({\n duration: duration,\n easing: easing,\n complete: function () {\n removeToast($toastElement);\n clearTimeout(intervalId);\n if (options.onHidden && response.state !== 'hidden') {\n options.onHidden();\n }\n response.state = 'hidden';\n response.endTime = new Date();\n publish(response);\n }\n });\n }\n function delayedHideToast() {\n if (options.timeOut > 0 || options.extendedTimeOut > 0) {\n intervalId = setTimeout(hideToast, options.extendedTimeOut);\n progressBar.maxHideTime = parseFloat(options.extendedTimeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n }\n }\n function stickAround() {\n clearTimeout(intervalId);\n progressBar.hideEta = 0;\n $toastElement.stop(true, true)[options.showMethod]({\n duration: options.showDuration,\n easing: options.showEasing\n });\n }\n function updateProgress() {\n var percentage = (progressBar.hideEta - new Date().getTime()) / progressBar.maxHideTime * 100;\n $progressElement.width(percentage + '%');\n }\n }\n function getOptions() {\n return $.extend({}, getDefaults(), toastr.options);\n }\n function removeToast($toastElement) {\n if (!$container) {\n $container = getContainer();\n }\n if ($toastElement.is(':visible')) {\n return;\n }\n $toastElement.remove();\n $toastElement = null;\n if ($container.children().length === 0) {\n $container.remove();\n previousToast = undefined;\n }\n }\n }();\n });\n})(typeof define === 'function' && define.amd ? define : function (deps, factory) {\n if (typeof module !== 'undefined' && module.exports) {\n //Node\n module.exports = factory(require('jquery'));\n } else {\n window.toastr = factory(window.jQuery);\n }\n});","(function (global, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([\"exports\"], factory) : factory(global.ActionCable = {});\n})(this, function (exports) {\n \"use strict\";\n\n var adapters = {\n logger: self.console,\n WebSocket: self.WebSocket\n };\n var logger = {\n log: function log() {\n if (this.enabled) {\n var _adapters$logger;\n for (var _len = arguments.length, messages = Array(_len), _key = 0; _key < _len; _key++) {\n messages[_key] = arguments[_key];\n }\n messages.push(Date.now());\n (_adapters$logger = adapters.logger).log.apply(_adapters$logger, [\"[ActionCable]\"].concat(messages));\n }\n }\n };\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n var classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n var createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n var now = function now() {\n return new Date().getTime();\n };\n var secondsSince = function secondsSince(time) {\n return (now() - time) / 1e3;\n };\n var clamp = function clamp(number, min, max) {\n return Math.max(min, Math.min(max, number));\n };\n var ConnectionMonitor = function () {\n function ConnectionMonitor(connection) {\n classCallCheck(this, ConnectionMonitor);\n this.visibilityDidChange = this.visibilityDidChange.bind(this);\n this.connection = connection;\n this.reconnectAttempts = 0;\n }\n ConnectionMonitor.prototype.start = function start() {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n addEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor started. pollInterval = \" + this.getPollInterval() + \" ms\");\n }\n };\n ConnectionMonitor.prototype.stop = function stop() {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor stopped\");\n }\n };\n ConnectionMonitor.prototype.isRunning = function isRunning() {\n return this.startedAt && !this.stoppedAt;\n };\n ConnectionMonitor.prototype.recordPing = function recordPing() {\n this.pingedAt = now();\n };\n ConnectionMonitor.prototype.recordConnect = function recordConnect() {\n this.reconnectAttempts = 0;\n this.recordPing();\n delete this.disconnectedAt;\n logger.log(\"ConnectionMonitor recorded connect\");\n };\n ConnectionMonitor.prototype.recordDisconnect = function recordDisconnect() {\n this.disconnectedAt = now();\n logger.log(\"ConnectionMonitor recorded disconnect\");\n };\n ConnectionMonitor.prototype.startPolling = function startPolling() {\n this.stopPolling();\n this.poll();\n };\n ConnectionMonitor.prototype.stopPolling = function stopPolling() {\n clearTimeout(this.pollTimeout);\n };\n ConnectionMonitor.prototype.poll = function poll() {\n var _this = this;\n this.pollTimeout = setTimeout(function () {\n _this.reconnectIfStale();\n _this.poll();\n }, this.getPollInterval());\n };\n ConnectionMonitor.prototype.getPollInterval = function getPollInterval() {\n var _constructor$pollInte = this.constructor.pollInterval,\n min = _constructor$pollInte.min,\n max = _constructor$pollInte.max,\n multiplier = _constructor$pollInte.multiplier;\n var interval = multiplier * Math.log(this.reconnectAttempts + 1);\n return Math.round(clamp(interval, min, max) * 1e3);\n };\n ConnectionMonitor.prototype.reconnectIfStale = function reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(\"ConnectionMonitor detected stale connection. reconnectAttempts = \" + this.reconnectAttempts + \", pollInterval = \" + this.getPollInterval() + \" ms, time disconnected = \" + secondsSince(this.disconnectedAt) + \" s, stale threshold = \" + this.constructor.staleThreshold + \" s\");\n this.reconnectAttempts++;\n if (this.disconnectedRecently()) {\n logger.log(\"ConnectionMonitor skipping reopening recent disconnect\");\n } else {\n logger.log(\"ConnectionMonitor reopening\");\n this.connection.reopen();\n }\n }\n };\n ConnectionMonitor.prototype.connectionIsStale = function connectionIsStale() {\n return secondsSince(this.pingedAt ? this.pingedAt : this.startedAt) > this.constructor.staleThreshold;\n };\n ConnectionMonitor.prototype.disconnectedRecently = function disconnectedRecently() {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n };\n ConnectionMonitor.prototype.visibilityDidChange = function visibilityDidChange() {\n var _this2 = this;\n if (document.visibilityState === \"visible\") {\n setTimeout(function () {\n if (_this2.connectionIsStale() || !_this2.connection.isOpen()) {\n logger.log(\"ConnectionMonitor reopening stale connection on visibilitychange. visbilityState = \" + document.visibilityState);\n _this2.connection.reopen();\n }\n }, 200);\n }\n };\n return ConnectionMonitor;\n }();\n ConnectionMonitor.pollInterval = {\n min: 3,\n max: 30,\n multiplier: 5\n };\n ConnectionMonitor.staleThreshold = 6;\n var INTERNAL = {\n message_types: {\n welcome: \"welcome\",\n disconnect: \"disconnect\",\n ping: \"ping\",\n confirmation: \"confirm_subscription\",\n rejection: \"reject_subscription\"\n },\n disconnect_reasons: {\n unauthorized: \"unauthorized\",\n invalid_request: \"invalid_request\",\n server_restart: \"server_restart\"\n },\n default_mount_path: \"/cable\",\n protocols: [\"actioncable-v1-json\", \"actioncable-unsupported\"]\n };\n var message_types = INTERNAL.message_types,\n protocols = INTERNAL.protocols;\n var supportedProtocols = protocols.slice(0, protocols.length - 1);\n var indexOf = [].indexOf;\n var Connection = function () {\n function Connection(consumer) {\n classCallCheck(this, Connection);\n this.open = this.open.bind(this);\n this.consumer = consumer;\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ConnectionMonitor(this);\n this.disconnected = true;\n }\n Connection.prototype.send = function send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n };\n Connection.prototype.open = function open() {\n if (this.isActive()) {\n logger.log(\"Attempted to open WebSocket, but existing socket is \" + this.getState());\n return false;\n } else {\n logger.log(\"Opening WebSocket, current state is \" + this.getState() + \", subprotocols: \" + protocols);\n if (this.webSocket) {\n this.uninstallEventHandlers();\n }\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n };\n Connection.prototype.close = function close() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n allowReconnect: true\n },\n allowReconnect = _ref.allowReconnect;\n if (!allowReconnect) {\n this.monitor.stop();\n }\n if (this.isActive()) {\n return this.webSocket.close();\n }\n };\n Connection.prototype.reopen = function reopen() {\n logger.log(\"Reopening WebSocket, current state is \" + this.getState());\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error);\n } finally {\n logger.log(\"Reopening WebSocket in \" + this.constructor.reopenDelay + \"ms\");\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n };\n Connection.prototype.getProtocol = function getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol;\n }\n };\n Connection.prototype.isOpen = function isOpen() {\n return this.isState(\"open\");\n };\n Connection.prototype.isActive = function isActive() {\n return this.isState(\"open\", \"connecting\");\n };\n Connection.prototype.isProtocolSupported = function isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n };\n Connection.prototype.isState = function isState() {\n for (var _len = arguments.length, states = Array(_len), _key = 0; _key < _len; _key++) {\n states[_key] = arguments[_key];\n }\n return indexOf.call(states, this.getState()) >= 0;\n };\n Connection.prototype.getState = function getState() {\n if (this.webSocket) {\n for (var state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase();\n }\n }\n }\n return null;\n };\n Connection.prototype.installEventHandlers = function installEventHandlers() {\n for (var eventName in this.events) {\n var handler = this.events[eventName].bind(this);\n this.webSocket[\"on\" + eventName] = handler;\n }\n };\n Connection.prototype.uninstallEventHandlers = function uninstallEventHandlers() {\n for (var eventName in this.events) {\n this.webSocket[\"on\" + eventName] = function () {};\n }\n };\n return Connection;\n }();\n Connection.reopenDelay = 500;\n Connection.prototype.events = {\n message: function message(event) {\n if (!this.isProtocolSupported()) {\n return;\n }\n var _JSON$parse = JSON.parse(event.data),\n identifier = _JSON$parse.identifier,\n message = _JSON$parse.message,\n reason = _JSON$parse.reason,\n reconnect = _JSON$parse.reconnect,\n type = _JSON$parse.type;\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n case message_types.disconnect:\n logger.log(\"Disconnecting. Reason: \" + reason);\n return this.close({\n allowReconnect: reconnect\n });\n case message_types.ping:\n return this.monitor.recordPing();\n case message_types.confirmation:\n return this.subscriptions.notify(identifier, \"connected\");\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open: function open() {\n logger.log(\"WebSocket onopen event, using '\" + this.getProtocol() + \"' subprotocol\");\n this.disconnected = false;\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close: function close(event) {\n logger.log(\"WebSocket onclose event\");\n if (this.disconnected) {\n return;\n }\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error: function error() {\n logger.log(\"WebSocket onerror event\");\n }\n };\n var extend = function extend(object, properties) {\n if (properties != null) {\n for (var key in properties) {\n var value = properties[key];\n object[key] = value;\n }\n }\n return object;\n };\n var Subscription = function () {\n function Subscription(consumer) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var mixin = arguments[2];\n classCallCheck(this, Subscription);\n this.consumer = consumer;\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n Subscription.prototype.perform = function perform(action) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n data.action = action;\n return this.send(data);\n };\n Subscription.prototype.send = function send(data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n };\n Subscription.prototype.unsubscribe = function unsubscribe() {\n return this.consumer.subscriptions.remove(this);\n };\n return Subscription;\n }();\n var Subscriptions = function () {\n function Subscriptions(consumer) {\n classCallCheck(this, Subscriptions);\n this.consumer = consumer;\n this.subscriptions = [];\n }\n Subscriptions.prototype.create = function create(channelName, mixin) {\n var channel = channelName;\n var params = (typeof channel === \"undefined\" ? \"undefined\" : _typeof(channel)) === \"object\" ? channel : {\n channel: channel\n };\n var subscription = new Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n };\n Subscriptions.prototype.add = function add(subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.sendCommand(subscription, \"subscribe\");\n return subscription;\n };\n Subscriptions.prototype.remove = function remove(subscription) {\n this.forget(subscription);\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n return subscription;\n };\n Subscriptions.prototype.reject = function reject(identifier) {\n var _this = this;\n return this.findAll(identifier).map(function (subscription) {\n _this.forget(subscription);\n _this.notify(subscription, \"rejected\");\n return subscription;\n });\n };\n Subscriptions.prototype.forget = function forget(subscription) {\n this.subscriptions = this.subscriptions.filter(function (s) {\n return s !== subscription;\n });\n return subscription;\n };\n Subscriptions.prototype.findAll = function findAll(identifier) {\n return this.subscriptions.filter(function (s) {\n return s.identifier === identifier;\n });\n };\n Subscriptions.prototype.reload = function reload() {\n var _this2 = this;\n return this.subscriptions.map(function (subscription) {\n return _this2.sendCommand(subscription, \"subscribe\");\n });\n };\n Subscriptions.prototype.notifyAll = function notifyAll(callbackName) {\n var _this3 = this;\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return this.subscriptions.map(function (subscription) {\n return _this3.notify.apply(_this3, [subscription, callbackName].concat(args));\n });\n };\n Subscriptions.prototype.notify = function notify(subscription, callbackName) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n var subscriptions = void 0;\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [subscription];\n }\n return subscriptions.map(function (subscription) {\n return typeof subscription[callbackName] === \"function\" ? subscription[callbackName].apply(subscription, args) : undefined;\n });\n };\n Subscriptions.prototype.sendCommand = function sendCommand(subscription, command) {\n var identifier = subscription.identifier;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n };\n return Subscriptions;\n }();\n var Consumer = function () {\n function Consumer(url) {\n classCallCheck(this, Consumer);\n this._url = url;\n this.subscriptions = new Subscriptions(this);\n this.connection = new Connection(this);\n }\n Consumer.prototype.send = function send(data) {\n return this.connection.send(data);\n };\n Consumer.prototype.connect = function connect() {\n return this.connection.open();\n };\n Consumer.prototype.disconnect = function disconnect() {\n return this.connection.close({\n allowReconnect: false\n });\n };\n Consumer.prototype.ensureActiveConnection = function ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n };\n createClass(Consumer, [{\n key: \"url\",\n get: function get$$1() {\n return createWebSocketURL(this._url);\n }\n }]);\n return Consumer;\n }();\n function createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url();\n }\n if (url && !/^wss?:/i.test(url)) {\n var a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n }\n function createConsumer() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getConfig(\"url\") || INTERNAL.default_mount_path;\n return new Consumer(url);\n }\n function getConfig(name) {\n var element = document.head.querySelector(\"meta[name='action-cable-\" + name + \"']\");\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n exports.Connection = Connection;\n exports.ConnectionMonitor = ConnectionMonitor;\n exports.Consumer = Consumer;\n exports.INTERNAL = INTERNAL;\n exports.Subscription = Subscription;\n exports.Subscriptions = Subscriptions;\n exports.adapters = adapters;\n exports.createWebSocketURL = createWebSocketURL;\n exports.logger = logger;\n exports.createConsumer = createConsumer;\n exports.getConfig = getConfig;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n});","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/master/actionview/app/assets/javascripts\nReleased under the MIT license\n */\n\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form',\n formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var nonce;\n nonce = null;\n Rails.loadCSPNonce = function () {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n Rails.cspNonce = function () {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n expando = '_ujsData';\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function (event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n }\n return result;\n };\n }\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n prepareOptions = function (options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n createXHR = function (options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n CSRFProtection(xhr);\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n processResponse = function (response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n Rails.href = function (element) {\n return element.href;\n };\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n toArray = function (e) {\n return Array.prototype.slice.call(e);\n };\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (input.closest('fieldset[disabled]')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n Rails.confirm = function (message, element) {\n return confirm(message);\n };\n allowAction = function (element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n Rails.enableElement = function (e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n disableLinkElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n enableLinkElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n disableFormElements = function (form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n disableFormElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n enableFormElements = function (form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n enableFormElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n isXhrRedirect = function (event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n }).call(this);\n (function () {\n var stopEverything;\n stopEverything = Rails.stopEverything;\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"<input name='_method' value='\" + method + \"' type='hidden' />\";\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \"<input name='\" + csrfParam + \"' value='\" + csrfToken + \"' type='hidden' />\";\n }\n formContent += '<input type=\"submit\" />';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n isRemote = function (element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function (xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n Rails.preventInsignificantClick = function (e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = e.button != null && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","(function($) {\n window.NestedFormEvents = function() {\n this.addFields = $.proxy(this.addFields, this);\n this.removeFields = $.proxy(this.removeFields, this);\n };\n\n NestedFormEvents.prototype = {\n addFields: function(e) {\n // Setup\n var link = e.currentTarget;\n var assoc = $(link).data('association'); // Name of child\n var blueprint = $('#' + $(link).data('blueprint-id'));\n var content = blueprint.data('blueprint'); // Fields template\n\n // Make the context correct by replacing <parents> with the generated ID\n // of each of the parent objects\n var context = ($(link).closest('.fields').closestChild('input, textarea, select').eq(0).attr('name') || '').replace(new RegExp('\\[[a-z_]+\\]$'), '');\n\n // context will be something like this for a brand new form:\n // project[tasks_attributes][1255929127459][assignments_attributes][1255929128105]\n // or for an edit form:\n // project[tasks_attributes][0][assignments_attributes][1]\n if (context) {\n var parentNames = context.match(/[a-z_]+_attributes(?=\\]\\[(new_)?\\d+\\])/g) || [];\n var parentIds = context.match(/[0-9]+/g) || [];\n\n for(var i = 0; i < parentNames.length; i++) {\n if(parentIds[i]) {\n content = content.replace(\n new RegExp('(_' + parentNames[i] + ')_.+?_', 'g'),\n '$1_' + parentIds[i] + '_');\n\n content = content.replace(\n new RegExp('(\\\\[' + parentNames[i] + '\\\\])\\\\[.+?\\\\]', 'g'),\n '$1[' + parentIds[i] + ']');\n }\n }\n }\n\n // Make a unique ID for the new child\n var regexp = new RegExp('new_' + assoc, 'g');\n var new_id = this.newId();\n content = $.trim(content.replace(regexp, new_id));\n\n var field = this.insertFields(content, assoc, link);\n // bubble up event upto document (through form)\n field\n .trigger({ type: 'nested:fieldAdded', field: field })\n .trigger({ type: 'nested:fieldAdded:' + assoc, field: field });\n return false;\n },\n newId: function() {\n return new Date().getTime();\n },\n insertFields: function(content, assoc, link) {\n var target = $(link).data('target');\n if (target) {\n return $(content).appendTo($(target));\n } else {\n return $(content).insertBefore(link);\n }\n },\n removeFields: function(e) {\n var $link = $(e.currentTarget),\n assoc = $link.data('association'); // Name of child to be removed\n \n var hiddenField = $link.prev('input[type=hidden]');\n hiddenField.val('1');\n \n var field = $link.closest('.fields');\n field.hide();\n \n field\n .trigger({ type: 'nested:fieldRemoved', field: field })\n .trigger({ type: 'nested:fieldRemoved:' + assoc, field: field });\n return false;\n }\n };\n\n window.nestedFormEvents = new NestedFormEvents();\n $(document)\n .delegate('form a.add_nested_fields', 'click', nestedFormEvents.addFields)\n .delegate('form a.remove_nested_fields', 'click', nestedFormEvents.removeFields);\n})(jQuery);\n\n// http://plugins.jquery.com/project/closestChild\n/*\n * Copyright 2011, Tobias Lindig\n *\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n *\n */\n(function($) {\n $.fn.closestChild = function(selector) {\n // breadth first search for the first matched node\n if (selector && selector != '') {\n var queue = [];\n queue.push(this);\n while(queue.length > 0) {\n var node = queue.shift();\n var children = node.children();\n for(var i = 0; i < children.length; ++i) {\n var child = $(children[i]);\n if (child.is(selector)) {\n return child; //well, we found one\n }\n queue.push(child);\n }\n }\n }\n return $();//nothing found\n };\n})(jQuery);\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n var nodeName = offsetParent && offsetParent.nodeName;\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n return offsetParent;\n}\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n};\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n return getClientRect(result);\n}\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n return offsets;\n}\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = {\n top: 0,\n left: 0\n };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n return boundaries;\n}\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n var variation = placement.split('-')[1];\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n data = fn(data, modifier);\n }\n });\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, {\n passive: true\n });\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, {\n passive: true\n });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, {\n position: options.positionFixed ? 'fixed' : 'absolute'\n });\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n var noRound = function noRound(v) {\n return v;\n };\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n var flipOrder = [];\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var basePlacement = placement.split('-')[0];\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n options.boundaries = boundaries;\n var order = options.priority;\n var popper = data.offsets.popper;\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n data.offsets.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\nexport default Popper;","var g;\n\n// This works in non-strict mode\ng = function () {\n return this;\n}();\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1,\n // Maandag is die eerste dag van die week.\n doy: 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n }\n });\n return af;\n});","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'Ù¡',\n 2: 'Ù¢',\n 3: 'Ù£',\n 4: 'Ù¤',\n 5: 'Ù¥',\n 6: 'Ù¦',\n 7: 'Ù§',\n 8: 'Ù¨',\n 9: 'Ù©',\n 0: 'Ù '\n },\n numberMap = {\n 'Ù¡': '1',\n 'Ù¢': '2',\n 'Ù£': '3',\n 'Ù¤': '4',\n 'Ù¥': '5',\n 'Ù¦': '6',\n 'Ù§': '7',\n 'Ù¨': '8',\n 'Ù©': '9',\n 'Ù ': '0'\n },\n pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n },\n plurals = {\n s: ['أقل من ثانية', 'ثانية واØدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واØدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واØدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واØد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واØد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واØد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = ['يناير', 'Ùبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوÙمبر', 'ديسمبر'];\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|Ù…/,\n isPM: function (input) {\n return 'Ù…' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n return ar;\n});","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n },\n plurals = {\n s: ['أقل من ثانية', 'ثانية واØدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واØدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واØدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واØد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واØد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واØد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = ['جانÙÙŠ', 'ÙÙŠÙري', 'مارس', 'Ø£Ùريل', 'ماي', 'جوان', 'جويلية', 'أوت', 'سبتمبر', 'أكتوبر', 'نوÙمبر', 'ديسمبر'];\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|Ù…/,\n isPM: function (input) {\n return 'Ù…' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return arDz;\n});","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort: 'يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays: 'الأØد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'اØد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ÙÙŠ %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n return arKw;\n});","//! moment.js locale configuration\n//! locale : Arabic (Libya) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0'\n },\n pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n },\n plurals = {\n s: ['أقل من ثانية', 'ثانية واØدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واØدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واØدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واØد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واØد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واØد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = ['يناير', 'Ùبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوÙمبر', 'ديسمبر'];\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|Ù…/,\n isPM: function (input) {\n return 'Ù…' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n return arLy;\n});","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort: 'يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'اØد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ÙÙŠ %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return arMa;\n});","//! moment.js locale configuration\n//! locale : Arabic (Palestine) [ar-ps]\n//! author : Majd Al-Shihabi : https://github.com/majdal\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'Ù¡',\n 2: 'Ù¢',\n 3: 'Ù£',\n 4: 'Ù¤',\n 5: 'Ù¥',\n 6: 'Ù¦',\n 7: 'Ù§',\n 8: 'Ù¨',\n 9: 'Ù©',\n 0: 'Ù '\n },\n numberMap = {\n 'Ù¡': '1',\n 'Ù¢': '2',\n 'Ù£': '3',\n 'Ù¤': '4',\n 'Ù¥': '5',\n 'Ù¦': '6',\n 'Ù§': '7',\n 'Ù¨': '8',\n 'Ù©': '9',\n 'Ù ': '0'\n };\n var arPs = moment.defineLocale('ar-ps', {\n months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_Øزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split('_'),\n monthsShort: 'ك٢_شباط_آذار_نيسان_أيّار_Øزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|Ù…/,\n isPM: function (input) {\n return 'Ù…' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ÙÙŠ %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n preparse: function (string) {\n return string.replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).split('') // reversed since negative lookbehind not supported everywhere\n .reverse().join('').replace(/[١٢](?![\\u062a\\u0643])/g, function (match) {\n return numberMap[match];\n }).split('').reverse().join('').replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n return arPs;\n});","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'Ù¡',\n 2: 'Ù¢',\n 3: 'Ù£',\n 4: 'Ù¤',\n 5: 'Ù¥',\n 6: 'Ù¦',\n 7: 'Ù§',\n 8: 'Ù¨',\n 9: 'Ù©',\n 0: 'Ù '\n },\n numberMap = {\n 'Ù¡': '1',\n 'Ù¢': '2',\n 'Ù£': '3',\n 'Ù¤': '4',\n 'Ù¥': '5',\n 'Ù¦': '6',\n 'Ù§': '7',\n 'Ù¨': '8',\n 'Ù©': '9',\n 'Ù ': '0'\n };\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_Ùبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split('_'),\n monthsShort: 'يناير_Ùبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split('_'),\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|Ù…/,\n isPM: function (input) {\n return 'Ù…' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ÙÙŠ %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n return arSa;\n});","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانÙÙŠ_ÙÙŠÙري_مارس_Ø£Ùريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split('_'),\n monthsShort: 'جانÙÙŠ_ÙÙŠÙري_مارس_Ø£Ùريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split('_'),\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ÙÙŠ %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return arTn;\n});","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı'\n };\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertÉ™si_ÇərÅŸÉ™nbÉ™ axÅŸamı_ÇərÅŸÉ™nbÉ™_CümÉ™ axÅŸamı_CümÉ™_ŞənbÉ™'.split('_'),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gÉ™lÉ™n hÉ™ftÉ™] dddd [saat] LT',\n lastDay: '[dünÉ™n] LT',\n lastWeek: '[keçən hÉ™ftÉ™] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s É™vvÉ™l',\n s: 'bir neçə saniyÉ™',\n ss: '%d saniyÉ™',\n m: 'bir dÉ™qiqÉ™',\n mm: '%d dÉ™qiqÉ™',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il'\n },\n meridiemParse: /gecÉ™|sÉ™hÉ™r|gündüz|axÅŸam/,\n isPM: function (input) {\n return /^(gündüz|axÅŸam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecÉ™';\n } else if (hour < 12) {\n return 'sÉ™hÉ™r';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axÅŸam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return az;\n});","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'Ñекунда_Ñекунды_Ñекунд' : 'Ñекунду_Ñекунды_Ñекунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'меÑÑц_меÑÑцы_меÑÑцаў',\n yy: 'год_гады_гадоў'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var be = moment.defineLocale('be', {\n months: {\n format: 'ÑтудзенÑ_лютага_Ñакавіка_краÑавіка_траўнÑ_чÑрвенÑ_ліпенÑ_жніўнÑ_вераÑнÑ_каÑтрычніка_ліÑтапада_ÑнежнÑ'.split('_'),\n standalone: 'Ñтудзень_люты_Ñакавік_краÑавік_травень_чÑрвень_ліпень_жнівень_вераÑень_каÑтрычнік_ліÑтапад_Ñнежань'.split('_')\n },\n monthsShort: 'Ñтуд_лют_Ñак_краÑ_трав_чÑрв_ліп_жнів_вер_каÑÑ‚_ліÑÑ‚_Ñнеж'.split('_'),\n weekdays: {\n format: 'нÑдзелю_панÑдзелак_аўторак_Ñераду_чацвер_пÑтніцу_Ñуботу'.split('_'),\n standalone: 'нÑдзелÑ_панÑдзелак_аўторак_Ñерада_чацвер_пÑтніца_Ñубота'.split('_'),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наÑтупную)? ?\\] ?dddd/\n },\n weekdaysShort: 'нд_пн_ат_ÑÑ€_чц_пт_Ñб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ÑÑ€_чц_пт_Ñб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm'\n },\n calendar: {\n sameDay: '[Ð¡Ñ‘Ð½Ð½Ñ Ñž] LT',\n nextDay: '[Заўтра Ñž] LT',\n lastDay: '[Учора Ñž] LT',\n nextWeek: function () {\n return '[У] dddd [Ñž] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [Ñž] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [Ñž] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі Ñекунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'меÑÑц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural\n },\n meridiemParse: /ночы|раніцы|днÑ|вечара/,\n isPM: function (input) {\n return /^(днÑ|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'днÑ';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(Ñ–|Ñ‹|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) && number % 100 !== 12 && number % 100 !== 13 ? number + '-Ñ–' : number + '-Ñ‹';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return be;\n});","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var bg = moment.defineLocale('bg', {\n months: 'Ñнуари_февруари_март_април_май_юни_юли_авгуÑÑ‚_Ñептември_октомври_ноември_декември'.split('_'),\n monthsShort: 'Ñну_фев_мар_апр_май_юни_юли_авг_Ñеп_окт_ное_дек'.split('_'),\n weekdays: 'неделÑ_понеделник_вторник_ÑÑ€Ñда_четвъртък_петък_Ñъбота'.split('_'),\n weekdaysShort: 'нед_пон_вто_ÑÑ€Ñ_чет_пет_Ñъб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Ð”Ð½ÐµÑ Ð²] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[МиналиÑ] dddd [в] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Ñлед %s',\n past: 'преди %s',\n s: 'нÑколко Ñекунди',\n ss: '%d Ñекунди',\n m: 'минута',\n mm: '%d минути',\n h: 'чаÑ',\n hh: '%d чаÑа',\n d: 'ден',\n dd: '%d дена',\n w: 'Ñедмица',\n ww: '%d Ñедмици',\n M: 'меÑец',\n MM: '%d меÑеца',\n y: 'година',\n yy: '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return bg;\n});","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_MÉ›kalo_ZuwÉ›nkalo_Zuluyekalo_Utikalo_SÉ›tanburukalo_É”kutÉ”burukalo_Nowanburukalo_Desanburukalo'.split('_'),\n monthsShort: 'Zan_Few_Mar_Awi_MÉ›_Zuw_Zul_Uti_SÉ›t_É”ku_Now_Des'.split('_'),\n weekdays: 'Kari_NtÉ›nÉ›n_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_NtÉ›_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lÉ›rÉ›] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lÉ›rÉ›] HH:mm'\n },\n calendar: {\n sameDay: '[Bi lÉ›rÉ›] LT',\n nextDay: '[Sini lÉ›rÉ›] LT',\n nextWeek: 'dddd [don lÉ›rÉ›] LT',\n lastDay: '[Kunu lÉ›rÉ›] LT',\n lastWeek: 'dddd [tÉ›mÉ›nen lÉ›rÉ›] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s kÉ”nÉ”',\n past: 'a bÉ› %s bÉ”',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lÉ›rÉ› kelen',\n hh: 'lÉ›rÉ› %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return bm;\n});","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: 'à§',\n 8: '৮',\n 9: '৯',\n 0: '০'\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n 'à§': '7',\n '৮': '8',\n '৯': '9',\n '০': '0'\n };\n var bn = moment.defineLocale('bn', {\n months: 'জানà§à§Ÿà¦¾à¦°à¦¿_ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°_অকà§à¦Ÿà§‹à¦¬à¦°_নà¦à§‡à¦®à§à¦¬à¦°_ডিসেমà§à¦¬à¦°'.split('_'),\n monthsShort: 'জানà§_ফেবà§à¦°à§_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿ_অকà§à¦Ÿà§‹_নà¦à§‡_ডিসে'.split('_'),\n weekdays: 'রবিবার_সোমবার_মঙà§à¦—লবার_বà§à¦§à¦¬à¦¾à¦°_বৃহসà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°_শà§à¦•à§à¦°à¦¬à¦¾à¦°_শনিবার'.split('_'),\n weekdaysShort: 'রবি_সোম_মঙà§à¦—ল_বà§à¦§_বৃহসà§à¦ªà¦¤à¦¿_শà§à¦•à§à¦°_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙà§à¦—ল_বà§à¦§_বৃহ_শà§à¦•à§à¦°_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়'\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেনà§à¦¡',\n ss: '%d সেকেনà§à¦¡',\n m: 'à¦à¦• মিনিট',\n mm: '%d মিনিট',\n h: 'à¦à¦• ঘনà§à¦Ÿà¦¾',\n hh: '%d ঘনà§à¦Ÿà¦¾',\n d: 'à¦à¦• দিন',\n dd: '%d দিন',\n M: 'à¦à¦• মাস',\n MM: '%d মাস',\n y: 'à¦à¦• বছর',\n yy: '%d বছর'\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬à§à§®à§¯à§¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দà§à¦ªà§à¦°|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত' && hour >= 4 || meridiem === 'দà§à¦ªà§à¦°' && hour < 5 || meridiem === 'বিকাল') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দà§à¦ªà§à¦°';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n return bn;\n});","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: 'à§',\n 8: '৮',\n 9: '৯',\n 0: '০'\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n 'à§': '7',\n '৮': '8',\n '৯': '9',\n '০': '0'\n };\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানà§à§Ÿà¦¾à¦°à¦¿_ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°_অকà§à¦Ÿà§‹à¦¬à¦°_নà¦à§‡à¦®à§à¦¬à¦°_ডিসেমà§à¦¬à¦°'.split('_'),\n monthsShort: 'জানà§_ফেবà§à¦°à§_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿ_অকà§à¦Ÿà§‹_নà¦à§‡_ডিসে'.split('_'),\n weekdays: 'রবিবার_সোমবার_মঙà§à¦—লবার_বà§à¦§à¦¬à¦¾à¦°_বৃহসà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°_শà§à¦•à§à¦°à¦¬à¦¾à¦°_শনিবার'.split('_'),\n weekdaysShort: 'রবি_সোম_মঙà§à¦—ল_বà§à¦§_বৃহসà§à¦ªà¦¤à¦¿_শà§à¦•à§à¦°_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙà§à¦—ল_বà§à¦§_বৃহ_শà§à¦•à§à¦°_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়'\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেনà§à¦¡',\n ss: '%d সেকেনà§à¦¡',\n m: 'à¦à¦• মিনিট',\n mm: '%d মিনিট',\n h: 'à¦à¦• ঘনà§à¦Ÿà¦¾',\n hh: '%d ঘনà§à¦Ÿà¦¾',\n d: 'à¦à¦• দিন',\n dd: '%d দিন',\n M: 'à¦à¦• মাস',\n MM: '%d মাস',\n y: 'à¦à¦• বছর',\n yy: '%d বছর'\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬à§à§®à§¯à§¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|à¦à§‹à¦°|সকাল|দà§à¦ªà§à¦°|বিকাল|সনà§à¦§à§à¦¯à¦¾|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'à¦à§‹à¦°') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দà§à¦ªà§à¦°') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সনà§à¦§à§à¦¯à¦¾') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'à¦à§‹à¦°';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দà§à¦ªà§à¦°';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সনà§à¦§à§à¦¯à¦¾';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n return bnBd;\n});","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠'\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0'\n };\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split('_'),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[à½à¼‹à½¦à½„] LT',\n lastWeek: '[བདུན་ཕྲག་མà½à½ ་མ] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སà¾à½¢à¼‹à½†à¼',\n m: 'སà¾à½¢à¼‹à½˜à¼‹à½‚ཅིག',\n mm: '%d སà¾à½¢à¼‹à½˜',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ'\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'མཚན་མོ' && hour >= 4 || meridiem === 'ཉིན་གུང' && hour < 5 || meridiem === 'དགོང་དག') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n return bo;\n});","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh'\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z'\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n var monthsParse = [/^gen/i, /^c[ʼ\\']hwe/i, /^meu/i, /^ebr/i, /^mae/i, /^(mez|eve)/i, /^gou/i, /^eos/i, /^gwe/i, /^her/i, /^du/i, /^ker/i],\n monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [/^sul/i, /^lun/i, /^meurzh/i, /^merc[ʼ\\']her/i, /^yaou/i, /^gwener/i, /^sadorn/i],\n shortWeekdaysParse = [/^Sul/i, /^Lun/i, /^Meu/i, /^Mer/i, /^Yao/i, /^Gwe/i, /^Sad/i],\n minWeekdaysParse = [/^Su/i, /^Lu/i, /^Me([^r]|$)/i, /^Mer/i, /^Ya/i, /^Gw/i, /^Sa/i];\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./,\n // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n }\n });\n return br;\n});","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! author : Rasid Redzic : https://github.com/rasidre\n//! based on (hr) translation by Bojan Marković\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 'm':\n return withoutSuffix ? 'jedna minuta' : isFuture ? 'jednu minutu' : 'jedne minute';\n }\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jedan sat';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._Äet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juÄer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[proÅ¡lu] dddd [u] LT';\n case 6:\n return '[proÅ¡le] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[proÅ¡li] dddd [u] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: processRelativeTime,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return bs;\n});","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split('_'),\n isFormat: /D[oD]?(\\s)+MMMM/\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm'\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [passat a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: \"d'aquà %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output = number === 1 ? 'r' : number === 2 ? 'n' : number === 3 ? 'r' : number === 4 ? 't' : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return ca;\n});","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = {\n standalone: 'leden_únor_bÅ™ezen_duben_kvÄ›ten_Äerven_Äervenec_srpen_zářÃ_Å™Ãjen_listopad_prosinec'.split('_'),\n format: 'ledna_února_bÅ™ezna_dubna_kvÄ›tna_Äervna_Äervence_srpna_zářÃ_Å™Ãjna_listopadu_prosince'.split('_'),\n isFormat: /DD?[o.]?(\\[[^\\[\\]]*\\]|\\s)+MMMM/\n },\n monthsShort = 'led_úno_bÅ™e_dub_kvÄ›_Ävn_Ävc_srp_zář_Å™Ãj_lis_pro'.split('_'),\n monthsParse = [/^led/i, /^úno/i, /^bÅ™e/i, /^dub/i, /^kvÄ›/i, /^(Ävn|Äerven$|Äervna)/i, /^(Ävc|Äervenec|Äervence)/i, /^srp/i, /^zář/i, /^Å™Ãj/i, /^lis/i, /^pro/i],\n // NOTE: 'Äerven' is substring of 'Äervenec'; therefore 'Äervenec' must precede 'Äerven' in the regex to be fully matched.\n // Otherwise parser matches '1. Äervenec' as '1. Äerven' + 'ec'.\n monthsRegex = /^(leden|únor|bÅ™ezen|duben|kvÄ›ten|Äervenec|Äervence|Äerven|Äervna|srpen|zářÃ|Å™Ãjen|listopad|prosinec|led|úno|bÅ™e|dub|kvÄ›|Ävn|Ävc|srp|zář|Å™Ãj|lis|pro)/i;\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss':\n // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm':\n // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm':\n // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h':\n // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh':\n // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd':\n // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd':\n // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dnÃ');\n } else {\n return result + 'dny';\n }\n case 'M':\n // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mÄ›sÃc' : 'mÄ›sÃcem';\n case 'MM':\n // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mÄ›sÃce' : 'mÄ›sÃců');\n } else {\n return result + 'mÄ›sÃci';\n }\n case 'y':\n // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy':\n // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'Äerven' is substring of 'Äervenec'; therefore 'Äervenec' must precede 'Äerven' in the regex to be fully matched.\n // Otherwise parser matches '1. Äervenec' as '1. Äerven' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|bÅ™ezen|bÅ™ezna|duben|dubna|kvÄ›ten|kvÄ›tna|Äervenec|Äervence|Äerven|Äervna|srpen|srpna|zářÃ|Å™Ãjen|Å™Ãjna|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bÅ™e|dub|kvÄ›|Ävn|Ävc|srp|zář|Å™Ãj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'nedÄ›le_pondÄ›lÃ_úterý_stÅ™eda_Ätvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_Ät_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_Ät_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY'\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zÃtra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedÄ›li v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve stÅ™edu v] LT';\n case 4:\n return '[ve Ätvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[vÄera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou nedÄ›li v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou stÅ™edu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'pÅ™ed %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return cs;\n});","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑÑ_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),\n monthsShort: 'кӑр_нар_пуш_ака_май_Ò«Ó—Ñ€_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырÑарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_Ñрнекун_шӑматкун'.split('_'),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_Ñрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_Ñ‹Ñ‚_юн_кҫ_ÑÑ€_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'\n },\n calendar: {\n sameDay: '[ПаÑн] LT [Ñехетре]',\n nextDay: '[Ыран] LT [Ñехетре]',\n lastDay: '[Ӗнер] LT [Ñехетре]',\n nextWeek: '[ҪитеÑ] dddd LT [Ñехетре]',\n lastWeek: '[Иртнӗ] dddd LT [Ñехетре]',\n sameElse: 'L'\n },\n relativeTime: {\n future: function (output) {\n var affix = /Ñехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';\n return output + affix;\n },\n past: '%s каÑлла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр Ñехет',\n hh: '%d Ñехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return cv;\n});","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = ['', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed',\n // 1af to 10fed\n 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return cy;\n});","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'pÃ¥ dddd [kl.] LT',\n lastDay: '[i gÃ¥r kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'fÃ¥ sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en mÃ¥ned',\n MM: '%d mÃ¥neder',\n y: 'et Ã¥r',\n yy: '%d Ã¥r'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return da;\n});","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return de;\n});","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return deAt;\n});","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return deCh;\n});","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['Þ–Þ¬Þ‚ÞªÞ‡Þ¦ÞƒÞ©', 'ÞŠÞ¬Þ„Þ°ÞƒÞªÞ‡Þ¦ÞƒÞ©', 'Þ‰Þ§ÞƒÞ¨Þ—Þª', 'Þ‡ÞÞ•Þ°ÞƒÞ©ÞÞª', 'Þ‰Þ', 'Þ–Þ«Þ‚Þ°', 'Þ–ÞªÞÞ¦Þ‡Þ¨', 'Þ‡Þ¯ÞŽÞ¦ÞÞ°Þ“Þª', 'ÞÞ¬Þ•Þ°Þ“Þ¬Þ‰Þ°Þ„Þ¦ÞƒÞª', 'Þ‡Þ®Þ†Þ°Þ“Þ¯Þ„Þ¦ÞƒÞª', 'Þ‚Þ®ÞˆÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª', 'Þ‘Þ¨ÞÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª'],\n weekdays = ['އާދިއްތަ', 'Þ€Þ¯Þ‰Þ¦', 'Þ‡Þ¦Þ‚Þ°ÞŽÞ§ÞƒÞ¦', 'Þ„ÞªÞ‹Þ¦', 'Þ„ÞªÞƒÞ§Þްފަތި', 'Þ€ÞªÞ†ÞªÞƒÞª', 'Þ€Þ®Þ‚Þ¨Þ€Þ¨ÞƒÞª'];\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'Þ‡Þ§Þ‹Þ¨_Þ€Þ¯Þ‰Þ¦_Þ‡Þ¦Þ‚Þ°_Þ„ÞªÞ‹Þ¦_Þ„ÞªÞƒÞ§_Þ€ÞªÞ†Þª_Þ€Þ®Þ‚Þ¨'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /Þ‰Þ†|Þ‰ÞŠ/,\n isPM: function (input) {\n return 'Þ‰ÞŠ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'Þ‰Þ†';\n } else {\n return 'Þ‰ÞŠ';\n }\n },\n calendar: {\n sameDay: '[Þ‰Þ¨Þ‡Þ¦Þ‹Þª] LT',\n nextDay: '[Þ‰Þ§Þ‹Þ¦Þ‰Þ§] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Þ‡Þ¨Þ‡Þ°Þ”Þ¬] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ތެރÞÞŽÞ¦Þ‡Þ¨ %s',\n past: 'Þ†ÞªÞƒÞ¨Þ‚Þ° %s',\n s: 'Þިކުންތުކޮޅެއް',\n ss: 'd% Þިކުންތު',\n m: 'Þ‰Þ¨Þ‚Þ¨Þ“Þ¬Þ‡Þ°',\n mm: 'Þ‰Þ¨Þ‚Þ¨Þ“Þª %d',\n h: 'ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞ¬Þ‡Þ°',\n hh: 'ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞª %d',\n d: 'Þ‹ÞªÞˆÞ¦Þ€Þ¬Þ‡Þ°',\n dd: 'Þ‹ÞªÞˆÞ¦ÞÞ° %d',\n M: 'Þ‰Þ¦Þ€Þ¬Þ‡Þ°',\n MM: 'Þ‰Þ¦ÞÞ° %d',\n y: 'Þ‡Þ¦Þ€Þ¦ÞƒÞ¬Þ‡Þ°',\n yy: 'Þ‡Þ¦Þ€Þ¦ÞƒÞª %d'\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 7,\n // Sunday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n return dv;\n});","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function isFunction(input) {\n return typeof Function !== 'undefined' && input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'ΙανουάÏιος_ΦεβÏουάÏιος_ΜάÏτιος_ΑπÏίλιος_Μάιος_ΙοÏνιος_ΙοÏλιος_ΑÏγουστος_ΣεπτÎμβÏιος_ΟκτώβÏιος_ÎοÎμβÏιος_ΔεκÎμβÏιος'.split('_'),\n monthsGenitiveEl: 'ΙανουαÏίου_ΦεβÏουαÏίου_ΜαÏτίου_ΑπÏιλίου_ΜαÎου_Ιουνίου_Ιουλίου_ΑυγοÏστου_ΣεπτεμβÏίου_ΟκτωβÏίου_ÎοεμβÏίου_ΔεκεμβÏίου'.split('_'),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_ΜαÏ_ΑπÏ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Îοε_Δεκ'.split('_'),\n weekdays: 'ΚυÏιακή_ΔευτÎÏα_ΤÏίτη_ΤετάÏτη_Î Îμπτη_ΠαÏασκευή_Σάββατο'.split('_'),\n weekdaysShort: 'ΚυÏ_Δευ_ΤÏι_Τετ_Πεμ_ΠαÏ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_ΤÏ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'Î Îœ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[Î Îœ]\\.?Îœ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendarEl: {\n sameDay: '[ΣήμεÏα {}] LT',\n nextDay: '[ΑÏÏιο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το Ï€ÏοηγοÏμενο] dddd [{}] LT';\n default:\n return '[την Ï€ÏοηγοÏμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L'\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s Ï€Ïιν',\n s: 'λίγα δευτεÏόλεπτα',\n ss: '%d δευτεÏόλεπτα',\n m: 'Îνα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ÏŽÏα',\n hh: '%d ÏŽÏες',\n d: 'μία μÎÏα',\n dd: '%d μÎÏες',\n M: 'Îνας μήνας',\n MM: '%d μήνες',\n y: 'Îνας χÏόνος',\n yy: '%d χÏόνια'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4st is the first week of the year.\n }\n });\n return el;\n});","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return enAu;\n});","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n return enCa;\n});","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return enGb;\n});","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return enIe;\n});","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n return enIl;\n});","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n }\n });\n return enIn;\n});","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return enNz;\n});","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return enSg;\n});","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅgusto_septembro_oktobro_novembro_decembro'.split('_'),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aÅg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaÅdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaÅ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm'\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[HodiaÅ je] LT',\n nextDay: '[MorgaÅ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[HieraÅ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaÅ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago',\n //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return eo;\n});","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurà : https://github.com/julionc\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida'\n });\n return es;\n});","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return esDo;\n});","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida'\n });\n return esMx;\n});","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n return esUs;\n});","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat']\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return et;\n});","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm'\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return eu;\n});","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'Û±',\n 2: 'Û²',\n 3: 'Û³',\n 4: 'Û´',\n 5: 'Ûµ',\n 6: 'Û¶',\n 7: 'Û·',\n 8: 'Û¸',\n 9: 'Û¹',\n 0: 'Û°'\n },\n numberMap = {\n 'Û±': '1',\n 'Û²': '2',\n 'Û³': '3',\n 'Û´': '4',\n 'Ûµ': '5',\n 'Û¶': '6',\n 'Û·': '7',\n 'Û¸': '8',\n 'Û¹': '9',\n 'Û°': '0'\n };\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_Ùوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n monthsShort: 'ژانویه_Ùوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysMin: 'ÛŒ_د_س_Ú†_Ù¾_ج_Ø´'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[Ùردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال'\n },\n preparse: function (string) {\n return string.replace(/[Û°-Û¹]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}Ù…/,\n ordinal: '%dÙ…',\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n return fa;\n});","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),\n numbersFuture = ['nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', numbersPast[7], numbersPast[8], numbersPast[9]];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10 ? isFuture ? numbersFuture[number] : numbersPast[number] : number;\n }\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm'\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return fi;\n});","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm'\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return fil;\n});","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_aprÃl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_frÃggjadagur_leygardagur'.split('_'),\n weekdaysShort: 'sun_mán_týs_mik_hós_frÃ_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm'\n },\n calendar: {\n sameDay: '[à dag kl.] LT',\n nextDay: '[à morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[à gjár kl.] LT',\n lastWeek: '[sÃðstu] dddd [kl] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'um %s',\n past: '%s sÃðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tÃmi',\n hh: '%d tÃmar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return fo;\n});","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [/^janv/i, /^févr/i, /^mars/i, /^avr/i, /^mai/i, /^juin/i, /^juil/i, /^août/i, /^sept/i, /^oct/i, /^nov/i, /^déc/i];\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à ] LT',\n nextDay: '[Demain à ] LT',\n nextWeek: 'dddd [à ] LT',\n lastDay: '[Hier à ] LT',\n lastWeek: 'dddd [dernier à ] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return fr;\n});","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à ] LT',\n nextDay: '[Demain à ] LT',\n nextWeek: 'dddd [à ] LT',\n lastDay: '[Hier à ] LT',\n lastWeek: 'dddd [dernier à ] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n }\n });\n return frCa;\n});","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à ] LT',\n nextDay: '[Demain à ] LT',\n nextWeek: 'dddd [à ] LT',\n lastDay: '[Hier à ] LT',\n lastWeek: 'dddd [dernier à ] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return frCh;\n});","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return fy;\n});","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Meitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deireadh Fómhair', 'Samhain', 'Nollaig'],\n monthsShort = ['Ean', 'Feabh', 'Márt', 'Aib', 'Beal', 'Meith', 'Iúil', 'Lún', 'M.F.', 'D.F.', 'Samh', 'Noll'],\n weekdays = ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Sathairn'],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mÃ',\n MM: '%d mÃonna',\n y: 'bliain',\n yy: '%d bliain'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return ga;\n});","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['Am Faoilleach', 'An Gearran', 'Am Mà rt', 'An Giblean', 'An Cèitean', 'An t-Ã’gmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dà mhair', 'An t-Samhain', 'An Dùbhlachd'],\n monthsShort = ['Faoi', 'Gear', 'Mà rt', 'Gibl', 'Cèit', 'Ã’gmh', 'Iuch', 'Lùn', 'Sult', 'Dà mh', 'Samh', 'Dùbh'],\n weekdays = ['Didòmhnaich', 'Diluain', 'Dimà irt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà ', 'Ci', 'Ar', 'Ha', 'Sa'];\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-mà ireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return gd;\n});","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return gl;\n});","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['à¤à¤•à¤¾ मिणटान', 'à¤à¤• मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['à¤à¤•à¤¾ वरान', 'à¤à¤• वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['à¤à¤•à¤¾ दिसान', 'à¤à¤• दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['à¤à¤•à¤¾ मà¥à¤¹à¤¯à¤¨à¥à¤¯à¤¾à¤¨', 'à¤à¤• मà¥à¤¹à¤¯à¤¨à¥‹'],\n MM: [number + ' मà¥à¤¹à¤¯à¤¨à¥à¤¯à¤¾à¤¨à¥€', number + ' मà¥à¤¹à¤¯à¤¨à¥‡'],\n y: ['à¤à¤•à¤¾ वरà¥à¤¸à¤¾à¤¨', 'à¤à¤• वरà¥à¤¸'],\n yy: [number + ' वरà¥à¤¸à¤¾à¤‚नी', number + ' वरà¥à¤¸à¤¾à¤‚']\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€_मारà¥à¤š_à¤à¤ªà¥à¤°à¥€à¤²_मे_जून_जà¥à¤²à¤¯_ऑगसà¥à¤Ÿ_सपà¥à¤Ÿà¥‡à¤‚बर_ऑकà¥à¤Ÿà¥‹à¤¬à¤°_नोवà¥à¤¹à¥‡à¤‚बर_डिसेंबर'.split('_'),\n format: 'जानेवारीचà¥à¤¯à¤¾_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€à¤šà¥à¤¯à¤¾_मारà¥à¤šà¤¾à¤šà¥à¤¯à¤¾_à¤à¤ªà¥à¤°à¥€à¤²à¤¾à¤šà¥à¤¯à¤¾_मेयाचà¥à¤¯à¤¾_जूनाचà¥à¤¯à¤¾_जà¥à¤²à¤¯à¤¾à¤šà¥à¤¯à¤¾_ऑगसà¥à¤Ÿà¤¾à¤šà¥à¤¯à¤¾_सपà¥à¤Ÿà¥‡à¤‚बराचà¥à¤¯à¤¾_ऑकà¥à¤Ÿà¥‹à¤¬à¤°à¤¾à¤šà¥à¤¯à¤¾_नोवà¥à¤¹à¥‡à¤‚बराचà¥à¤¯à¤¾_डिसेंबराचà¥à¤¯à¤¾'.split('_'),\n isFormat: /MMMM(\\s)+D[oD]?/\n },\n monthsShort: 'जाने._फेबà¥à¤°à¥._मारà¥à¤š_à¤à¤ªà¥à¤°à¥€._मे_जून_जà¥à¤²._ऑग._सपà¥à¤Ÿà¥‡à¤‚._ऑकà¥à¤Ÿà¥‹._नोवà¥à¤¹à¥‡à¤‚._डिसें.'.split('_'),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बà¥à¤§à¤µà¤¾à¤°_बिरेसà¥à¤¤à¤¾à¤°_सà¥à¤•à¥à¤°à¤¾à¤°_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बà¥à¤§._बà¥à¤°à¥‡à¤¸à¥à¤¤._सà¥à¤•à¥à¤°._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बà¥_बà¥à¤°à¥‡_सà¥_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]'\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फालà¥à¤¯à¤¾à¤‚] LT',\n nextWeek: '[फà¥à¤¡à¤²à¥‹] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week\n doy: 3 // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n }\n });\n return gomDeva;\n});","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam']\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split('_'),\n isFormat: /MMMM(\\s)+D[oD]?/\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]'\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week\n doy: 3 // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n }\n });\n return gomLatn;\n});","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: 'à«©',\n 4: '૪',\n 5: 'à««',\n 6: '૬',\n 7: 'à«',\n 8: 'à«®',\n 9: '૯',\n 0: '૦'\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n 'à«©': '3',\n '૪': '4',\n 'à««': '5',\n '૬': '6',\n 'à«': '7',\n 'à«®': '8',\n '૯': '9',\n '૦': '0'\n };\n var gu = moment.defineLocale('gu', {\n months: 'જાનà«àª¯à«àª†àª°à«€_ફેબà«àª°à«àª†àª°à«€_મારà«àªš_àªàªªà«àª°àª¿àª²_મે_જૂન_જà«àª²àª¾àªˆ_ઑગસà«àªŸ_સપà«àªŸà«‡àª®à«àª¬àª°_ઑકà«àªŸà«àª¬àª°_નવેમà«àª¬àª°_ડિસેમà«àª¬àª°'.split('_'),\n monthsShort: 'જાનà«àª¯à«._ફેબà«àª°à«._મારà«àªš_àªàªªà«àª°àª¿._મે_જૂન_જà«àª²àª¾._ઑગ._સપà«àªŸà«‡._ઑકà«àªŸà«._નવે._ડિસે.'.split('_'),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બà«àª§à«àªµàª¾àª°_ગà«àª°à«àªµàª¾àª°_શà«àª•à«àª°àªµàª¾àª°_શનિવાર'.split('_'),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બà«àª§à«_ગà«àª°à«_શà«àª•à«àª°_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બà«_ગà«_શà«_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગà«àª¯à«‡',\n LTS: 'A h:mm:ss વાગà«àª¯à«‡',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગà«àª¯à«‡',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગà«àª¯à«‡'\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમà«àª• પળો',\n ss: '%d સેકંડ',\n m: 'àªàª• મિનિટ',\n mm: '%d મિનિટ',\n h: 'àªàª• કલાક',\n hh: '%d કલાક',\n d: 'àªàª• દિવસ',\n dd: '%d દિવસ',\n M: 'àªàª• મહિનો',\n MM: '%d મહિનો',\n y: 'àªàª• વરà«àª·',\n yy: '%d વરà«àª·'\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬à«à«®à«¯à«¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n return gu;\n});","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var he = moment.defineLocale('he', {\n months: '×™× ×•×ר_פברו×ר_מרץ_×פריל_מ××™_×™×•× ×™_יולי_×וגוסט_ספטמבר_×וקטובר_× ×•×‘×ž×‘×¨_דצמבר'.split('_'),\n monthsShort: '×™× ×•×³_פבר׳_מרץ_×פר׳_מ××™_×™×•× ×™_יולי_×וג׳_ספט׳_×וק׳_× ×•×‘×³_דצמ׳'.split('_'),\n weekdays: 'ר×שון_×©× ×™_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: '×׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: '×_ב_×’_ד_×”_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[×”×™×•× ×‘Ö¾]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[×תמול ב־]LT',\n lastWeek: '[ביו×] dddd [×”×חרון בשעה] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'בעוד %s',\n past: '×œ×¤× ×™ %s',\n s: 'מספר ×©× ×™×•×ª',\n ss: '%d ×©× ×™×•×ª',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיי×';\n }\n return number + ' שעות';\n },\n d: 'יו×',\n dd: function (number) {\n if (number === 2) {\n return 'יומיי×';\n }\n return number + ' ימי×';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיי×';\n }\n return number + ' חודשי×';\n },\n y: '×©× ×”',\n yy: function (number) {\n if (number === 2) {\n return '×©× ×ª×™×™×';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' ×©× ×”';\n }\n return number + ' ×©× ×™×';\n }\n },\n meridiemParse: /××—×”\"צ|×œ×¤× ×”\"צ|×חרי הצהריי×|×œ×¤× ×™ הצהריי×|×œ×¤× ×•×ª בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(××—×”\"צ|×חרי הצהריי×|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return '×œ×¤× ×•×ª בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? '×œ×¤× ×”\"צ' : '×œ×¤× ×™ הצהריי×';\n } else if (hour < 18) {\n return isLower ? '××—×”\"צ' : '×חרי הצהריי×';\n } else {\n return 'בערב';\n }\n }\n });\n return he;\n});","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: 'à¥',\n 8: '८',\n 9: '९',\n 0: '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n 'à¥': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n },\n monthsParse = [/^जन/i, /^फ़र|फर/i, /^मारà¥à¤š/i, /^अपà¥à¤°à¥ˆ/i, /^मई/i, /^जून/i, /^जà¥à¤²/i, /^अग/i, /^सितं|सित/i, /^अकà¥à¤Ÿà¥‚/i, /^नव|नवं/i, /^दिसं|दिस/i],\n shortMonthsParse = [/^जन/i, /^फ़र/i, /^मारà¥à¤š/i, /^अपà¥à¤°à¥ˆ/i, /^मई/i, /^जून/i, /^जà¥à¤²/i, /^अग/i, /^सित/i, /^अकà¥à¤Ÿà¥‚/i, /^नव/i, /^दिस/i];\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मारà¥à¤š_अपà¥à¤°à¥ˆà¤²_मई_जून_जà¥à¤²à¤¾à¤ˆ_अगसà¥à¤¤_सितमà¥à¤¬à¤°_अकà¥à¤Ÿà¥‚बर_नवमà¥à¤¬à¤°_दिसमà¥à¤¬à¤°'.split('_'),\n standalone: 'जनवरी_फरवरी_मारà¥à¤š_अपà¥à¤°à¥ˆà¤²_मई_जून_जà¥à¤²à¤¾à¤ˆ_अगसà¥à¤¤_सितंबर_अकà¥à¤Ÿà¥‚बर_नवंबर_दिसंबर'.split('_')\n },\n monthsShort: 'जन._फ़र._मारà¥à¤š_अपà¥à¤°à¥ˆ._मई_जून_जà¥à¤²._अग._सित._अकà¥à¤Ÿà¥‚._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बà¥à¤§à¤µà¤¾à¤°_गà¥à¤°à¥‚वार_शà¥à¤•à¥à¤°à¤µà¤¾à¤°_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बà¥à¤§_गà¥à¤°à¥‚_शà¥à¤•à¥à¤°_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बà¥_गà¥_शà¥_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे'\n },\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मारà¥à¤š?|अपà¥à¤°à¥ˆà¤²|अपà¥à¤°à¥ˆ\\.?|मई?|जून?|जà¥à¤²à¤¾à¤ˆ|जà¥à¤²\\.?|अगसà¥à¤¤|अग\\.?|सितमà¥à¤¬à¤°|सितंबर|सित\\.?|अकà¥à¤Ÿà¥‚बर|अकà¥à¤Ÿà¥‚\\.?|नवमà¥à¤¬à¤°|नवंबर|नव\\.?|दिसमà¥à¤¬à¤°|दिसंबर|दिस\\.?)/i,\n monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मारà¥à¤š?|अपà¥à¤°à¥ˆà¤²|अपà¥à¤°à¥ˆ\\.?|मई?|जून?|जà¥à¤²à¤¾à¤ˆ|जà¥à¤²\\.?|अगसà¥à¤¤|अग\\.?|सितमà¥à¤¬à¤°|सितंबर|सित\\.?|अकà¥à¤Ÿà¥‚बर|अकà¥à¤Ÿà¥‚\\.?|नवमà¥à¤¬à¤°|नवंबर|नव\\.?|दिसमà¥à¤¬à¤°|दिसंबर|दिस\\.?)/i,\n monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मारà¥à¤š?|अपà¥à¤°à¥ˆà¤²?|मई?|जून?|जà¥à¤²à¤¾à¤ˆ?|अगसà¥à¤¤?|सितमà¥à¤¬à¤°|सितंबर|सित?\\.?|अकà¥à¤Ÿà¥‚बर|अकà¥à¤Ÿà¥‚\\.?|नवमà¥à¤¬à¤°|नवंबर?|दिसमà¥à¤¬à¤°|दिसंबर?)/i,\n monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मारà¥à¤š?|अपà¥à¤°à¥ˆ\\.?|मई?|जून?|जà¥à¤²\\.?|अग\\.?|सित\\.?|अकà¥à¤Ÿà¥‚\\.?|नव\\.?|दिस\\.?)/i,\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कà¥à¤› ही कà¥à¤·à¤£',\n ss: '%d सेकंड',\n m: 'à¤à¤• मिनट',\n mm: '%d मिनट',\n h: 'à¤à¤• घंटा',\n hh: '%d घंटे',\n d: 'à¤à¤• दिन',\n dd: '%d दिन',\n M: 'à¤à¤• महीने',\n MM: '%d महीने',\n y: 'à¤à¤• वरà¥à¤·',\n yy: '%d वरà¥à¤·'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६à¥à¥®à¥¯à¥¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सà¥à¤¬à¤¹|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सà¥à¤¬à¤¹') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सà¥à¤¬à¤¹';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n return hi;\n});","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'sijeÄnja_veljaÄe_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),\n standalone: 'sijeÄanj_veljaÄa_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._Äet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juÄer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[proÅ¡lu] [nedjelju] [u] LT';\n case 3:\n return '[proÅ¡lu] [srijedu] [u] LT';\n case 6:\n return '[proÅ¡le] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[proÅ¡li] dddd [u] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return hr;\n});","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var weekEndings = 'vasárnap hétfÅ‘n kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix ? 'néhány másodperc' : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';\n }\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfÅ‘_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm'\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return hu;\n});","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€Õ«_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€Õ«_Õ´Õ¡Ö€Õ¿Õ«_Õ¡ÕºÖ€Õ«Õ¬Õ«_Õ´Õ¡ÕµÕ«Õ½Õ«_Õ°Õ¸Ö‚Õ¶Õ«Õ½Õ«_Õ°Õ¸Ö‚Õ¬Õ«Õ½Õ«_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½Õ«_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«'.split('_'),\n standalone: 'Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€_Õ´Õ¡Ö€Õ¿_Õ¡ÕºÖ€Õ«Õ¬_Õ´Õ¡ÕµÕ«Õ½_Õ°Õ¸Ö‚Õ¶Õ«Õ½_Õ°Õ¸Ö‚Õ¬Õ«Õ½_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€'.split('_')\n },\n monthsShort: 'Õ°Õ¶Õ¾_ÖƒÕ¿Ö€_Õ´Ö€Õ¿_Õ¡ÕºÖ€_Õ´ÕµÕ½_Õ°Õ¶Õ½_Õ°Õ¬Õ½_Ö…Õ£Õ½_Õ½ÕºÕ¿_Õ°Õ¯Õ¿_Õ¶Õ´Õ¢_Õ¤Õ¯Õ¿'.split('_'),\n weekdays: 'Õ¯Õ«Ö€Õ¡Õ¯Õ«_Õ¥Ö€Õ¯Õ¸Ö‚Õ·Õ¡Õ¢Õ©Õ«_Õ¥Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«_Õ¹Õ¸Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«_Õ°Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«_Õ¸Ö‚Ö€Õ¢Õ¡Õ©_Õ·Õ¡Õ¢Õ¡Õ©'.split('_'),\n weekdaysShort: 'Õ¯Ö€Õ¯_Õ¥Ö€Õ¯_Õ¥Ö€Ö„_Õ¹Ö€Ö„_Õ°Õ¶Õ£_Õ¸Ö‚Ö€Õ¢_Õ·Õ¢Õ©'.split('_'),\n weekdaysMin: 'Õ¯Ö€Õ¯_Õ¥Ö€Õ¯_Õ¥Ö€Ö„_Õ¹Ö€Ö„_Õ°Õ¶Õ£_Õ¸Ö‚Ö€Õ¢_Õ·Õ¢Õ©'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY Õ©.',\n LLL: 'D MMMM YYYY Õ©., HH:mm',\n LLLL: 'dddd, D MMMM YYYY Õ©., HH:mm'\n },\n calendar: {\n sameDay: '[Õ¡ÕµÕ½Ö…Ö€] LT',\n nextDay: '[Õ¾Õ¡Õ²Õ¨] LT',\n lastDay: '[Õ¥Ö€Õ¥Õ¯] LT',\n nextWeek: function () {\n return 'dddd [Ö…Ö€Õ¨ ÕªÕ¡Õ´Õ¨] LT';\n },\n lastWeek: function () {\n return '[Õ¡Õ¶ÖÕ¡Õ®] dddd [Ö…Ö€Õ¨ ÕªÕ¡Õ´Õ¨] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s Õ°Õ¥Õ¿Õ¸',\n past: '%s Õ¡Õ¼Õ¡Õ»',\n s: 'Õ´Õ« Ö„Õ¡Õ¶Õ« Õ¾Õ¡ÕµÖ€Õ¯ÕµÕ¡Õ¶',\n ss: '%d Õ¾Õ¡ÕµÖ€Õ¯ÕµÕ¡Õ¶',\n m: 'Ö€Õ¸ÕºÕ¥',\n mm: '%d Ö€Õ¸ÕºÕ¥',\n h: 'ÕªÕ¡Õ´',\n hh: '%d ÕªÕ¡Õ´',\n d: 'Ö…Ö€',\n dd: '%d Ö…Ö€',\n M: 'Õ¡Õ´Õ«Õ½',\n MM: '%d Õ¡Õ´Õ«Õ½',\n y: 'Õ¿Õ¡Ö€Õ«',\n yy: '%d Õ¿Õ¡Ö€Õ«'\n },\n meridiemParse: /Õ£Õ«Õ·Õ¥Ö€Õ¾Õ¡|Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡|ÖÕ¥Ö€Õ¥Õ¯Õ¾Õ¡|Õ¥Ö€Õ¥Õ¯Õ¸ÕµÕ¡Õ¶/,\n isPM: function (input) {\n return /^(ÖÕ¥Ö€Õ¥Õ¯Õ¾Õ¡|Õ¥Ö€Õ¥Õ¯Õ¸ÕµÕ¡Õ¶)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'Õ£Õ«Õ·Õ¥Ö€Õ¾Õ¡';\n } else if (hour < 12) {\n return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';\n } else if (hour < 17) {\n return 'ÖÕ¥Ö€Õ¥Õ¯Õ¾Õ¡';\n } else {\n return 'Õ¥Ö€Õ¥Õ¯Õ¸ÕµÕ¡Õ¶';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(Õ«Õ¶|Ö€Õ¤)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-Õ«Õ¶';\n }\n return number + '-Ö€Õ¤';\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return hyAm;\n});","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun'\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n return id;\n});","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum');\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mÃnúta' : 'mÃnútu';\n case 'mm':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'mÃnútur' : 'mÃnútum');\n } else if (withoutSuffix) {\n return result + 'mÃnúta';\n }\n return result + 'mÃnútu';\n case 'hh':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_aprÃl_maÃ_júnÃ_júlÃ_ágúst_september_október_nóvember_desember'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maÃ_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm'\n },\n calendar: {\n sameDay: '[à dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[à gær kl.] LT',\n lastWeek: '[sÃðasta] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s sÃðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return is;\n});","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: function () {\n return '[Oggi a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n nextDay: function () {\n return '[Domani a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n nextWeek: function () {\n return 'dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n lastDay: function () {\n return '[Ieri a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[La scorsa] dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n default:\n return '[Lo scorso] dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return it;\n});","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return itCh;\n});","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ja = moment.defineLocale('ja', {\n eras: [{\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: 'ã‹¿',\n abbr: 'R'\n }, {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: 'å¹³æˆ',\n narrow: 'ã»',\n abbr: 'H'\n }, {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: 'æ˜å’Œ',\n narrow: 'ã¼',\n abbr: 'S'\n }, {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大æ£',\n narrow: 'ã½',\n abbr: 'T'\n }, {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: 'ã¾',\n abbr: 'M'\n }, {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD'\n }, {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元å‰',\n narrow: 'BC',\n abbr: 'BC'\n }],\n eraYearOrdinalRegex: /(å…ƒ|\\d+)å¹´/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === 'å…ƒ' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '日曜日_月曜日_ç«æ›œæ—¥_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: 'æ—¥_月_ç«_æ°´_木_金_土'.split('_'),\n weekdaysMin: 'æ—¥_月_ç«_æ°´_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥ HH:mm',\n LLLL: 'YYYYå¹´M月Dæ—¥ dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥(ddd) HH:mm'\n },\n meridiemParse: /åˆå‰|åˆå¾Œ/i,\n isPM: function (input) {\n return input === 'åˆå¾Œ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'åˆå‰';\n } else {\n return 'åˆå¾Œ';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[æ¥é€±]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}æ—¥/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + 'å¹´';\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%så‰',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1æ—¥',\n dd: '%dæ—¥',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1å¹´',\n yy: '%då¹´'\n }\n });\n return ja;\n});","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return jv;\n});","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ka = moment.defineLocale('ka', {\n months: 'იáƒáƒœáƒ•áƒáƒ ი_თებერვáƒáƒšáƒ˜_მáƒáƒ ტი_áƒáƒžáƒ ილი_მáƒáƒ˜áƒ¡áƒ˜_ივნისი_ივლისი_áƒáƒ’ვისტáƒ_სექტემბერი_áƒáƒ¥áƒ¢áƒáƒ›áƒ‘ერი_ნáƒáƒ”მბერი_დეკემბერი'.split('_'),\n monthsShort: 'იáƒáƒœ_თებ_მáƒáƒ _áƒáƒžáƒ _მáƒáƒ˜_ივნ_ივლ_áƒáƒ’ვ_სექ_áƒáƒ¥áƒ¢_ნáƒáƒ”_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირáƒ_áƒáƒ შáƒáƒ‘áƒáƒ—ი_სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ი_áƒáƒ—ხშáƒáƒ‘áƒáƒ—ი_ხუთშáƒáƒ‘áƒáƒ—ი_პáƒáƒ áƒáƒ¡áƒ™áƒ”ვი_შáƒáƒ‘áƒáƒ—ი'.split('_'),\n format: 'კვირáƒáƒ¡_áƒáƒ შáƒáƒ‘áƒáƒ—ს_სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ს_áƒáƒ—ხშáƒáƒ‘áƒáƒ—ს_ხუთშáƒáƒ‘áƒáƒ—ს_პáƒáƒ áƒáƒ¡áƒ™áƒ”ვს_შáƒáƒ‘áƒáƒ—ს'.split('_'),\n isFormat: /(წინáƒ|შემდეგ)/\n },\n weekdaysShort: 'კვი_áƒáƒ შ_სáƒáƒ›_áƒáƒ—ხ_ხუთ_პáƒáƒ _შáƒáƒ‘'.split('_'),\n weekdaysMin: 'კვ_áƒáƒ _სáƒ_áƒáƒ—_ხუ_პáƒ_შáƒ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვáƒáƒš] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინáƒ] dddd LT-ზე',\n sameElse: 'L'\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წáƒáƒ›|წუთ|სáƒáƒáƒ—|წელ|დღ|თვ)(ი|ე)/, function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წáƒáƒ›áƒ˜|წუთი|სáƒáƒáƒ—ი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რáƒáƒ›áƒ“ენიმე წáƒáƒ›áƒ˜',\n ss: '%d წáƒáƒ›áƒ˜',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'სáƒáƒáƒ—ი',\n hh: '%d სáƒáƒáƒ—ი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი'\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (number < 20 || number <= 100 && number % 20 === 0 || number % 100 === 0) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7\n }\n });\n return ka;\n});","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші'\n };\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_Ñәуір_мамыр_мауÑым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқÑан'.split('_'),\n monthsShort: 'қаң_ақп_нау_Ñәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жекÑенбі_дүйÑенбі_ÑейÑенбі_ÑәрÑенбі_бейÑенбі_жұма_Ñенбі'.split('_'),\n weekdaysShort: 'жек_дүй_Ñей_Ñәр_бей_жұм_Ñен'.split('_'),\n weekdaysMin: 'жк_дй_Ñй_ÑÑ€_бй_жм_Ñн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Бүгін Ñағат] LT',\n nextDay: '[Ертең Ñағат] LT',\n nextWeek: 'dddd [Ñағат] LT',\n lastDay: '[Кеше Ñағат] LT',\n lastWeek: '[Өткен аптаның] dddd [Ñағат] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше Ñекунд',\n ss: '%d Ñекунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір Ñағат',\n hh: '%d Ñағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return kk;\n});","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០'\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0'\n };\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មáŸážŸáž¶_ឧសភា_មិážáž»áž“ា_កក្កដា_សីហា_កញ្ញា_ážáž»áž›áž¶_វិច្ឆិកា_ធ្នូ'.split('_'),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មáŸážŸáž¶_ឧសភា_មិážáž»áž“ា_កក្កដា_សីហា_កញ្ញា_ážáž»áž›áž¶_វិច្ឆិកា_ធ្នូ'.split('_'),\n weekdays: 'អាទិážáŸ’áž™_áž…áŸáž“្ទ_អង្គារ_ពុធ_ព្រហស្បážáž·áŸ_សុក្រ_សៅរáŸ'.split('_'),\n weekdaysShort: 'អា_áž…_អ_áž–_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_áž…_អ_áž–_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ážáŸ’ងៃនáŸáŸ‡ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្ážáž¶áž áŸáž˜áž»áž“] [ម៉ោង] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sទៀáž',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយážáŸ’ងៃ',\n dd: '%d ážáŸ’ងៃ',\n M: 'មួយážáŸ‚',\n MM: '%d ážáŸ‚',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ'\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return km;\n});","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: 'à³',\n 8: 'à³®',\n 9: '೯',\n 0: '೦'\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n 'à³': '7',\n 'à³®': '8',\n '೯': '9',\n '೦': '0'\n };\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬà³à²°à²µà²°à²¿_ಮಾರà³à²šà³_à²à²ªà³à²°à²¿à²²à³_ಮೇ_ಜೂನà³_ಜà³à²²à³†à³–_ಆಗಸà³à²Ÿà³_ಸೆಪà³à²Ÿà³†à²‚ಬರà³_ಅಕà³à²Ÿà³†à³‚ೕಬರà³_ನವೆಂಬರà³_ಡಿಸೆಂಬರà³'.split('_'),\n monthsShort: 'ಜನ_ಫೆಬà³à²°_ಮಾರà³à²šà³_à²à²ªà³à²°à²¿à²²à³_ಮೇ_ಜೂನà³_ಜà³à²²à³†à³–_ಆಗಸà³à²Ÿà³_ಸೆಪà³à²Ÿà³†à²‚_ಅಕà³à²Ÿà³†à³‚ೕ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),\n monthsParseExact: true,\n weekdays: 'à²à²¾à²¨à³à²µà²¾à²°_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬà³à²§à²µà²¾à²°_ಗà³à²°à³à²µà²¾à²°_ಶà³à²•à³à²°à²µà²¾à²°_ಶನಿವಾರ'.split('_'),\n weekdaysShort: 'à²à²¾à²¨à³_ಸೋಮ_ಮಂಗಳ_ಬà³à²§_ಗà³à²°à³_ಶà³à²•à³à²°_ಶನಿ'.split('_'),\n weekdaysMin: 'à²à²¾_ಸೋ_ಮಂ_ಬà³_ಗà³_ಶà³_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar: {\n sameDay: '[ಇಂದà³] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನà³à²¨à³†] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವೠಕà³à²·à²£à²—ಳà³',\n ss: '%d ಸೆಕೆಂಡà³à²—ಳà³',\n m: 'ಒಂದೠನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದೠಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದೠದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದೠತಿಂಗಳà³',\n MM: '%d ತಿಂಗಳà³',\n y: 'ಒಂದೠವರà³à²·',\n yy: '%d ವರà³à²·'\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬à³à³®à³¯à³¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತà³à²°à²¿|ಬೆಳಿಗà³à²—ೆ|ಮಧà³à²¯à²¾à²¹à³à²¨|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತà³à²°à²¿') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗà³à²—ೆ') {\n return hour;\n } else if (meridiem === 'ಮಧà³à²¯à²¾à²¹à³à²¨') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತà³à²°à²¿';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗà³à²—ೆ';\n } else if (hour < 17) {\n return 'ಮಧà³à²¯à²¾à²¹à³à²¨';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತà³à²°à²¿';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n return kn;\n});","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ko = moment.defineLocale('ko', {\n months: '1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”'.split('_'),\n monthsShort: '1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”'.split('_'),\n weekdays: 'ì¼ìš”ì¼_월요ì¼_화요ì¼_수요ì¼_목요ì¼_금요ì¼_í† ìš”ì¼'.split('_'),\n weekdaysShort: 'ì¼_ì›”_í™”_수_목_금_í† '.split('_'),\n weekdaysMin: 'ì¼_ì›”_í™”_수_목_금_í† '.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYYë…„ MMMM Dì¼',\n LLL: 'YYYYë…„ MMMM Dì¼ A h:mm',\n LLLL: 'YYYYë…„ MMMM Dì¼ dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYYë…„ MMMM Dì¼',\n lll: 'YYYYë…„ MMMM Dì¼ A h:mm',\n llll: 'YYYYë…„ MMMM Dì¼ dddd A h:mm'\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: 'ë‚´ì¼ LT',\n nextWeek: 'dddd LT',\n lastDay: 'ì–´ì œ LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s 후',\n past: '%s ì „',\n s: '몇 ì´ˆ',\n ss: '%dì´ˆ',\n m: '1분',\n mm: '%d분',\n h: 'í•œ 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%dì¼',\n M: 'í•œ 달',\n MM: '%d달',\n y: 'ì¼ ë…„',\n yy: '%dë…„'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ì¼|ì›”|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'ì¼';\n case 'M':\n return number + 'ì›”';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /ì˜¤ì „|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? 'ì˜¤ì „' : '오후';\n }\n });\n return ko;\n});","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'Ù¡',\n 2: 'Ù¢',\n 3: 'Ù£',\n 4: 'Ù¤',\n 5: 'Ù¥',\n 6: 'Ù¦',\n 7: 'Ù§',\n 8: 'Ù¨',\n 9: 'Ù©',\n 0: 'Ù '\n },\n numberMap = {\n 'Ù¡': '1',\n 'Ù¢': '2',\n 'Ù£': '3',\n 'Ù¤': '4',\n 'Ù¥': '5',\n 'Ù¦': '6',\n 'Ù§': '7',\n 'Ù¨': '8',\n 'Ù©': '9',\n 'Ù ': '0'\n },\n months = ['کانونی دووەم', 'شوبات', 'ئازار', 'نیسان', 'ئایار', 'Øوزەیران', 'تەمموز', 'ئاب', 'ئەیلوول', 'تشرینی یەكەم', 'تشرینی دووەم', 'كانونی یەکەم'];\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysMin: 'ÛŒ_د_س_Ú†_Ù¾_Ù‡_Ø´'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك Ú•Û†Ú˜',\n dd: '%d Ú•Û†Ú˜',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ'\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n return ku;\n});","//! moment.js locale configuration\n//! locale : Northern Kurdish [ku-kmr]\n//! authors : Mazlum Özdogan : https://github.com/mergehez\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(num, withoutSuffix, key, isFuture) {\n var format = {\n s: ['çend sanîye', 'çend sanîyeyan'],\n ss: [num + ' sanîye', num + ' sanîyeyan'],\n m: ['deqîqeyek', 'deqîqeyekê'],\n mm: [num + ' deqîqe', num + ' deqîqeyan'],\n h: ['saetek', 'saetekê'],\n hh: [num + ' saet', num + ' saetan'],\n d: ['rojek', 'rojekê'],\n dd: [num + ' roj', num + ' rojan'],\n w: ['hefteyek', 'hefteyekê'],\n ww: [num + ' hefte', num + ' hefteyan'],\n M: ['mehek', 'mehekê'],\n MM: [num + ' meh', num + ' mehan'],\n y: ['salek', 'salekê'],\n yy: [num + ' sal', num + ' salan']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n // function obliqueNumSuffix(num) {\n // if(num.includes(':'))\n // num = parseInt(num.split(':')[0]);\n // else\n // num = parseInt(num);\n // return num == 0 || num % 10 == 1 ? 'ê'\n // : (num > 10 && num % 10 == 0 ? 'î' : 'an');\n // }\n function ezafeNumSuffix(num) {\n num = '' + num;\n var l = num.substring(num.length - 1),\n ll = num.length > 1 ? num.substring(num.length - 2) : '';\n if (!(ll == 12 || ll == 13) && (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')) return 'yê';\n return 'ê';\n }\n var kuKmr = moment.defineLocale('ku-kmr', {\n // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)\n // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_ÃŽlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'\n // But the names below are more well known and handy\n months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_ÃŽlon_Cotmeh_Mijdar_Berfanbar'.split('_'),\n monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_ÃŽlo_Cot_Mij_Ber'.split('_'),\n monthsParseExact: true,\n weekdays: 'YekÅŸem_DuÅŸem_Sêşem_ÇarÅŸem_PêncÅŸem_ÃŽn_Åžemî'.split('_'),\n weekdaysShort: 'Yek_Du_Sê_Çar_Pên_ÃŽn_Åžem'.split('_'),\n weekdaysMin: 'Ye_Du_Sê_Ça_Pê_ÃŽn_Åže'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'bn' : 'BN';\n } else {\n return isLower ? 'pn' : 'PN';\n }\n },\n meridiemParse: /bn|BN|pn|PN/,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[a] YYYY[an]',\n LLL: 'Do MMMM[a] YYYY[an] HH:mm',\n LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',\n ll: 'Do MMM[.] YYYY[an]',\n lll: 'Do MMM[.] YYYY[an] HH:mm',\n llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm'\n },\n calendar: {\n sameDay: '[ÃŽro di saet] LT [de]',\n nextDay: '[Sibê di saet] LT [de]',\n nextWeek: 'dddd [di saet] LT [de]',\n lastDay: '[Duh di saet] LT [de]',\n lastWeek: 'dddd[a borî di saet] LT [de]',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'di %s de',\n past: 'berî %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(?:yê|ê|\\.)/,\n ordinal: function (num, period) {\n var p = period.toLowerCase();\n if (p.includes('w') || p.includes('m')) return num + '.';\n return num + ezafeNumSuffix(num);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return kuKmr;\n});","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү'\n };\n var ky = moment.defineLocale('ky', {\n months: 'Ñнварь_февраль_март_апрель_май_июнь_июль_авгуÑÑ‚_ÑентÑбрь_октÑбрь_ноÑбрь_декабрь'.split('_'),\n monthsShort: 'Ñнв_фев_март_апр_май_июнь_июль_авг_Ñен_окт_ноÑ_дек'.split('_'),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Бүгүн Ñаат] LT',\n nextDay: '[Ðртең Ñаат] LT',\n nextWeek: 'dddd [Ñаат] LT',\n lastDay: '[КечÑÑ Ñаат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [Ñаат] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече Ñекунд',\n ss: '%d Ñекунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир Ñаат',\n hh: '%d Ñаат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return ky;\n});","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n }\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return lb;\n});","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var lo = moment.defineLocale('lo', {\n months: 'ມັງàºàºàº™_àºàº¸àº¡àºžàº²_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_àºà»àº¥àº°àºàº»àº”_ສິງຫາ_àºàº±àº™àºàº²_ຕຸລາ_ພະຈິàº_ທັນວາ'.split('_'),\n monthsShort: 'ມັງàºàºàº™_àºàº¸àº¡àºžàº²_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_àºà»àº¥àº°àºàº»àº”_ສິງຫາ_àºàº±àº™àºàº²_ຕຸລາ_ພະຈິàº_ທັນວາ'.split('_'),\n weekdays: 'àºàº²àº—ິດ_ຈັນ_àºàº±àº‡àº„ານ_ພຸດ_ພະຫັດ_ສຸàº_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_àºàº±àº‡àº„ານ_ພຸດ_ພະຫັດ_ສຸàº_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_àºàº„_ພ_ພຫ_ສàº_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ຕàºàº™à»€àºŠàº»à»‰àº²|ຕàºàº™à»àº¥àº‡/,\n isPM: function (input) {\n return input === 'ຕàºàº™à»àº¥àº‡';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕàºàº™à»€àºŠàº»à»‰àº²';\n } else {\n return 'ຕàºàº™à»àº¥àº‡';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້àºàº·à»ˆàº™à»€àº§àº¥àº²] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[à»àº¥à»‰àº§àº™àºµà»‰à»€àº§àº¥àº²] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'àºàºµàº %s',\n past: '%sຜ່ານມາ',\n s: 'ບà»à»ˆà»€àº—ົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືàºàº™',\n MM: '%d ເດືàºàº™',\n y: '1 ປີ',\n yy: '%d ປີ'\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n }\n });\n return lo;\n});","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas MozÅ«ras : https://github.com/mmozuras\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var units = {\n ss: 'sekundÄ—_sekundžių_sekundes',\n m: 'minutÄ—_minutÄ—s_minutÄ™',\n mm: 'minutÄ—s_minuÄių_minutes',\n h: 'valanda_valandos_valandÄ…',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dienÄ…',\n dd: 'dienos_dienų_dienas',\n M: 'mÄ—nuo_mÄ—nesio_mÄ—nesį',\n MM: 'mÄ—nesiai_mÄ—nesių_mÄ—nesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus'\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundÄ—s';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix ? forms(key)[0] : isFuture ? forms(key)[1] : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || number > 10 && number < 20;\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return result + translateSingular(number, withoutSuffix, key[0], isFuture);\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjÅ«Äio_rugsÄ—jo_spalio_lapkriÄio_gruodžio'.split('_'),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjÅ«tis_rugsÄ—jis_spalis_lapkritis_gruodis'.split('_'),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_treÄiadienį_ketvirtadienį_penktadienį_Å¡eÅ¡tadienį'.split('_'),\n standalone: 'sekmadienis_pirmadienis_antradienis_treÄiadienis_ketvirtadienis_penktadienis_Å¡eÅ¡tadienis'.split('_'),\n isFormat: /dddd HH:mm/\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Å eÅ¡'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Å '.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n },\n calendar: {\n sameDay: '[Å iandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[PraÄ—jusį] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieÅ¡ %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return lt;\n});","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : JÄnis Elmeris : https://github.com/JanisE\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var units = {\n ss: 'sekundes_sekundÄ“m_sekunde_sekundes'.split('_'),\n m: 'minÅ«tes_minÅ«tÄ“m_minÅ«te_minÅ«tes'.split('_'),\n mm: 'minÅ«tes_minÅ«tÄ“m_minÅ«te_minÅ«tes'.split('_'),\n h: 'stundas_stundÄm_stunda_stundas'.split('_'),\n hh: 'stundas_stundÄm_stunda_stundas'.split('_'),\n d: 'dienas_dienÄm_diena_dienas'.split('_'),\n dd: 'dienas_dienÄm_diena_dienas'.split('_'),\n M: 'mÄ“neÅ¡a_mÄ“neÅ¡iem_mÄ“nesis_mÄ“neÅ¡i'.split('_'),\n MM: 'mÄ“neÅ¡a_mÄ“neÅ¡iem_mÄ“nesis_mÄ“neÅ¡i'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_')\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minÅ«te\", \"3 minÅ«tes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minÅ«tes\" as in \"pÄ“c 21 minÅ«tes\".\n // E.g. \"3 minÅ«tÄ“m\" as in \"pÄ“c 3 minÅ«tÄ“m\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažÄm sekundÄ“m';\n }\n var lv = moment.defineLocale('lv', {\n months: 'janvÄris_februÄris_marts_aprÄ«lis_maijs_jÅ«nijs_jÅ«lijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),\n monthsShort: 'jan_feb_mar_apr_mai_jÅ«n_jÅ«l_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svÄ“tdiena_pirmdiena_otrdiena_treÅ¡diena_ceturtdiena_piektdiena_sestdiena'.split('_'),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm'\n },\n calendar: {\n sameDay: '[Å odien pulksten] LT',\n nextDay: '[RÄ«t pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[PagÄjuÅ¡Ä] dddd [pulksten] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'pÄ“c %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return lv;\n});","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag NikaÄ <miodrag@restartit.me> : https://github.com/miodragnikac\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : number >= 2 && number <= 4 ? wordKey[1] : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n };\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._Äet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juÄe u] LT',\n lastWeek: function () {\n var lastWeekDays = ['[proÅ¡le] [nedjelje] [u] LT', '[proÅ¡log] [ponedjeljka] [u] LT', '[proÅ¡log] [utorka] [u] LT', '[proÅ¡le] [srijede] [u] LT', '[proÅ¡log] [Äetvrtka] [u] LT', '[proÅ¡log] [petka] [u] LT', '[proÅ¡le] [subote] [u] LT'];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return me;\n});","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tÄte_Hui-tanguru_PoutÅ«-te-rangi_Paenga-whÄwhÄ_Haratua_Pipiri_HÅngoingoi_Here-turi-kÅkÄ_Mahuru_Whiringa-Ä-nuku_Whiringa-Ä-rangi_Hakihea'.split('_'),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_HÅngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'RÄtapu_Mane_TÅ«rei_Wenerei_TÄite_Paraire_HÄtarei'.split('_'),\n weekdaysShort: 'Ta_Ma_TÅ«_We_TÄi_Pa_HÄ'.split('_'),\n weekdaysMin: 'Ta_Ma_TÅ«_We_TÄi_Pa_HÄ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm'\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hÄ“kona ruarua',\n ss: '%d hÄ“kona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return mi;\n});","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_авгуÑÑ‚_Ñептември_октомври_ноември_декември'.split('_'),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_Ñеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_Ñреда_четврток_петок_Ñабота'.split('_'),\n weekdaysShort: 'нед_пон_вто_Ñре_чет_пет_Ñаб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ÑÑ€_че_пе_Ña'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Ð”ÐµÐ½ÐµÑ Ð²Ð¾] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку Ñекунди',\n ss: '%d Ñекунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден чаÑ',\n hh: '%d чаÑа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден меÑец',\n MM: '%d меÑеци',\n y: 'една година',\n yy: '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return mk;\n});","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ml = moment.defineLocale('ml', {\n months: 'ജനàµà´µà´°à´¿_ഫെബàµà´°àµà´µà´°à´¿_മാർചàµà´šàµ_à´à´ªàµà´°à´¿àµ½_മേയàµ_ജൂൺ_ജൂലൈ_à´“à´—à´¸àµà´±àµà´±àµ_സെപàµà´±àµà´±à´‚ബർ_à´’à´•àµà´Ÿàµ‹à´¬àµ¼_നവംബർ_ഡിസംബർ'.split('_'),\n monthsShort: 'ജനàµ._ഫെബàµà´°àµ._മാർ._à´à´ªàµà´°à´¿._മേയàµ_ജൂൺ_ജൂലൈ._à´“à´—._സെപàµà´±àµà´±._à´’à´•àµà´Ÿàµ‹._നവം._ഡിസം.'.split('_'),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴàµà´š_തിങàµà´•à´³à´¾à´´àµà´š_ചൊവàµà´µà´¾à´´àµà´š_à´¬àµà´§à´¨à´¾à´´àµà´š_à´µàµà´¯à´¾à´´à´¾à´´àµà´š_വെളàµà´³à´¿à´¯à´¾à´´àµà´š_ശനിയാഴàµà´š'.split('_'),\n weekdaysShort: 'ഞായർ_തിങàµà´•àµ¾_ചൊവàµà´µ_à´¬àµà´§àµ»_à´µàµà´¯à´¾à´´à´‚_വെളàµà´³à´¿_ശനി'.split('_'),\n weekdaysMin: 'à´žà´¾_തി_ചൊ_à´¬àµ_à´µàµà´¯à´¾_വെ_à´¶'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -à´¨àµ',\n LTS: 'A h:mm:ss -à´¨àµ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -à´¨àµ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -à´¨àµ'\n },\n calendar: {\n sameDay: '[ഇനàµà´¨àµ] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇനàµà´¨à´²àµ†] LT',\n lastWeek: '[à´•à´´à´¿à´žàµà´ž] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s à´•à´´à´¿à´žàµà´žàµ',\n past: '%s à´®àµàµ»à´ªàµ',\n s: 'അൽപ നിമിഷങàµà´™àµ¾',\n ss: '%d സെകàµà´•àµ»à´¡àµ',\n m: 'ഒരൠമിനിറàµà´±àµ',\n mm: '%d മിനിറàµà´±àµ',\n h: 'ഒരൠമണികàµà´•àµ‚ർ',\n hh: '%d മണികàµà´•àµ‚ർ',\n d: 'ഒരൠദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരൠമാസം',\n MM: '%d മാസം',\n y: 'ഒരൠവർഷം',\n yy: '%d വർഷം'\n },\n meridiemParse: /രാതàµà´°à´¿|രാവിലെ|ഉചàµà´š à´•à´´à´¿à´žàµà´žàµ|വൈകàµà´¨àµà´¨àµ‡à´°à´‚|രാതàµà´°à´¿/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'രാതàµà´°à´¿' && hour >= 4 || meridiem === 'ഉചàµà´š à´•à´´à´¿à´žàµà´žàµ' || meridiem === 'വൈകàµà´¨àµà´¨àµ‡à´°à´‚') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാതàµà´°à´¿';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉചàµà´š à´•à´´à´¿à´žàµà´žàµ';\n } else if (hour < 20) {\n return 'വൈകàµà´¨àµà´¨àµ‡à´°à´‚';\n } else {\n return 'രാതàµà´°à´¿';\n }\n }\n });\n return ml;\n});","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'Ñ…ÑдхÑн Ñекунд' : 'Ñ…ÑдхÑн Ñекундын';\n case 'ss':\n return number + (withoutSuffix ? ' Ñекунд' : ' Ñекундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' Ñар' : ' Ñарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n var mn = moment.defineLocale('mn', {\n months: 'ÐÑгдүгÑÑÑ€ Ñар_Хоёрдугаар Ñар_Гуравдугаар Ñар_ДөрөвдүгÑÑÑ€ Ñар_Тавдугаар Ñар_Зургадугаар Ñар_Долдугаар Ñар_Ðаймдугаар Ñар_ЕÑдүгÑÑÑ€ Ñар_Ðравдугаар Ñар_Ðрван нÑгдүгÑÑÑ€ Ñар_Ðрван хоёрдугаар Ñар'.split('_'),\n monthsShort: '1 Ñар_2 Ñар_3 Ñар_4 Ñар_5 Ñар_6 Ñар_7 Ñар_8 Ñар_9 Ñар_10 Ñар_11 Ñар_12 Ñар'.split('_'),\n monthsParseExact: true,\n weekdays: 'ÐÑм_Даваа_ÐœÑгмар_Лхагва_ПүрÑв_БааÑан_БÑмба'.split('_'),\n weekdaysShort: 'ÐÑм_Дав_ÐœÑг_Лха_Пүр_Баа_БÑм'.split('_'),\n weekdaysMin: 'ÐÑ_Да_ÐœÑ_Лх_Пү_Ба_БÑ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm'\n },\n meridiemParse: /Ò®Ó¨|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'Ò®Ó¨';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[ИрÑÑ…] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[ӨнгөрÑөн] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n }\n });\n return mn;\n});","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: 'à¥',\n 8: '८',\n 9: '९',\n 0: '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n 'à¥': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'à¤à¤• मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'à¤à¤• तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'à¤à¤• दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'à¤à¤• महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'à¤à¤• वरà¥à¤·';\n break;\n case 'yy':\n output = '%d वरà¥à¤·à¥‡';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'à¤à¤•à¤¾ मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'à¤à¤•à¤¾ तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'à¤à¤•à¤¾ दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'à¤à¤•à¤¾ महिनà¥à¤¯à¤¾';\n break;\n case 'MM':\n output = '%d महिनà¥à¤¯à¤¾à¤‚';\n break;\n case 'y':\n output = 'à¤à¤•à¤¾ वरà¥à¤·à¤¾';\n break;\n case 'yy':\n output = '%d वरà¥à¤·à¤¾à¤‚';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€_मारà¥à¤š_à¤à¤ªà¥à¤°à¤¿à¤²_मे_जून_जà¥à¤²à¥ˆ_ऑगसà¥à¤Ÿ_सपà¥à¤Ÿà¥‡à¤‚बर_ऑकà¥à¤Ÿà¥‹à¤¬à¤°_नोवà¥à¤¹à¥‡à¤‚बर_डिसेंबर'.split('_'),\n monthsShort: 'जाने._फेबà¥à¤°à¥._मारà¥à¤š._à¤à¤ªà¥à¤°à¤¿._मे._जून._जà¥à¤²à¥ˆ._ऑग._सपà¥à¤Ÿà¥‡à¤‚._ऑकà¥à¤Ÿà¥‹._नोवà¥à¤¹à¥‡à¤‚._डिसें.'.split('_'),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बà¥à¤§à¤µà¤¾à¤°_गà¥à¤°à¥‚वार_शà¥à¤•à¥à¤°à¤µà¤¾à¤°_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बà¥à¤§_गà¥à¤°à¥‚_शà¥à¤•à¥à¤°_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बà¥_गà¥_शà¥_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता'\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उदà¥à¤¯à¤¾] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sमधà¥à¤¯à¥‡',\n past: '%sपूरà¥à¤µà¥€',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६à¥à¥®à¥¯à¥¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दà¥à¤ªà¤¾à¤°à¥€|सायंकाळी|रातà¥à¤°à¥€/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (meridiem === 'दà¥à¤ªà¤¾à¤°à¥€' || meridiem === 'सायंकाळी' || meridiem === 'रातà¥à¤°à¥€') {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दà¥à¤ªà¤¾à¤°à¥€';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रातà¥à¤°à¥€';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n return mr;\n});","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return ms;\n});","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return msMy;\n});","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ä unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_DiÄ‹embru'.split('_'),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ä un_Lul_Aww_Set_Ott_Nov_DiÄ‹'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ä imgħa_Is-Sibt'.split('_'),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ä im_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ä i_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'Ä¡urnata',\n dd: '%d Ä¡ranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return mt;\n});","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'á',\n 2: 'á‚',\n 3: 'áƒ',\n 4: 'á„',\n 5: 'á…',\n 6: 'á†',\n 7: 'á‡',\n 8: 'áˆ',\n 9: 'á‰',\n 0: 'á€'\n },\n numberMap = {\n 'á': '1',\n 'á‚': '2',\n 'áƒ': '3',\n 'á„': '4',\n 'á…': '5',\n 'á†': '6',\n 'á‡': '7',\n 'áˆ': '8',\n 'á‰': '9',\n 'á€': '0'\n };\n var my = moment.defineLocale('my', {\n months: 'ဇန်နá€á€«á€›á€®_ဖေဖော်á€á€«á€›á€®_မá€á€º_ဧပြီ_မေ_ဇွန်_ဇူလá€á€¯á€„်_သြဂုá€á€º_စက်á€á€„်ဘာ_အောက်á€á€á€¯á€˜á€¬_နá€á€¯á€á€„်ဘာ_ဒီဇင်ဘာ'.split('_'),\n monthsShort: 'ဇန်_ဖေ_မá€á€º_ပြီ_မေ_ဇွန်_လá€á€¯á€„်_သြ_စက်_အောက်_နá€á€¯_ဒီ'.split('_'),\n weekdays: 'á€á€”င်္ဂနွေ_á€á€”င်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပá€á€±á€¸_သောကြာ_စနေ'.split('_'),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးá€á€²á€·á€žá€±á€¬] dddd LT [မှာ]',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်á€á€²á€·á€žá€±á€¬ %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'á€á€…်မá€á€”စ်',\n mm: '%d မá€á€”စ်',\n h: 'á€á€…်နာရီ',\n hh: '%d နာရီ',\n d: 'á€á€…်ရက်',\n dd: '%d ရက်',\n M: 'á€á€…်လ',\n MM: '%d လ',\n y: 'á€á€…်နှစ်',\n yy: '%d နှစ်'\n },\n preparse: function (string) {\n return string.replace(/[áá‚áƒá„á…á†á‡áˆá‰á€]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return my;\n});","//! moment.js locale configuration\n//! locale : Norwegian BokmÃ¥l [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i gÃ¥r kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'én time',\n hh: '%d timer',\n d: 'én dag',\n dd: '%d dager',\n w: 'én uke',\n ww: '%d uker',\n M: 'én mÃ¥ned',\n MM: '%d mÃ¥neder',\n y: 'ett Ã¥r',\n yy: '%d Ã¥r'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return nb;\n});","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: 'à¥',\n 8: '८',\n 9: '९',\n 0: '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n 'à¥': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेबà¥à¤°à¥à¤µà¤°à¥€_मारà¥à¤š_अपà¥à¤°à¤¿à¤²_मई_जà¥à¤¨_जà¥à¤²à¤¾à¤ˆ_अगषà¥à¤Ÿ_सेपà¥à¤Ÿà¥‡à¤®à¥à¤¬à¤°_अकà¥à¤Ÿà¥‹à¤¬à¤°_नोà¤à¥‡à¤®à¥à¤¬à¤°_डिसेमà¥à¤¬à¤°'.split('_'),\n monthsShort: 'जन._फेबà¥à¤°à¥._मारà¥à¤š_अपà¥à¤°à¤¿._मई_जà¥à¤¨_जà¥à¤²à¤¾à¤ˆ._अग._सेपà¥à¤Ÿ._अकà¥à¤Ÿà¥‹._नोà¤à¥‡._डिसे.'.split('_'),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङà¥à¤—लबार_बà¥à¤§à¤¬à¤¾à¤°_बिहिबार_शà¥à¤•à¥à¤°à¤¬à¤¾à¤°_शनिबार'.split('_'),\n weekdaysShort: 'आइत._सोम._मङà¥à¤—ल._बà¥à¤§._बिहि._शà¥à¤•à¥à¤°._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बà¥._बि._शà¥._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६à¥à¥®à¥¯à¥¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउà¤à¤¸à¥‹|साà¤à¤/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउà¤à¤¸à¥‹') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साà¤à¤') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउà¤à¤¸à¥‹';\n } else if (hour < 20) {\n return 'साà¤à¤';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[à¤à¥‹à¤²à¤¿] LT',\n nextWeek: '[आउà¤à¤¦à¥‹] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गà¤à¤•à¥‹] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही कà¥à¤·à¤£',\n ss: '%d सेकेणà¥à¤¡',\n m: 'à¤à¤• मिनेट',\n mm: '%d मिनेट',\n h: 'à¤à¤• घणà¥à¤Ÿà¤¾',\n hh: '%d घणà¥à¤Ÿà¤¾',\n d: 'à¤à¤• दिन',\n dd: '%d दिन',\n M: 'à¤à¤• महिना',\n MM: '%d महिना',\n y: 'à¤à¤• बरà¥à¤·',\n yy: '%d बरà¥à¤·'\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n return ne;\n});","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [/^jan/i, /^feb/i, /^(maart|mrt\\.?)$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return nl;\n});","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [/^jan/i, /^feb/i, /^(maart|mrt\\.?)$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return nlBe;\n});","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_mÃ¥ndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._mÃ¥._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_mÃ¥_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I gÃ¥r klokka] LT',\n lastWeek: '[FøregÃ¥ande] dddd [klokka] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein mÃ¥nad',\n MM: '%d mÃ¥nader',\n y: 'eit Ã¥r',\n yy: '%d Ã¥r'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return nn;\n});","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split('_'),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split('_'),\n isFormat: /D[oD]?(\\s)+MMMM/\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split('_'),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm'\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: \"d'aquà %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output = number === 1 ? 'r' : number === 2 ? 'n' : number === 3 ? 'r' : number === 4 ? 't' : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4\n }\n });\n return ocLnc;\n});","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: 'à©©',\n 4: '੪',\n 5: 'à©«',\n 6: '੬',\n 7: 'à©',\n 8: 'à©®',\n 9: '੯',\n 0: '੦'\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n 'à©©': '3',\n '੪': '4',\n 'à©«': '5',\n '੬': '6',\n 'à©': '7',\n 'à©®': '8',\n '੯': '9',\n '੦': '0'\n };\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪà©à¨°à©ˆà¨²_ਮਈ_ਜੂਨ_ਜà©à¨²à¨¾à¨ˆ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪà©à¨°à©ˆà¨²_ਮਈ_ਜੂਨ_ਜà©à¨²à¨¾à¨ˆ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n weekdays: 'à¨à¨¤à¨µà¨¾à¨°_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬà©à¨§à¨µà¨¾à¨°_ਵੀਰਵਾਰ_ਸ਼à©à©±à¨•à¨°à¨µà¨¾à¨°_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),\n weekdaysShort: 'à¨à¨¤_ਸੋਮ_ਮੰਗਲ_ਬà©à¨§_ਵੀਰ_ਸ਼à©à¨•à¨°_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'à¨à¨¤_ਸੋਮ_ਮੰਗਲ_ਬà©à¨§_ਵੀਰ_ਸ਼à©à¨•à¨°_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕà©à¨ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ'\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬à©à©®à©¯à©¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦà©à¨ªà¨¹à¨¿à¨°|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦà©à¨ªà¨¹à¨¿à¨°') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦà©à¨ªà¨¹à¨¿à¨°';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n return paIn;\n});","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsNominative = 'styczeÅ„_luty_marzec_kwiecieÅ„_maj_czerwiec_lipiec_sierpieÅ„_wrzesieÅ„_październik_listopad_grudzieÅ„'.split('_'),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrzeÅ›nia_października_listopada_grudnia'.split('_'),\n monthsParse = [/^sty/i, /^lut/i, /^mar/i, /^kwi/i, /^maj/i, /^cze/i, /^lip/i, /^sie/i, /^wrz/i, /^paź/i, /^lis/i, /^gru/i];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutÄ™';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinÄ™';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiÄ…ce' : 'miesiÄ™cy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'niedziela_poniedziaÅ‚ek_wtorek_Å›roda_czwartek_piÄ…tek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_Å›r_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Åšr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[DziÅ› o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielÄ™ o] LT';\n case 2:\n return '[We wtorek o] LT';\n case 3:\n return '[W Å›rodÄ™ o] LT';\n case 6:\n return '[W sobotÄ™ o] LT';\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszÅ‚Ä… niedzielÄ™ o] LT';\n case 3:\n return '[W zeszÅ‚Ä… Å›rodÄ™ o] LT';\n case 6:\n return '[W zeszÅ‚Ä… sobotÄ™ o] LT';\n default:\n return '[W zeszÅ‚y] dddd [o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzieÅ„',\n dd: '%d dni',\n w: 'tydzieÅ„',\n ww: translate,\n M: 'miesiÄ…c',\n MM: translate,\n y: 'rok',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return pl;\n});","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Hoje à s] LT',\n nextDay: '[Amanhã à s] LT',\n nextWeek: 'dddd [à s] LT',\n lastDay: '[Ontem à s] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6 ? '[Último] dddd [à s] LT' // Saturday + Sunday\n : '[Última] dddd [à s] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return pt;\n});","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [à s] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [à s] HH:mm'\n },\n calendar: {\n sameDay: '[Hoje à s] LT',\n nextDay: '[Amanhã à s] LT',\n nextWeek: 'dddd [à s] LT',\n lastDay: '[Ontem à s] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6 ? '[Último] dddd [à s] LT' // Saturday + Sunday\n : '[Última] dddd [à s] LT'; // Monday - Friday\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida'\n });\n return ptBr;\n});","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani'\n },\n separator = ' ';\n if (number % 100 >= 20 || number >= 100 && number % 100 === 0) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marÈ›i_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return ro;\n});","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'Ñекунда_Ñекунды_Ñекунд' : 'Ñекунду_Ñекунды_Ñекунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'чаÑ_чаÑа_чаÑов',\n dd: 'день_днÑ_дней',\n ww: 'неделÑ_недели_недель',\n MM: 'меÑÑц_меÑÑца_меÑÑцев',\n yy: 'год_года_лет'\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [/^Ñнв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йÑ]/i, /^июн/i, /^июл/i, /^авг/i, /^Ñен/i, /^окт/i, /^ноÑ/i, /^дек/i];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Ð¡Ð¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¼ÐµÑÑцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'ÑнварÑ_февралÑ_марта_апрелÑ_маÑ_июнÑ_июлÑ_авгуÑта_ÑентÑбрÑ_октÑбрÑ_ноÑбрÑ_декабрÑ'.split('_'),\n standalone: 'Ñнварь_февраль_март_апрель_май_июнь_июль_авгуÑÑ‚_ÑентÑбрь_октÑбрь_ноÑбрь_декабрь'.split('_')\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой ÑмыÑл менÑÑ‚ÑŒ букву на точку?\n format: 'Ñнв._февр._мар._апр._маÑ_июнÑ_июлÑ_авг._Ñент._окт._ноÑб._дек.'.split('_'),\n standalone: 'Ñнв._февр._март_апр._май_июнь_июль_авг._Ñент._окт._ноÑб._дек.'.split('_')\n },\n weekdays: {\n standalone: 'воÑкреÑенье_понедельник_вторник_Ñреда_четверг_пÑтница_Ñуббота'.split('_'),\n format: 'воÑкреÑенье_понедельник_вторник_Ñреду_четверг_пÑтницу_Ñубботу'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|Ñледующую|Ñту)? ?] ?dddd/\n },\n weekdaysShort: 'вÑ_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n weekdaysMin: 'вÑ_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n // полные Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð°Ð´ÐµÐ¶Ð°Ð¼Ð¸, по три буквы, Ð´Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ…, по 4 буквы, ÑÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ñ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ и без точки\n monthsRegex: /^(Ñнвар[ÑŒÑ]|Ñнв\\.?|феврал[ÑŒÑ]|февр?\\.?|марта?|мар\\.?|апрел[ÑŒÑ]|апр\\.?|ма[йÑ]|июн[ÑŒÑ]|июн\\.?|июл[ÑŒÑ]|июл\\.?|авгуÑта?|авг\\.?|ÑентÑбр[ÑŒÑ]|Ñент?\\.?|октÑбр[ÑŒÑ]|окт\\.?|ноÑбр[ÑŒÑ]|ноÑб?\\.?|декабр[ÑŒÑ]|дек\\.?)/i,\n // ÐºÐ¾Ð¿Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ³Ð¾\n monthsShortRegex: /^(Ñнвар[ÑŒÑ]|Ñнв\\.?|феврал[ÑŒÑ]|февр?\\.?|марта?|мар\\.?|апрел[ÑŒÑ]|апр\\.?|ма[йÑ]|июн[ÑŒÑ]|июн\\.?|июл[ÑŒÑ]|июл\\.?|авгуÑта?|авг\\.?|ÑентÑбр[ÑŒÑ]|Ñент?\\.?|октÑбр[ÑŒÑ]|окт\\.?|ноÑбр[ÑŒÑ]|ноÑб?\\.?|декабр[ÑŒÑ]|дек\\.?)/i,\n // полные Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð°Ð´ÐµÐ¶Ð°Ð¼Ð¸\n monthsStrictRegex: /^(Ñнвар[ÑÑŒ]|феврал[ÑÑŒ]|марта?|апрел[ÑÑŒ]|ма[Ñй]|июн[ÑÑŒ]|июл[ÑÑŒ]|авгуÑта?|ÑентÑбр[ÑÑŒ]|октÑбр[ÑÑŒ]|ноÑбр[ÑÑŒ]|декабр[ÑÑŒ])/i,\n // Выражение, которое ÑоответÑтвует только Ñокращённым формам\n monthsShortStrictRegex: /^(Ñнв\\.|февр?\\.|мар[Ñ‚.]|апр\\.|ма[Ñй]|июн[ÑŒÑ.]|июл[ÑŒÑ.]|авг\\.|Ñент?\\.|окт\\.|ноÑб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm'\n },\n calendar: {\n sameDay: '[СегоднÑ, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[Ð’ Ñледующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[Ð’ Ñледующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[Ð’ Ñледующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[Ð’] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[Ð’ прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[Ð’ прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[Ð’ прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[Ð’] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'неÑколько Ñекунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'чаÑ',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделÑ',\n ww: relativeTimeWithPlural,\n M: 'меÑÑц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural\n },\n meridiemParse: /ночи|утра|днÑ|вечера/i,\n isPM: function (input) {\n return /^(днÑ|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'днÑ';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|Ñ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-Ñ';\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return ru;\n});","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['جنوري', 'Ùيبروري', 'مارچ', 'اپريل', 'مئي', 'جون', 'جولاءÙ', 'آگسٽ', 'سيپٽمبر', 'آڪٽوبر', 'نومبر', 'ڊسمبر'],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ddddØŒ D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبØ|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبØ';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين Ù‡Ùتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل Ù‡Ùتي] dddd [تي] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'Ù‡Úª منٽ',\n mm: '%d منٽ',\n h: 'Ù‡Úª ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'Ù‡Úª Úينهن',\n dd: '%d Úينهن',\n M: 'Ù‡Úª مهينو',\n MM: '%d مهينا',\n y: 'Ù‡Úª سال',\n yy: '%d سال'\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return sd;\n});","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : BÃ¥rd Rolstad Henriksen : https://github.com/karamell\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var se = moment.defineLocale('se', {\n months: 'oÄ‘Ä‘ajagemánnu_guovvamánnu_njukÄamánnu_cuoÅ‹ománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_ÄakÄamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),\n monthsShort: 'oÄ‘Ä‘j_guov_njuk_cuo_mies_geas_suoi_borg_ÄakÄ_golg_skáb_juov'.split('_'),\n weekdays: 'sotnabeaivi_vuossárga_maÅ‹Å‹ebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\n weekdaysShort: 'sotn_vuos_maÅ‹_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maÅ‹it %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return se;\n});","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවà·à¶»à·’_පෙබරවà·à¶»à·’_මà·à¶»à·Šà¶à·”_අප්â€à¶»à·šà¶½à·Š_මà·à¶ºà·’_ජූනි_ජූලි_අගà·à·ƒà·Šà¶à·”_à·ƒà·à¶´à·Šà¶à·à¶¸à·Šà¶¶à¶»à·Š_ඔක්à¶à·à¶¶à¶»à·Š_නොවà·à¶¸à·Šà¶¶à¶»à·Š_දෙසà·à¶¸à·Šà¶¶à¶»à·Š'.split('_'),\n monthsShort: 'ජන_පෙබ_මà·à¶»à·Š_අප්_මà·à¶ºà·’_ජූනි_ජූලි_අගà·_à·ƒà·à¶´à·Š_ඔක්_නොවà·_දෙසà·'.split('_'),\n weekdays: 'ඉරිදà·_සඳුදà·_අඟහරුවà·à¶¯à·_බදà·à¶¯à·_බ්â€à¶»à·„ස්පà¶à·’න්දà·_සිකුරà·à¶¯à·_සෙනසුරà·à¶¯à·'.split('_'),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදà·_බ්â€à¶»à·„_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_à·ƒ_අ_බ_බ්â€à¶»_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [à·€à·à¶±à·’] dddd, a h:mm:ss'\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'à¶à¶à·Šà¶´à¶» කිහිපය',\n ss: 'à¶à¶à·Šà¶´à¶» %d',\n m: 'මිනිà¶à·Šà¶à·”à·€',\n mm: 'මිනිà¶à·Šà¶à·” %d',\n h: 'පà·à¶º',\n hh: 'පà·à¶º %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මà·à·ƒà¶º',\n MM: 'මà·à·ƒ %d',\n y: 'වසර',\n yy: 'වසර %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2} à·€à·à¶±à·’/,\n ordinal: function (number) {\n return number + ' à·€à·à¶±à·’';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.à·€|ප.à·€./,\n isPM: function (input) {\n return input === 'ප.à·€.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.à·€.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.à·€.' : 'පෙර වරු';\n }\n }\n });\n return si;\n});","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = 'január_február_marec_aprÃl_máj_jún_júl_august_september_október_november_december'.split('_'),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss':\n // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm':\n // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm':\n // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h':\n // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh':\n // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodÃn');\n } else {\n return result + 'hodinami';\n }\n case 'd':\n // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd':\n // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dnÃ');\n } else {\n return result + 'dňami';\n }\n case 'M':\n // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM':\n // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y':\n // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy':\n // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_Å¡tvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_Å¡t_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_Å¡t_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo Å¡tvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[vÄera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return sk;\n});","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert SedovÅ¡ek : https://github.com/sedovsek\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_Äetrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._Äet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_Äe_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[vÄeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejÅ¡njo] [nedeljo] [ob] LT';\n case 3:\n return '[prejÅ¡njo] [sredo] [ob] LT';\n case 6:\n return '[prejÅ¡njo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejÅ¡nji] dddd [ob] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Äez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return sl;\n});","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return sq;\n});","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan JanaÄković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n d: ['jedan dan', 'jednog dana'],\n dd: ['dan', 'dana', 'dana'],\n M: ['jedan mesec', 'jednog meseca'],\n MM: ['mesec', 'meseca', 'meseci'],\n y: ['jednu godinu', 'jedne godine'],\n yy: ['godinu', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (number % 10 >= 1 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20)) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n return number + ' ' + word;\n }\n };\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_Äetvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sre._Äet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juÄe u] LT',\n lastWeek: function () {\n var lastWeekDays = ['[proÅ¡le] [nedelje] [u] LT', '[proÅ¡log] [ponedeljka] [u] LT', '[proÅ¡log] [utorka] [u] LT', '[proÅ¡le] [srede] [u] LT', '[proÅ¡log] [Äetvrtka] [u] LT', '[proÅ¡log] [petka] [u] LT', '[proÅ¡le] [subote] [u] LT'];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return sr;\n});","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan JanaÄković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['Ñекунда', 'Ñекунде', 'Ñекунди'],\n m: ['један минут', 'једног минута'],\n mm: ['минут', 'минута', 'минута'],\n h: ['један Ñат', 'једног Ñата'],\n hh: ['Ñат', 'Ñата', 'Ñати'],\n d: ['један дан', 'једног дана'],\n dd: ['дан', 'дана', 'дана'],\n M: ['један меÑец', 'једног меÑеца'],\n MM: ['меÑец', 'меÑеца', 'меÑеци'],\n y: ['једну годину', 'једне године'],\n yy: ['годину', 'године', 'година']\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (number % 10 >= 1 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20)) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'једна година';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'годину') {\n return number + ' година';\n }\n return number + ' ' + word;\n }\n };\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_авгуÑÑ‚_Ñептембар_октобар_новембар_децембар'.split('_'),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._Ñеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_Ñреда_четвртак_петак_Ñубота'.split('_'),\n weekdaysShort: 'нед._пон._уто._Ñре._чет._пет._Ñуб.'.split('_'),\n weekdaysMin: 'не_по_ут_ÑÑ€_че_пе_Ñу'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm'\n },\n calendar: {\n sameDay: '[Ð´Ð°Ð½Ð°Ñ Ñƒ] LT',\n nextDay: '[Ñутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [Ñреду] [у] LT';\n case 6:\n return '[у] [Ñуботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = ['[прошле] [недеље] [у] LT', '[прошлог] [понедељка] [у] LT', '[прошлог] [уторка] [у] LT', '[прошле] [Ñреде] [у] LT', '[прошлог] [четвртка] [у] LT', '[прошлог] [петка] [у] LT', '[прошле] [Ñуботе] [у] LT'];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико Ñекунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n });\n return srCyrl;\n});","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split('_'),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka'\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return ss;\n});","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_mÃ¥ndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mÃ¥n_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_mÃ¥_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[IgÃ¥r] LT',\n nextWeek: '[PÃ¥] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'nÃ¥gra sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en mÃ¥nad',\n MM: '%d mÃ¥nader',\n y: 'ett Ã¥r',\n yy: '%d Ã¥r'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? ':e' : b === 1 ? ':a' : b === 2 ? ':a' : b === 3 ? ':e' : ':e';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return sv;\n});","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return sw;\n});","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: 'à¯',\n 8: '௮',\n 9: '௯',\n 0: '௦'\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n 'à¯': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0'\n };\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிபà¯à®°à®µà®°à®¿_மாரà¯à®šà¯_à®à®ªà¯à®°à®²à¯_மே_ஜூனà¯_ஜூலை_ஆகஸà¯à®Ÿà¯_செபà¯à®Ÿà¯†à®®à¯à®ªà®°à¯_அகà¯à®Ÿà¯‡à®¾à®ªà®°à¯_நவமà¯à®ªà®°à¯_டிசமà¯à®ªà®°à¯'.split('_'),\n monthsShort: 'ஜனவரி_பிபà¯à®°à®µà®°à®¿_மாரà¯à®šà¯_à®à®ªà¯à®°à®²à¯_மே_ஜூனà¯_ஜூலை_ஆகஸà¯à®Ÿà¯_செபà¯à®Ÿà¯†à®®à¯à®ªà®°à¯_அகà¯à®Ÿà¯‡à®¾à®ªà®°à¯_நவமà¯à®ªà®°à¯_டிசமà¯à®ªà®°à¯'.split('_'),\n weekdays: 'ஞாயிறà¯à®±à¯à®•à¯à®•à®¿à®´à®®à¯ˆ_திஙà¯à®•à®Ÿà¯à®•à®¿à®´à®®à¯ˆ_செவà¯à®µà®¾à®¯à¯à®•à®¿à®´à®®à¯ˆ_பà¯à®¤à®©à¯à®•à®¿à®´à®®à¯ˆ_வியாழகà¯à®•à®¿à®´à®®à¯ˆ_வெளà¯à®³à®¿à®•à¯à®•à®¿à®´à®®à¯ˆ_சனிகà¯à®•à®¿à®´à®®à¯ˆ'.split('_'),\n weekdaysShort: 'ஞாயிறà¯_திஙà¯à®•à®³à¯_செவà¯à®µà®¾à®¯à¯_பà¯à®¤à®©à¯_வியாழனà¯_வெளà¯à®³à®¿_சனி'.split('_'),\n weekdaysMin: 'ஞா_தி_செ_பà¯_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm'\n },\n calendar: {\n sameDay: '[இனà¯à®±à¯] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேறà¯à®±à¯] LT',\n lastWeek: '[கடநà¯à®¤ வாரமà¯] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s இலà¯',\n past: '%s à®®à¯à®©à¯',\n s: 'ஒர௠சில விநாடிகளà¯',\n ss: '%d விநாடிகளà¯',\n m: 'ஒர௠நிமிடமà¯',\n mm: '%d நிமிடஙà¯à®•à®³à¯',\n h: 'ஒர௠மணி நேரமà¯',\n hh: '%d மணி நேரமà¯',\n d: 'ஒர௠நாளà¯',\n dd: '%d நாடà¯à®•à®³à¯',\n M: 'ஒர௠மாதமà¯',\n MM: '%d மாதஙà¯à®•à®³à¯',\n y: 'ஒர௠வரà¯à®Ÿà®®à¯',\n yy: '%d ஆணà¯à®Ÿà¯à®•à®³à¯'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வதà¯/,\n ordinal: function (number) {\n return number + 'வதà¯';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬à¯à¯®à¯¯à¯¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமமà¯|வைகறை|காலை|நணà¯à®ªà®•à®²à¯|எறà¯à®ªà®¾à®Ÿà¯|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமமà¯';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நணà¯à®ªà®•à®²à¯'; // நணà¯à®ªà®•à®²à¯\n } else if (hour < 18) {\n return ' எறà¯à®ªà®¾à®Ÿà¯'; // எறà¯à®ªà®¾à®Ÿà¯\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமமà¯';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமமà¯') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நணà¯à®ªà®•à®²à¯') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n return ta;\n});","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var te = moment.defineLocale('te', {\n months: 'జనవరి_à°«à°¿à°¬à±à°°à°µà°°à°¿_మారà±à°šà°¿_à°à°ªà±à°°à°¿à°²à±_మే_జూనà±_à°œà±à°²à±ˆ_ఆగసà±à°Ÿà±_సెపà±à°Ÿà±†à°‚బరà±_à°…à°•à±à°Ÿà±‹à°¬à°°à±_నవంబరà±_డిసెంబరà±'.split('_'),\n monthsShort: 'జన._à°«à°¿à°¬à±à°°._మారà±à°šà°¿_à°à°ªà±à°°à°¿._మే_జూనà±_à°œà±à°²à±ˆ_ఆగ._సెపà±._à°…à°•à±à°Ÿà±‹._నవ._డిసె.'.split('_'),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_à°¬à±à°§à°µà°¾à°°à°‚_à°—à±à°°à±à°µà°¾à°°à°‚_à°¶à±à°•à±à°°à°µà°¾à°°à°‚_శనివారం'.split('_'),\n weekdaysShort: 'ఆది_సోమ_మంగళ_à°¬à±à°§_à°—à±à°°à±_à°¶à±à°•à±à°°_శని'.split('_'),\n weekdaysMin: 'à°†_సో_మం_à°¬à±_à°—à±_à°¶à±_à°¶'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar: {\n sameDay: '[నేడà±] LT',\n nextDay: '[రేపà±] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నినà±à°¨] LT',\n lastWeek: '[à°—à°¤] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s లో',\n past: '%s à°•à±à°°à°¿à°¤à°‚',\n s: 'కొనà±à°¨à°¿ à°•à±à°·à°£à°¾à°²à±',\n ss: '%d సెకనà±à°²à±',\n m: 'à°’à°• నిమిషం',\n mm: '%d నిమిషాలà±',\n h: 'à°’à°• à°—à°‚à°Ÿ',\n hh: '%d à°—à°‚à°Ÿà°²à±',\n d: 'à°’à°• రోజà±',\n dd: '%d రోజà±à°²à±',\n M: 'à°’à°• నెల',\n MM: '%d నెలలà±',\n y: 'à°’à°• సంవతà±à°¸à°°à°‚',\n yy: '%d సంవతà±à°¸à°°à°¾à°²à±'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}à°µ/,\n ordinal: '%dà°µ',\n meridiemParse: /రాతà±à°°à°¿|ఉదయం|మధà±à°¯à°¾à°¹à±à°¨à°‚|సాయంతà±à°°à°‚/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాతà±à°°à°¿') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధà±à°¯à°¾à°¹à±à°¨à°‚') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంతà±à°°à°‚') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాతà±à°°à°¿';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధà±à°¯à°¾à°¹à±à°¨à°‚';\n } else if (hour < 20) {\n return 'సాయంతà±à°°à°‚';\n } else {\n return 'రాతà±à°°à°¿';\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 6th is the first week of the year.\n }\n });\n return te;\n});","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return tet;\n});","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум'\n };\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'Ñнвари_феврали_марти_апрели_майи_июни_июли_авгуÑти_ÑентÑбри_октÑбри_ноÑбри_декабри'.split('_'),\n standalone: 'Ñнвар_феврал_март_апрел_май_июн_июл_авгуÑÑ‚_ÑентÑбр_октÑбр_ноÑбр_декабр'.split('_')\n },\n monthsShort: 'Ñнв_фев_мар_апр_май_июн_июл_авг_Ñен_окт_ноÑ_дек'.split('_'),\n weekdays: 'Ñкшанбе_душанбе_Ñешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),\n weekdaysShort: 'Ñшб_дшб_Ñшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'Ñш_дш_Ñш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Имрӯз Ñоати] LT',\n nextDay: '[Фардо Ñоати] LT',\n lastDay: '[Дирӯз Ñоати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оÑнда Ñоати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта Ñоати] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'Ñкчанд ÑониÑ',\n m: 'Ñк дақиқа',\n mm: '%d дақиқа',\n h: 'Ñк Ñоат',\n hh: '%d Ñоат',\n d: 'Ñк рӯз',\n dd: '%d рӯз',\n M: 'Ñк моҳ',\n MM: '%d моҳ',\n y: 'Ñк Ñол',\n yy: '%d Ñол'\n },\n meridiemParse: /шаб|Ñубҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'Ñубҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'Ñубҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1th is the first week of the year.\n }\n });\n return tg;\n});","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var th = moment.defineLocale('th', {\n months: 'มà¸à¸£à¸²à¸„ม_à¸à¸¸à¸¡à¸ าพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_à¸à¸£à¸à¸Žà¸²à¸„ม_สิงหาคม_à¸à¸±à¸™à¸¢à¸²à¸¢à¸™_ตุลาคม_พฤศจิà¸à¸²à¸¢à¸™_ธันวาคม'.split('_'),\n monthsShort: 'ม.ค._à¸.พ._มี.ค._เม.ย._พ.ค._มิ.ย._à¸.ค._ส.ค._à¸.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays: 'à¸à¸²à¸—ิตย์_จันทร์_à¸à¸±à¸‡à¸„าร_พุธ_พฤหัสบดี_ศุà¸à¸£à¹Œ_เสาร์'.split('_'),\n weekdaysShort: 'à¸à¸²à¸—ิตย์_จันทร์_à¸à¸±à¸‡à¸„าร_พุธ_พฤหัส_ศุà¸à¸£à¹Œ_เสาร์'.split('_'),\n // yes, three characters difference\n weekdaysMin: 'à¸à¸²._จ._à¸._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'\n },\n meridiemParse: /à¸à¹ˆà¸à¸™à¹€à¸—ี่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'à¸à¹ˆà¸à¸™à¹€à¸—ี่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่à¸à¸§à¸²à¸™à¸™à¸µà¹‰ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่à¹à¸¥à¹‰à¸§ เวลา] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'à¸à¸µà¸ %s',\n past: '%sที่à¹à¸¥à¹‰à¸§',\n s: 'ไม่à¸à¸µà¹ˆà¸§à¸´à¸™à¸²à¸—ี',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดืà¸à¸™',\n MM: '%d เดืà¸à¸™',\n y: '1 ปี',\n yy: '%d ปี'\n }\n });\n return th;\n});","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\"\n };\n var tk = moment.defineLocale('tk', {\n months: 'Ãanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split('_'),\n monthsShort: 'Ãan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'ÃekÅŸenbe_DuÅŸenbe_SiÅŸenbe_ÇarÅŸenbe_PenÅŸenbe_Anna_Åženbe'.split('_'),\n weekdaysShort: 'Ãek_DuÅŸ_SiÅŸ_Çar_Pen_Ann_Åžen'.split('_'),\n weekdaysMin: 'Ãk_DÅŸ_SÅŸ_Çr_Pn_An_Åžn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl'\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return tk;\n});","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm'\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return tlPh;\n});","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n function translateFuture(output) {\n var time = output;\n time = output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'leS' : output.indexOf('jar') !== -1 ? time.slice(0, -3) + 'waQ' : output.indexOf('DIS') !== -1 ? time.slice(0, -3) + 'nem' : time + ' pIq';\n return time;\n }\n function translatePast(output) {\n var time = output;\n time = output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'Hu’' : output.indexOf('jar') !== -1 ? time.slice(0, -3) + 'wen' : output.indexOf('DIS') !== -1 ? time.slice(0, -3) + 'ben' : time + ' ret';\n return time;\n }\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n function numberAsNoun(number) {\n var hundred = Math.floor(number % 1000 / 100),\n ten = Math.floor(number % 100 / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L'\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return tlh;\n});","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak YiÄŸit Kaya: https://github.com/BYK\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\"\n };\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Åžubat_Mart_Nisan_Mayıs_Haziran_Temmuz_AÄŸustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n monthsShort: 'Oca_Åžub_Mar_Nis_May_Haz_Tem_AÄŸu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_ÇarÅŸamba_PerÅŸembe_Cuma_Cumartesi'.split('_'),\n weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl'\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return tr;\n});","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à ] LT',\n nextDay: '[demà à ] LT',\n nextWeek: 'dddd [à ] LT',\n lastDay: '[ieiri à ] LT',\n lastWeek: '[sür el] dddd [lasteu à ] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n mÃut\", \"'iens mÃut\"],\n mm: [number + ' mÃuts', '' + number + ' mÃuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars']\n };\n return isFuture ? format[key][0] : withoutSuffix ? format[key][0] : format[key][1];\n }\n return tzl;\n});","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉâµâµâ´°âµ¢âµ”_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓâµâµ¢âµ“_ⵢⵓâµâµ¢âµ“âµ£_ⵖⵓⵛⵜ_ⵛⵓⵜⴰâµâ´±âµ‰âµ”_ⴽⵟⵓⴱⵕ_âµâµ“ⵡⴰâµâ´±âµ‰âµ”_ⴷⵓⵊâµâ´±âµ‰âµ”'.split('_'),\n monthsShort: 'ⵉâµâµâ´°âµ¢âµ”_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓâµâµ¢âµ“_ⵢⵓâµâµ¢âµ“âµ£_ⵖⵓⵛⵜ_ⵛⵓⵜⴰâµâ´±âµ‰âµ”_ⴽⵟⵓⴱⵕ_âµâµ“ⵡⴰâµâ´±âµ‰âµ”_ⴷⵓⵊâµâ´±âµ‰âµ”'.split('_'),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ â´´] LT',\n nextDay: '[ⴰⵙⴽⴰ â´´] LT',\n nextWeek: 'dddd [â´´] LT',\n lastDay: '[ⴰⵚⴰâµâµœ â´´] LT',\n lastWeek: 'dddd [â´´] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'â´·â´°â´·âµ… âµ™ ⵢⴰⵠ%s',\n past: 'ⵢⴰⵠ%s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉâµâµ“â´º',\n mm: '%d ⵎⵉâµâµ“â´º',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉâµ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰâµ',\n M: 'â´°âµ¢oⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔâµ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙâµ'\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n return tzm;\n});","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuá¸',\n mm: '%d minuá¸',\n h: 'saÉ›a',\n hh: '%d tassaÉ›in',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn'\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n return tzmLatn;\n});","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_ÙÛۋرال_مارت_ئاپرÛÙ„_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سÛنتەبىر_ئۆكتەبىر_نويابىر_دÛكابىر'.split('_'),\n monthsShort: 'يانۋار_ÙÛۋرال_مارت_ئاپرÛÙ„_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سÛنتەبىر_ئۆكتەبىر_نويابىر_دÛكابىر'.split('_'),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split('_'),\n weekdaysShort: 'ÙŠÛ•_دۈ_سە_چا_Ù¾Û•_جۈ_Ø´Û•'.split('_'),\n weekdaysMin: 'ÙŠÛ•_دۈ_سە_چا_Ù¾Û•_جۈ_Ø´Û•'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىÚD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىÚD-كۈنى، HH:mm',\n LLLL: 'ddddØŒ YYYY-يىلىM-ئاينىÚD-كۈنى، HH:mm'\n },\n meridiemParse: /ÙŠÛرىم ÙƒÛÚ†Û•|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن ÙƒÛيىن|ÙƒÛ•Ú†/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ÙŠÛرىم ÙƒÛÚ†Û•' || meridiem === 'سەھەر' || meridiem === 'چۈشتىن بۇرۇن') {\n return hour;\n } else if (meridiem === 'چۈشتىن ÙƒÛيىن' || meridiem === 'ÙƒÛ•Ú†') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'ÙŠÛرىم ÙƒÛÚ†Û•';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن ÙƒÛيىن';\n } else {\n return 'ÙƒÛ•Ú†';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[ÙƒÛلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ÙƒÛيىن',\n past: '%s بۇرۇن',\n s: 'Ù†Û•Ú†Ú†Û• سÛكونت',\n ss: '%d سÛكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر ÙƒÛˆÙ†',\n dd: '%d ÙƒÛˆÙ†',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n // GB/T 7408-1994《数æ®å…ƒå’Œäº¤æ¢æ ¼å¼Â·ä¿¡æ¯äº¤æ¢Â·æ—¥æœŸå’Œæ—¶é—´è¡¨ç¤ºæ³•ã€‹ä¸ŽISO 8601:1988ç‰æ•ˆ\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n });\n return ugCn;\n});","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'Ñекунда_Ñекунди_Ñекунд' : 'Ñекунду_Ñекунди_Ñекунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'міÑÑць_міÑÑці_міÑÑців',\n yy: 'рік_роки_років'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділÑ_понеділок_вівторок_Ñереда_четвер_п’ÑтницÑ_Ñубота'.split('_'),\n accusative: 'неділю_понеділок_вівторок_Ñереду_четвер_п’Ñтницю_Ñуботу'.split('_'),\n genitive: 'неділі_понеділка_вівторка_Ñереди_четверга_п’Ñтниці_Ñуботи'.split('_')\n },\n nounCase;\n if (m === true) {\n return weekdays['nominative'].slice(1, 7).concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format) ? 'accusative' : /\\[?(?:минулої|наÑтупної)? ?\\] ?dddd/.test(format) ? 'genitive' : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'ÑічнÑ_лютого_березнÑ_квітнÑ_травнÑ_червнÑ_липнÑ_ÑерпнÑ_вереÑнÑ_жовтнÑ_лиÑтопада_груднÑ'.split('_'),\n standalone: 'Ñічень_лютий_березень_квітень_травень_червень_липень_Ñерпень_вереÑень_жовтень_лиÑтопад_грудень'.split('_')\n },\n monthsShort: 'Ñіч_лют_бер_квіт_трав_черв_лип_Ñерп_вер_жовт_лиÑÑ‚_груд'.split('_'),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY Ñ€.',\n LLL: 'D MMMM YYYY Ñ€., HH:mm',\n LLLL: 'dddd, D MMMM YYYY Ñ€., HH:mm'\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька Ñекунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'міÑÑць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|днÑ|вечора/,\n isPM: function (input) {\n return /^(днÑ|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'днÑ';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return uk;\n});","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['جنوری', 'Ùروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعÛ', 'ÛÙتÛ'];\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ddddØŒ D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبØ|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبØ';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[Ú©Ù„ بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[Ú¯Ø°Ø´ØªÛ Ø±ÙˆØ² بوقت] LT',\n lastWeek: '[گذشتÛ] dddd [بوقت] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹÛ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماÛ',\n MM: '%d ماÛ',\n y: 'ایک سال',\n yy: '%d سال'\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return ur;\n});","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var uz = moment.defineLocale('uz', {\n months: 'Ñнвар_феврал_март_апрел_май_июн_июл_авгуÑÑ‚_ÑентÑбр_октÑбр_ноÑбр_декабр'.split('_'),\n monthsShort: 'Ñнв_фев_мар_апр_май_июн_июл_авг_Ñен_окт_ноÑ_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm'\n },\n calendar: {\n sameDay: '[Бугун Ñоат] LT [да]',\n nextDay: '[Ðртага] LT [да]',\n nextWeek: 'dddd [куни Ñоат] LT [да]',\n lastDay: '[Кеча Ñоат] LT [да]',\n lastWeek: '[Утган] dddd [куни Ñоат] LT [да]',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурÑат',\n ss: '%d фурÑат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир Ñоат',\n hh: '%d Ñоат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return uz;\n});","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm'\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n return uzLatn;\n});","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split('_'),\n monthsParseExact: true,\n weekdays: 'chủ nháºt_thứ hai_thứ ba_thứ tÆ°_thứ năm_thứ sáu_thứ bảy'.split('_'),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngà y mai lúc] LT',\n nextWeek: 'dddd [tuần tá»›i lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trÆ°á»›c lúc] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s tá»›i',\n past: '%s trÆ°á»›c',\n s: 'và i giây',\n ss: '%d giây',\n m: 'má»™t phút',\n mm: '%d phút',\n h: 'má»™t giá»',\n hh: '%d giá»',\n d: 'má»™t ngà y',\n dd: '%d ngà y',\n w: 'má»™t tuần',\n ww: '%d tuần',\n M: 'má»™t tháng',\n MM: '%d tháng',\n y: 'má»™t năm',\n yy: '%d năm'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return vi;\n});","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Ãp~rÃl_~Máý_~Júñé~_Júl~ý_Ãú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),\n monthsShort: 'J~áñ_~Féb_~Már_~Ãpr_~Máý_~Júñ_~Júl_~Ãúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~FrÃd~áý_S~átúr~dáý'.split('_'),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~FrÃ_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ã~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Ã~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~mÃñ~úté',\n mm: '%d m~Ãñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return xPseudo;\n});","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var yo = moment.defineLocale('yo', {\n months: 'SẹÌrẹÌ_EÌ€reÌ€leÌ€_Ẹrẹ̀naÌ€_IÌ€gbeÌ_EÌ€bibi_OÌ€kuÌ€du_Agẹmo_OÌ€guÌn_Owewe_Ọ̀waÌ€raÌ€_BeÌluÌ_Ọ̀pẹ̀̀'.split('_'),\n monthsShort: 'SẹÌr_EÌ€rl_Ẹrn_IÌ€gb_EÌ€bi_OÌ€kuÌ€_Agẹ_OÌ€guÌ_Owe_Ọ̀waÌ€_BeÌl_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'AÌ€iÌ€kuÌ_AjeÌ_IÌ€sẹÌgun_Ọjá»ÌruÌ_Ọjá»Ìbá»_ẸtiÌ€_AÌ€baÌmẹÌta'.split('_'),\n weekdaysShort: 'AÌ€iÌ€k_AjeÌ_IÌ€sẹÌ_Ọjr_Ọjb_ẸtiÌ€_AÌ€baÌ'.split('_'),\n weekdaysMin: 'AÌ€iÌ€_Aj_IÌ€s_Ọr_Ọb_Ẹt_AÌ€b'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[OÌ€niÌ€ ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ toÌn'bá»] [ni] LT\",\n lastDay: '[AÌ€na ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ toÌlá»Ì] [ni] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'niÌ %s',\n past: '%s ká»jaÌ',\n s: 'iÌ€sẹjuÌ aayaÌ die',\n ss: 'aayaÌ %d',\n m: 'iÌ€sẹjuÌ kan',\n mm: 'iÌ€sẹjuÌ %d',\n h: 'waÌkati kan',\n hh: 'waÌkati %d',\n d: 'á»já»Ì kan',\n dd: 'á»já»Ì %d',\n M: 'osuÌ€ kan',\n MM: 'osuÌ€ %d',\n y: 'á»duÌn kan',\n yy: 'á»duÌn %d'\n },\n dayOfMonthOrdinalParse: /á»já»Ì\\s\\d{1,2}/,\n ordinal: 'á»já»Ì %d',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return yo;\n});","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期å…'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周å…'.split('_'),\n weekdaysMin: 'æ—¥_一_二_三_å››_五_å…'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥Ah点mm分',\n LLLL: 'YYYYå¹´M月Dæ—¥ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上åˆ') {\n return hour;\n } else if (meridiem === '下åˆ' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // 'ä¸åˆ'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上åˆ';\n } else if (hm < 1230) {\n return 'ä¸åˆ';\n } else if (hm < 1800) {\n return '下åˆ';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%såŽ',\n past: '%så‰',\n s: 'å‡ ç§’',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 å°æ—¶',\n hh: '%d å°æ—¶',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 å¹´',\n yy: '%d å¹´'\n },\n week: {\n // GB/T 7408-1994《数æ®å…ƒå’Œäº¤æ¢æ ¼å¼Â·ä¿¡æ¯äº¤æ¢Â·æ—¥æœŸå’Œæ—¶é—´è¡¨ç¤ºæ³•ã€‹ä¸ŽISO 8601:1988ç‰æ•ˆ\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n return zhCn;\n});","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期å…'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週å…'.split('_'),\n weekdaysMin: 'æ—¥_一_二_三_å››_五_å…'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥ HH:mm',\n LLLL: 'YYYYå¹´M月Dæ—¥dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上åˆ') {\n return hour;\n } else if (meridiem === 'ä¸åˆ') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下åˆ' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上åˆ';\n } else if (hm === 1200) {\n return 'ä¸åˆ';\n } else if (hm < 1800) {\n return '下åˆ';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%så‰',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分é˜',\n mm: '%d 分é˜',\n h: '1 å°æ™‚',\n hh: '%d å°æ™‚',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 å¹´',\n yy: '%d å¹´'\n }\n });\n return zhHk;\n});","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期å…'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週å…'.split('_'),\n weekdaysMin: 'æ—¥_一_二_三_å››_五_å…'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥ HH:mm',\n LLLL: 'YYYYå¹´M月Dæ—¥dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上åˆ') {\n return hour;\n } else if (meridiem === 'ä¸åˆ') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下åˆ' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上åˆ';\n } else if (hm < 1230) {\n return 'ä¸åˆ';\n } else if (hm < 1800) {\n return '下åˆ';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%så…§',\n past: '%så‰',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分é˜',\n mm: '%d 分é˜',\n h: '1 å°æ™‚',\n hh: '%d å°æ™‚',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 å¹´',\n yy: '%d å¹´'\n }\n });\n return zhMo;\n});","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期å…'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週å…'.split('_'),\n weekdaysMin: 'æ—¥_一_二_三_å››_五_å…'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥ HH:mm',\n LLLL: 'YYYYå¹´M月Dæ—¥dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上åˆ') {\n return hour;\n } else if (meridiem === 'ä¸åˆ') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下åˆ' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上åˆ';\n } else if (hm < 1230) {\n return 'ä¸åˆ';\n } else if (hm < 1800) {\n return '下åˆ';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%så‰',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分é˜',\n mm: '%d 分é˜',\n h: '1 å°æ™‚',\n hh: '%d å°æ™‚',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 å¹´',\n yy: '%d å¹´'\n }\n });\n return zhTw;\n});","(function (global, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([\"exports\"], factory) : factory(global.ActiveStorage = {});\n})(this, function (exports) {\n \"use strict\";\n\n function createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n }\n var sparkMd5 = createCommonjsModule(function (module, exports) {\n (function (factory) {\n {\n module.exports = factory();\n }\n })(function (undefined) {\n var hex_chr = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n function md5blk(s) {\n var md5blks = [],\n i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n function md5blk_array(a) {\n var md5blks = [],\n i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function rhex(n) {\n var s = \"\",\n j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n return s;\n }\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join(\"\");\n }\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = val | 0 || 0;\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n return Math.min(val, length);\n }\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n if (to !== undefined) {\n end = clamp(to, length);\n }\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n return str;\n }\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n return returnUInt8Array ? arr : buff;\n }\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n return String.fromCharCode.apply(String, bytes);\n }\n function SparkMD5() {\n this.reset();\n }\n SparkMD5.prototype.append = function (str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length,\n i;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.prototype.reset = function () {\n this._buff = \"\";\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n return this;\n };\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash\n };\n };\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n SparkMD5.hash = function (str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n SparkMD5.ArrayBuffer = function () {\n this.reset();\n };\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n this._length += arr.byteLength;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n return SparkMD5;\n });\n });\n var classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n var createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n var FileChecksum = function () {\n createClass(FileChecksum, null, [{\n key: \"create\",\n value: function create(file, callback) {\n var instance = new FileChecksum(file);\n instance.create(callback);\n }\n }]);\n function FileChecksum(file) {\n classCallCheck(this, FileChecksum);\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n createClass(FileChecksum, [{\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n this.callback = callback;\n this.md5Buffer = new sparkMd5.ArrayBuffer();\n this.fileReader = new FileReader();\n this.fileReader.addEventListener(\"load\", function (event) {\n return _this.fileReaderDidLoad(event);\n });\n this.fileReader.addEventListener(\"error\", function (event) {\n return _this.fileReaderDidError(event);\n });\n this.readNextChunk();\n }\n }, {\n key: \"fileReaderDidLoad\",\n value: function fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n if (!this.readNextChunk()) {\n var binaryDigest = this.md5Buffer.end(true);\n var base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n }, {\n key: \"fileReaderDidError\",\n value: function fileReaderDidError(event) {\n this.callback(\"Error reading \" + this.file.name);\n }\n }, {\n key: \"readNextChunk\",\n value: function readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n var start = this.chunkIndex * this.chunkSize;\n var end = Math.min(start + this.chunkSize, this.file.size);\n var bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n }]);\n return FileChecksum;\n }();\n function getMetaValue(name) {\n var element = findElement(document.head, 'meta[name=\"' + name + '\"]');\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n function findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n var elements = root.querySelectorAll(selector);\n return toArray$1(elements);\n }\n function findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n return root.querySelector(selector);\n }\n function dispatchEvent(element, type) {\n var eventInit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var disabled = element.disabled;\n var bubbles = eventInit.bubbles,\n cancelable = eventInit.cancelable,\n detail = eventInit.detail;\n var event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n return event;\n }\n function toArray$1(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n }\n var BlobRecord = function () {\n function BlobRecord(file, checksum, url) {\n var _this = this;\n classCallCheck(this, BlobRecord);\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type,\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n var csrfToken = getMetaValue(\"csrf-token\");\n if (csrfToken != undefined) {\n this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n }\n this.xhr.addEventListener(\"load\", function (event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function (event) {\n return _this.requestDidError(event);\n });\n }\n createClass(BlobRecord, [{\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n var response = this.response;\n var direct_upload = response.direct_upload;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error creating Blob for \"' + this.file.name + '\". Status: ' + this.status);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var result = {};\n for (var key in this.attributes) {\n result[key] = this.attributes[key];\n }\n return result;\n }\n }, {\n key: \"status\",\n get: function get$$1() {\n return this.xhr.status;\n }\n }, {\n key: \"response\",\n get: function get$$1() {\n var _xhr = this.xhr,\n responseType = _xhr.responseType,\n response = _xhr.response;\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n }]);\n return BlobRecord;\n }();\n var BlobUpload = function () {\n function BlobUpload(blob) {\n var _this = this;\n classCallCheck(this, BlobUpload);\n this.blob = blob;\n this.file = blob.file;\n var _blob$directUploadDat = blob.directUploadData,\n url = _blob$directUploadDat.url,\n headers = _blob$directUploadDat.headers;\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n for (var key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n this.xhr.addEventListener(\"load\", function (event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function (event) {\n return _this.requestDidError(event);\n });\n }\n createClass(BlobUpload, [{\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n var _xhr = this.xhr,\n status = _xhr.status,\n response = _xhr.response;\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error storing \"' + this.file.name + '\". Status: ' + this.xhr.status);\n }\n }]);\n return BlobUpload;\n }();\n var id = 0;\n var DirectUpload = function () {\n function DirectUpload(file, url, delegate) {\n classCallCheck(this, DirectUpload);\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n }\n createClass(DirectUpload, [{\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n FileChecksum.create(this.file, function (error, checksum) {\n if (error) {\n callback(error);\n return;\n }\n var blob = new BlobRecord(_this.file, checksum, _this.url);\n notify(_this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create(function (error) {\n if (error) {\n callback(error);\n } else {\n var upload = new BlobUpload(blob);\n notify(_this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create(function (error) {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n });\n }\n });\n });\n }\n }]);\n return DirectUpload;\n }();\n function notify(object, methodName) {\n if (object && typeof object[methodName] == \"function\") {\n for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n messages[_key - 2] = arguments[_key];\n }\n return object[methodName].apply(object, messages);\n }\n }\n var DirectUploadController = function () {\n function DirectUploadController(input, file) {\n classCallCheck(this, DirectUploadController);\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n createClass(DirectUploadController, [{\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n var hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(function (error, attributes) {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n _this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n _this.dispatch(\"end\");\n callback(error);\n });\n }\n }, {\n key: \"uploadRequestDidProgress\",\n value: function uploadRequestDidProgress(event) {\n var progress = event.loaded / event.total * 100;\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, \"direct-upload:\" + name, {\n detail: detail\n });\n }\n }, {\n key: \"dispatchError\",\n value: function dispatchError(error) {\n var event = this.dispatch(\"error\", {\n error: error\n });\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n }, {\n key: \"directUploadWillCreateBlobWithXHR\",\n value: function directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n }, {\n key: \"directUploadWillStoreFileWithXHR\",\n value: function directUploadWillStoreFileWithXHR(xhr) {\n var _this2 = this;\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", function (event) {\n return _this2.uploadRequestDidProgress(event);\n });\n }\n }, {\n key: \"url\",\n get: function get$$1() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n }]);\n return DirectUploadController;\n }();\n var inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n var DirectUploadsController = function () {\n function DirectUploadsController(form) {\n classCallCheck(this, DirectUploadsController);\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter(function (input) {\n return input.files.length;\n });\n }\n createClass(DirectUploadsController, [{\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n var controllers = this.createDirectUploadControllers();\n var startNextController = function startNextController() {\n var controller = controllers.shift();\n if (controller) {\n controller.start(function (error) {\n if (error) {\n callback(error);\n _this.dispatch(\"end\");\n } else {\n startNextController();\n }\n });\n } else {\n callback();\n _this.dispatch(\"end\");\n }\n };\n this.dispatch(\"start\");\n startNextController();\n }\n }, {\n key: \"createDirectUploadControllers\",\n value: function createDirectUploadControllers() {\n var controllers = [];\n this.inputs.forEach(function (input) {\n toArray$1(input.files).forEach(function (file) {\n var controller = new DirectUploadController(input, file);\n controllers.push(controller);\n });\n });\n return controllers;\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return dispatchEvent(this.form, \"direct-uploads:\" + name, {\n detail: detail\n });\n }\n }]);\n return DirectUploadsController;\n }();\n var processingAttribute = \"data-direct-uploads-processing\";\n var submitButtonsByForm = new WeakMap();\n var started = false;\n function start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n }\n function didClick(event) {\n var target = event.target;\n if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n submitButtonsByForm.set(target.form, target);\n }\n }\n function didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n }\n function didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n }\n function handleFormSubmissionEvent(event) {\n var form = event.target;\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n var controller = new DirectUploadsController(form);\n var inputs = controller.inputs;\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start(function (error) {\n form.removeAttribute(processingAttribute);\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n });\n }\n }\n function submitForm(form) {\n var button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n if (button) {\n var _button = button,\n disabled = _button.disabled;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n submitButtonsByForm.delete(form);\n }\n function disable(input) {\n input.disabled = true;\n }\n function enable(input) {\n input.disabled = false;\n }\n function autostart() {\n if (window.ActiveStorage) {\n start();\n }\n }\n setTimeout(autostart, 1);\n exports.start = start;\n exports.DirectUpload = DirectUpload;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n});","/* eslint no-console:0 */\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n//\n// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate\n// layout file, like app/views/layouts/application.html.erb\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\n\n// Import jQuery first\nimport $ from \"jquery\";\nwindow.jQuery = $;\nwindow.$ = $;\n\n// Rails-related libraries\nimport Rails from \"@rails/ujs\";\nimport * as ActiveStorage from \"@rails/activestorage\";\n// import Turbolinks from \"turbolinks\"\n\nRails.start();\nActiveStorage.start();\n// Turbolinks.start()\n\n// Expose functions globally\nwindow.Rails = Rails;\nwindow.toastr = toastr;\n\n// NPM Modules\nimport \"popper.js\";\nimport \"bootstrap\";\nimport \"jquery-ui\";\nimport \"jquery-datetimepicker\";\nimport \"jquery-minicolors\";\nimport \"bootstrap-slider\";\nimport \"toastr/toastr\";\nimport \"moment\";\nimport \"fullcalendar\";\nimport \"@nathanvda/cocoon\";\nimport \"enjoyhint\";\nimport \"jquery-ui/dist/jquery-ui\";\nimport \"select2/dist/js/select2.full.min.js\";\nimport \"multiple-select/dist/multiple-select.min.js\";\nimport \"jquery-validation\";\nimport \"rateyo\";\nimport \"bootstrap-toggle\";\nimport \"./nested_form\";\n\n// Custom JS Imports\nimport \"../src/bootstrap-tagsinput\";\nimport \"../src/jquery_periodicalupdater\";\nimport \"../src/jquery_updater\";\nimport \"../src/app_custom\";\nimport \"../src/outsideclick\";\nimport \"../src/custom-audio-player\";\nimport \"../src/yearpicker\";\nimport \"../src/profile\";\nimport \"../src/report_expansion\";\nimport \"../src/user_progression\";\nimport \"../src/sticky_notes\";\nimport \"../src/report_reminder\";\nimport \"../src/principals\";\nimport \"../src/induction\";\n\n// CoffeeScripts\nimport \"../src/coffeescripts/interns.coffee\";\nimport \"../src/coffeescripts/users.coffee\";\nimport \"../src/coffeescripts/resources.coffee\";\nimport \"../src/coffeescripts/ministers.coffee\";\nimport \"../src/coffeescripts/activities.coffee\";\nimport \"../src/coffeescripts/report.coffee\";\nimport \"../src/coffeescripts/locations.coffee\";\nimport \"../src/coffeescripts/questionnaires.coffee\";\nimport \"../src/coffeescripts/reviews.coffee\";\nimport \"../src/coffeescripts/schedule_times.coffee\";\nimport \"../src/coffeescripts/resource_reports.coffee\";\nimport \"../src/coffeescripts/lay_users.coffee\";\nimport \"../src/coffeescripts/job_postings.coffee\";\nimport \"../src/coffeescripts/unions.coffee\";\nimport \"../src/coffeescripts/ms_associate.coffee\";\nimport \"../src/coffeescripts/auxano_plans.coffee\";\nimport \"../src/coffeescripts/appointments.coffee\";\nimport \"../src/coffeescripts/conferences.coffee\";\nimport \"../src/coffeescripts/admin_reports.coffee\";\nimport \"../src/coffeescripts/evaluation_summaries.coffee\";\n\n// ActionCable Channels\nimport \"../channels/notification.coffee\";\nimport \"../channels/web_notifications.coffee\";\n// import '../channels/real_time_changes'\n\n// CSS Module Imports\n// import \"@fortawesome/fontawesome-free/css/all.css\";\n// import \"jquery-ui/dist/themes/base/jquery-ui.min.css\";\n\n$(function () {\n $('[data-toggle=\"tooltip\"]').tooltip();\n\n $(\".datepicker\").datepicker({\n dateFormat: \"dd M yy\",\n });\n\n $(\"form#custom-resources\").on(\"keypress\", function (e) {\n if (e.keyCode == 13) {\n return false;\n }\n });\n\n // close notification dropdown when click outside of notification\n $(\".notification.px-4\").bind(\"clickoutside\", function () {\n var currentElement = $(\"a.notification-bell-icon\");\n var parent = currentElement.closest(\".dropdown\");\n currentElement.attr(\"aria-expanded\", false);\n parent.removeClass(\"show\");\n parent.find(\"ul.dropdown-menu\").removeClass(\"show\");\n });\n\n $(\".update.px-4\").bind(\"clickoutside\", function () {\n var currentElement = $(\"a.update-bell-icon\");\n var parent = currentElement.closest(\".dropdown\");\n currentElement.attr(\"aria-expanded\", false);\n parent.removeClass(\"show\");\n parent.find(\"ul.dropdown-menu\").removeClass(\"show\");\n });\n});\n\n$(document).on(\"click\", \".custom-submit-loader\", function (e) {\n e.preventDefault();\n $(\"#loader-cont\").show();\n let form = $(this).closest(\"form\");\n if (form.attr(\"data-remote\")) {\n Rails.fire(form[0], \"submit\");\n } else {\n form.submit();\n }\n});\n\n$(document).on(\"ajax:success\", function () {\n $(\"#loader-cont\").hide();\n});\n","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","/*!\n * Bootstrap v4.6.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) : typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n})(this, function (exports, $, Popper) {\n 'use strict';\n\n function _interopDefaultLegacy(e) {\n return e && typeof e === 'object' && 'default' in e ? e : {\n 'default': e\n };\n }\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n }\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n var TRANSITION_END = 'transitionend';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return \"\" + obj;\n }\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($__default['default'](event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n return undefined;\n }\n };\n }\n function transitionEndEmulator(duration) {\n var _this = this;\n var called = false;\n $__default['default'](this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n function setTransitionEndSupport() {\n $__default['default'].fn.emulateTransitionEnd = transitionEndEmulator;\n $__default['default'].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n if (!selector || selector === '#') {\n var hrefAttr = element.getAttribute('href');\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n }\n try {\n return document.querySelector(selector) ? selector : null;\n } catch (_) {\n return null;\n }\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n var transitionDuration = $__default['default'](element).css('transition-duration');\n var transitionDelay = $__default['default'](element).css('transition-delay');\n var floatTransitionDuration = parseFloat(transitionDuration);\n var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $__default['default'](element).trigger(TRANSITION_END);\n },\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n if (typeof element.getRootNode === 'function') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n if (!element.parentNode) {\n return null;\n }\n return Util.findShadowRoot(element.parentNode);\n },\n jQueryDetection: function jQueryDetection() {\n if (typeof $__default['default'] === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n }\n var version = $__default['default'].fn.jquery.split(' ')[0].split('.');\n var minMajor = 1;\n var ltMajor = 2;\n var minMinor = 9;\n var minPatch = 1;\n var maxMajor = 4;\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n }\n }\n };\n Util.jQueryDetection();\n setTransitionEndSupport();\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME = 'alert';\n var VERSION = '4.6.0';\n var DATA_KEY = 'bs.alert';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];\n var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n var EVENT_CLOSE = \"close\" + EVENT_KEY;\n var EVENT_CLOSED = \"closed\" + EVENT_KEY;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var CLASS_NAME_ALERT = 'alert';\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_SHOW = 'show';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Alert = /*#__PURE__*/function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n var _proto = Alert.prototype;\n\n // Public\n _proto.close = function close(element) {\n var rootElement = this._element;\n if (element) {\n rootElement = this._getRootElement(element);\n }\n var customEvent = this._triggerCloseEvent(rootElement);\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n this._removeElement(rootElement);\n };\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY);\n this._element = null;\n } // Private\n ;\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util.getSelectorFromElement(element);\n var parent = false;\n if (selector) {\n parent = document.querySelector(selector);\n }\n if (!parent) {\n parent = $__default['default'](element).closest(\".\" + CLASS_NAME_ALERT)[0];\n }\n return parent;\n };\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $__default['default'].Event(EVENT_CLOSE);\n $__default['default'](element).trigger(closeEvent);\n return closeEvent;\n };\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n $__default['default'](element).removeClass(CLASS_NAME_SHOW);\n if (!$__default['default'](element).hasClass(CLASS_NAME_FADE)) {\n this._destroyElement(element);\n return;\n }\n var transitionDuration = Util.getTransitionDurationFromElement(element);\n $__default['default'](element).one(Util.TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n _proto._destroyElement = function _destroyElement(element) {\n $__default['default'](element).detach().trigger(EVENT_CLOSED).remove();\n } // Static\n ;\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default['default'](this);\n var data = $element.data(DATA_KEY);\n if (!data) {\n data = new Alert(this);\n $element.data(DATA_KEY, data);\n }\n if (config === 'close') {\n data[config](this);\n }\n });\n };\n Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n alertInstance.close(this);\n };\n };\n _createClass(Alert, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n return Alert;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME] = Alert._jQueryInterface;\n $__default['default'].fn[NAME].Constructor = Alert;\n $__default['default'].fn[NAME].noConflict = function () {\n $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;\n return Alert._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$1 = 'button';\n var VERSION$1 = '4.6.0';\n var DATA_KEY$1 = 'bs.button';\n var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n var DATA_API_KEY$1 = '.data-api';\n var JQUERY_NO_CONFLICT$1 = $__default['default'].fn[NAME$1];\n var CLASS_NAME_ACTIVE = 'active';\n var CLASS_NAME_BUTTON = 'btn';\n var CLASS_NAME_FOCUS = 'focus';\n var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]';\n var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n var SELECTOR_ACTIVE = '.active';\n var SELECTOR_BUTTON = '.btn';\n var EVENT_CLICK_DATA_API$1 = \"click\" + EVENT_KEY$1 + DATA_API_KEY$1;\n var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY$1 + DATA_API_KEY$1 + \" \" + (\"blur\" + EVENT_KEY$1 + DATA_API_KEY$1);\n var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$1 + DATA_API_KEY$1;\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Button = /*#__PURE__*/function () {\n function Button(element) {\n this._element = element;\n this.shouldAvoidTriggerChange = false;\n } // Getters\n\n var _proto = Button.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $__default['default'](this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n if (rootElement) {\n var input = this._element.querySelector(SELECTOR_INPUT);\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n triggerChangeEvent = false;\n } else {\n var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);\n if (activeElement) {\n $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE);\n }\n }\n }\n if (triggerChangeEvent) {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n if (input.type === 'checkbox' || input.type === 'radio') {\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE);\n }\n if (!this.shouldAvoidTriggerChange) {\n $__default['default'](input).trigger('change');\n }\n }\n input.focus();\n addAriaPressed = false;\n }\n }\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE));\n }\n if (triggerChangeEvent) {\n $__default['default'](this._element).toggleClass(CLASS_NAME_ACTIVE);\n }\n }\n };\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY$1);\n this._element = null;\n } // Static\n ;\n Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n return this.each(function () {\n var $element = $__default['default'](this);\n var data = $element.data(DATA_KEY$1);\n if (!data) {\n data = new Button(this);\n $element.data(DATA_KEY$1, data);\n }\n data.shouldAvoidTriggerChange = avoidTriggerChange;\n if (config === 'toggle') {\n data[config]();\n }\n });\n };\n _createClass(Button, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$1;\n }\n }]);\n return Button;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = event.target;\n var initialButton = button;\n if (!$__default['default'](button).hasClass(CLASS_NAME_BUTTON)) {\n button = $__default['default'](button).closest(SELECTOR_BUTTON)[0];\n }\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault(); // work around Firefox bug #1540995\n } else {\n var inputBtn = button.querySelector(SELECTOR_INPUT);\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault(); // work around Firefox bug #1540995\n\n return;\n }\n if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n Button._jQueryInterface.call($__default['default'](button), 'toggle', initialButton.tagName === 'INPUT');\n }\n }\n }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = $__default['default'](event.target).closest(SELECTOR_BUTTON)[0];\n $__default['default'](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n });\n $__default['default'](window).on(EVENT_LOAD_DATA_API, function () {\n // ensure correct active class is set to match the controls' actual values/states\n // find all checkboxes/readio buttons inside data-toggle groups\n var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n for (var i = 0, len = buttons.length; i < len; i++) {\n var button = buttons[i];\n var input = button.querySelector(SELECTOR_INPUT);\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(CLASS_NAME_ACTIVE);\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE);\n }\n } // find all button toggles\n\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));\n for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n var _button = buttons[_i];\n if (_button.getAttribute('aria-pressed') === 'true') {\n _button.classList.add(CLASS_NAME_ACTIVE);\n } else {\n _button.classList.remove(CLASS_NAME_ACTIVE);\n }\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$1] = Button._jQueryInterface;\n $__default['default'].fn[NAME$1].Constructor = Button;\n $__default['default'].fn[NAME$1].noConflict = function () {\n $__default['default'].fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n return Button._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$2 = 'carousel';\n var VERSION$2 = '4.6.0';\n var DATA_KEY$2 = 'bs.carousel';\n var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n var DATA_API_KEY$2 = '.data-api';\n var JQUERY_NO_CONFLICT$2 = $__default['default'].fn[NAME$2];\n var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n var SWIPE_THRESHOLD = 40;\n var Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n };\n var DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n };\n var DIRECTION_NEXT = 'next';\n var DIRECTION_PREV = 'prev';\n var DIRECTION_LEFT = 'left';\n var DIRECTION_RIGHT = 'right';\n var EVENT_SLIDE = \"slide\" + EVENT_KEY$2;\n var EVENT_SLID = \"slid\" + EVENT_KEY$2;\n var EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$2;\n var EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$2;\n var EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$2;\n var EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$2;\n var EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$2;\n var EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$2;\n var EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$2;\n var EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$2;\n var EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$2;\n var EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$2 + DATA_API_KEY$2;\n var EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$2 + DATA_API_KEY$2;\n var CLASS_NAME_CAROUSEL = 'carousel';\n var CLASS_NAME_ACTIVE$1 = 'active';\n var CLASS_NAME_SLIDE = 'slide';\n var CLASS_NAME_RIGHT = 'carousel-item-right';\n var CLASS_NAME_LEFT = 'carousel-item-left';\n var CLASS_NAME_NEXT = 'carousel-item-next';\n var CLASS_NAME_PREV = 'carousel-item-prev';\n var CLASS_NAME_POINTER_EVENT = 'pointer-event';\n var SELECTOR_ACTIVE$1 = '.active';\n var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n var SELECTOR_ITEM = '.carousel-item';\n var SELECTOR_ITEM_IMG = '.carousel-item img';\n var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n var SELECTOR_INDICATORS = '.carousel-indicators';\n var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';\n var SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]';\n var PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Carousel = /*#__PURE__*/function () {\n function Carousel(element, config) {\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._element = element;\n this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n this._addEventListeners();\n } // Getters\n\n var _proto = Carousel.prototype;\n\n // Public\n _proto.next = function next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT);\n }\n };\n _proto.nextWhenVisible = function nextWhenVisible() {\n var $element = $__default['default'](this._element); // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n\n if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {\n this.next();\n }\n };\n _proto.prev = function prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV);\n }\n };\n _proto.pause = function pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n clearInterval(this._interval);\n this._interval = null;\n };\n _proto.cycle = function cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n if (this._config.interval && !this._isPaused) {\n this._updateInterval();\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n };\n _proto.to = function to(index) {\n var _this = this;\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n var activeIndex = this._getItemIndex(this._activeElement);\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n if (this._isSliding) {\n $__default['default'](this._element).one(EVENT_SLID, function () {\n return _this.to(index);\n });\n return;\n }\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n this._slide(direction, this._items[index]);\n };\n _proto.dispose = function dispose() {\n $__default['default'](this._element).off(EVENT_KEY$2);\n $__default['default'].removeData(this._element, DATA_KEY$2);\n this._items = null;\n this._config = null;\n this._element = null;\n this._interval = null;\n this._isPaused = null;\n this._isSliding = null;\n this._activeElement = null;\n this._indicatorsElement = null;\n } // Private\n ;\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default, config);\n Util.typeCheckConfig(NAME$2, config, DefaultType);\n return config;\n };\n _proto._handleSwipe = function _handleSwipe() {\n var absDeltax = Math.abs(this.touchDeltaX);\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n var direction = absDeltax / this.touchDeltaX;\n this.touchDeltaX = 0; // swipe left\n\n if (direction > 0) {\n this.prev();\n } // swipe right\n\n if (direction < 0) {\n this.next();\n }\n };\n _proto._addEventListeners = function _addEventListeners() {\n var _this2 = this;\n if (this._config.keyboard) {\n $__default['default'](this._element).on(EVENT_KEYDOWN, function (event) {\n return _this2._keydown(event);\n });\n }\n if (this._config.pause === 'hover') {\n $__default['default'](this._element).on(EVENT_MOUSEENTER, function (event) {\n return _this2.pause(event);\n }).on(EVENT_MOUSELEAVE, function (event) {\n return _this2.cycle(event);\n });\n }\n if (this._config.touch) {\n this._addTouchEventListeners();\n }\n };\n _proto._addTouchEventListeners = function _addTouchEventListeners() {\n var _this3 = this;\n if (!this._touchSupported) {\n return;\n }\n var start = function start(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchStartX = event.originalEvent.clientX;\n } else if (!_this3._pointerEvent) {\n _this3.touchStartX = event.originalEvent.touches[0].clientX;\n }\n };\n var move = function move(event) {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n _this3.touchDeltaX = 0;\n } else {\n _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;\n }\n };\n var end = function end(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n }\n _this3._handleSwipe();\n if (_this3._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n _this3.pause();\n if (_this3.touchTimeout) {\n clearTimeout(_this3.touchTimeout);\n }\n _this3.touchTimeout = setTimeout(function (event) {\n return _this3.cycle(event);\n }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n }\n };\n $__default['default'](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n return e.preventDefault();\n });\n if (this._pointerEvent) {\n $__default['default'](this._element).on(EVENT_POINTERDOWN, function (event) {\n return start(event);\n });\n $__default['default'](this._element).on(EVENT_POINTERUP, function (event) {\n return end(event);\n });\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n $__default['default'](this._element).on(EVENT_TOUCHSTART, function (event) {\n return start(event);\n });\n $__default['default'](this._element).on(EVENT_TOUCHMOVE, function (event) {\n return move(event);\n });\n $__default['default'](this._element).on(EVENT_TOUCHEND, function (event) {\n return end(event);\n });\n }\n };\n _proto._keydown = function _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault();\n this.prev();\n break;\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault();\n this.next();\n break;\n }\n };\n _proto._getItemIndex = function _getItemIndex(element) {\n this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];\n return this._items.indexOf(element);\n };\n _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n var isNextDirection = direction === DIRECTION_NEXT;\n var isPrevDirection = direction === DIRECTION_PREV;\n var activeIndex = this._getItemIndex(activeElement);\n var lastItemIndex = this._items.length - 1;\n var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n var delta = direction === DIRECTION_PREV ? -1 : 1;\n var itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n };\n _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n var targetIndex = this._getItemIndex(relatedTarget);\n var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));\n var slideEvent = $__default['default'].Event(EVENT_SLIDE, {\n relatedTarget: relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n $__default['default'](this._element).trigger(slideEvent);\n return slideEvent;\n };\n _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));\n $__default['default'](indicators).removeClass(CLASS_NAME_ACTIVE$1);\n var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n if (nextIndicator) {\n $__default['default'](nextIndicator).addClass(CLASS_NAME_ACTIVE$1);\n }\n }\n };\n _proto._updateInterval = function _updateInterval() {\n var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n if (!element) {\n return;\n }\n var elementInterval = parseInt(element.getAttribute('data-interval'), 10);\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n this._config.interval = elementInterval;\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval;\n }\n };\n _proto._slide = function _slide(direction, element) {\n var _this4 = this;\n var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n var activeElementIndex = this._getItemIndex(activeElement);\n var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n var nextElementIndex = this._getItemIndex(nextElement);\n var isCycling = Boolean(this._interval);\n var directionalClassName;\n var orderClassName;\n var eventDirectionName;\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT;\n orderClassName = CLASS_NAME_NEXT;\n eventDirectionName = DIRECTION_LEFT;\n } else {\n directionalClassName = CLASS_NAME_RIGHT;\n orderClassName = CLASS_NAME_PREV;\n eventDirectionName = DIRECTION_RIGHT;\n }\n if (nextElement && $__default['default'](nextElement).hasClass(CLASS_NAME_ACTIVE$1)) {\n this._isSliding = false;\n return;\n }\n var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n if (slideEvent.isDefaultPrevented()) {\n return;\n }\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n this._isSliding = true;\n if (isCycling) {\n this.pause();\n }\n this._setActiveIndicatorElement(nextElement);\n this._activeElement = nextElement;\n var slidEvent = $__default['default'].Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n if ($__default['default'](this._element).hasClass(CLASS_NAME_SLIDE)) {\n $__default['default'](nextElement).addClass(orderClassName);\n Util.reflow(nextElement);\n $__default['default'](activeElement).addClass(directionalClassName);\n $__default['default'](nextElement).addClass(directionalClassName);\n var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n $__default['default'](activeElement).one(Util.TRANSITION_END, function () {\n $__default['default'](nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(CLASS_NAME_ACTIVE$1);\n $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE$1 + \" \" + orderClassName + \" \" + directionalClassName);\n _this4._isSliding = false;\n setTimeout(function () {\n return $__default['default'](_this4._element).trigger(slidEvent);\n }, 0);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n $__default['default'](activeElement).removeClass(CLASS_NAME_ACTIVE$1);\n $__default['default'](nextElement).addClass(CLASS_NAME_ACTIVE$1);\n this._isSliding = false;\n $__default['default'](this._element).trigger(slidEvent);\n }\n if (isCycling) {\n this.cycle();\n }\n } // Static\n ;\n Carousel._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY$2);\n var _config = _extends({}, Default, $__default['default'](this).data());\n if (typeof config === 'object') {\n _config = _extends({}, _config, config);\n }\n var action = typeof config === 'string' ? config : _config.slide;\n if (!data) {\n data = new Carousel(this, _config);\n $__default['default'](this).data(DATA_KEY$2, data);\n }\n if (typeof config === 'number') {\n data.to(config);\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n }\n data[action]();\n } else if (_config.interval && _config.ride) {\n data.pause();\n data.cycle();\n }\n });\n };\n Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n var selector = Util.getSelectorFromElement(this);\n if (!selector) {\n return;\n }\n var target = $__default['default'](selector)[0];\n if (!target || !$__default['default'](target).hasClass(CLASS_NAME_CAROUSEL)) {\n return;\n }\n var config = _extends({}, $__default['default'](target).data(), $__default['default'](this).data());\n var slideIndex = this.getAttribute('data-slide-to');\n if (slideIndex) {\n config.interval = false;\n }\n Carousel._jQueryInterface.call($__default['default'](target), config);\n if (slideIndex) {\n $__default['default'](target).data(DATA_KEY$2).to(slideIndex);\n }\n event.preventDefault();\n };\n _createClass(Carousel, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$2;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n return Carousel;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n $__default['default'](window).on(EVENT_LOAD_DATA_API$1, function () {\n var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));\n for (var i = 0, len = carousels.length; i < len; i++) {\n var $carousel = $__default['default'](carousels[i]);\n Carousel._jQueryInterface.call($carousel, $carousel.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$2] = Carousel._jQueryInterface;\n $__default['default'].fn[NAME$2].Constructor = Carousel;\n $__default['default'].fn[NAME$2].noConflict = function () {\n $__default['default'].fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n return Carousel._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$3 = 'collapse';\n var VERSION$3 = '4.6.0';\n var DATA_KEY$3 = 'bs.collapse';\n var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n var DATA_API_KEY$3 = '.data-api';\n var JQUERY_NO_CONFLICT$3 = $__default['default'].fn[NAME$3];\n var Default$1 = {\n toggle: true,\n parent: ''\n };\n var DefaultType$1 = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n var EVENT_SHOW = \"show\" + EVENT_KEY$3;\n var EVENT_SHOWN = \"shown\" + EVENT_KEY$3;\n var EVENT_HIDE = \"hide\" + EVENT_KEY$3;\n var EVENT_HIDDEN = \"hidden\" + EVENT_KEY$3;\n var EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$3 + DATA_API_KEY$3;\n var CLASS_NAME_SHOW$1 = 'show';\n var CLASS_NAME_COLLAPSE = 'collapse';\n var CLASS_NAME_COLLAPSING = 'collapsing';\n var CLASS_NAME_COLLAPSED = 'collapsed';\n var DIMENSION_WIDTH = 'width';\n var DIMENSION_HEIGHT = 'height';\n var SELECTOR_ACTIVES = '.show, .collapsing';\n var SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"collapse\"]';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Collapse = /*#__PURE__*/function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$1));\n for (var i = 0, len = toggleList.length; i < len; i++) {\n var elem = toggleList[i];\n var selector = Util.getSelectorFromElement(elem);\n var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n return foundElem === element;\n });\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector;\n this._triggerArray.push(elem);\n }\n }\n this._parent = this._config.parent ? this._getParent() : null;\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n var _proto = Collapse.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if ($__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) {\n this.hide();\n } else {\n this.show();\n }\n };\n _proto.show = function show() {\n var _this = this;\n if (this._isTransitioning || $__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) {\n return;\n }\n var actives;\n var activesData;\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {\n if (typeof _this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === _this._config.parent;\n }\n return elem.classList.contains(CLASS_NAME_COLLAPSE);\n });\n if (actives.length === 0) {\n actives = null;\n }\n }\n if (actives) {\n activesData = $__default['default'](actives).not(this._selector).data(DATA_KEY$3);\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n var startEvent = $__default['default'].Event(EVENT_SHOW);\n $__default['default'](this._element).trigger(startEvent);\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n if (actives) {\n Collapse._jQueryInterface.call($__default['default'](actives).not(this._selector), 'hide');\n if (!activesData) {\n $__default['default'](actives).data(DATA_KEY$3, null);\n }\n }\n var dimension = this._getDimension();\n $__default['default'](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n if (this._triggerArray.length) {\n $__default['default'](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);\n }\n this.setTransitioning(true);\n var complete = function complete() {\n $__default['default'](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$1);\n _this._element.style[dimension] = '';\n _this.setTransitioning(false);\n $__default['default'](_this._element).trigger(EVENT_SHOWN);\n };\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = \"scroll\" + capitalizedDimension;\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n this._element.style[dimension] = this._element[scrollSize] + \"px\";\n };\n _proto.hide = function hide() {\n var _this2 = this;\n if (this._isTransitioning || !$__default['default'](this._element).hasClass(CLASS_NAME_SHOW$1)) {\n return;\n }\n var startEvent = $__default['default'].Event(EVENT_HIDE);\n $__default['default'](this._element).trigger(startEvent);\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n var dimension = this._getDimension();\n this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n Util.reflow(this._element);\n $__default['default'](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$1);\n var triggerArrayLength = this._triggerArray.length;\n if (triggerArrayLength > 0) {\n for (var i = 0; i < triggerArrayLength; i++) {\n var trigger = this._triggerArray[i];\n var selector = Util.getSelectorFromElement(trigger);\n if (selector !== null) {\n var $elem = $__default['default']([].slice.call(document.querySelectorAll(selector)));\n if (!$elem.hasClass(CLASS_NAME_SHOW$1)) {\n $__default['default'](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);\n }\n }\n }\n }\n this.setTransitioning(true);\n var complete = function complete() {\n _this2.setTransitioning(false);\n $__default['default'](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN);\n };\n this._element.style[dimension] = '';\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n };\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY$3);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n } // Private\n ;\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$1, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME$3, config, DefaultType$1);\n return config;\n };\n _proto._getDimension = function _getDimension() {\n var hasWidth = $__default['default'](this._element).hasClass(DIMENSION_WIDTH);\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;\n };\n _proto._getParent = function _getParent() {\n var _this3 = this;\n var parent;\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent; // It's a jQuery object\n\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0];\n }\n } else {\n parent = document.querySelector(this._config.parent);\n }\n var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n var children = [].slice.call(parent.querySelectorAll(selector));\n $__default['default'](children).each(function (i, element) {\n _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n });\n return parent;\n };\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n var isOpen = $__default['default'](element).hasClass(CLASS_NAME_SHOW$1);\n if (triggerArray.length) {\n $__default['default'](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n }\n } // Static\n ;\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n var selector = Util.getSelectorFromElement(element);\n return selector ? document.querySelector(selector) : null;\n };\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default['default'](this);\n var data = $element.data(DATA_KEY$3);\n var _config = _extends({}, Default$1, $element.data(), typeof config === 'object' && config ? config : {});\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n if (!data) {\n data = new Collapse(this, _config);\n $element.data(DATA_KEY$3, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config]();\n }\n });\n };\n _createClass(Collapse, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$3;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$1;\n }\n }]);\n return Collapse;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault();\n }\n var $trigger = $__default['default'](this);\n var selector = Util.getSelectorFromElement(this);\n var selectors = [].slice.call(document.querySelectorAll(selector));\n $__default['default'](selectors).each(function () {\n var $target = $__default['default'](this);\n var data = $target.data(DATA_KEY$3);\n var config = data ? 'toggle' : $trigger.data();\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$3] = Collapse._jQueryInterface;\n $__default['default'].fn[NAME$3].Constructor = Collapse;\n $__default['default'].fn[NAME$3].noConflict = function () {\n $__default['default'].fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n return Collapse._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$4 = 'dropdown';\n var VERSION$4 = '4.6.0';\n var DATA_KEY$4 = 'bs.dropdown';\n var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n var DATA_API_KEY$4 = '.data-api';\n var JQUERY_NO_CONFLICT$4 = $__default['default'].fn[NAME$4];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE);\n var EVENT_HIDE$1 = \"hide\" + EVENT_KEY$4;\n var EVENT_HIDDEN$1 = \"hidden\" + EVENT_KEY$4;\n var EVENT_SHOW$1 = \"show\" + EVENT_KEY$4;\n var EVENT_SHOWN$1 = \"shown\" + EVENT_KEY$4;\n var EVENT_CLICK = \"click\" + EVENT_KEY$4;\n var EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$4 + DATA_API_KEY$4;\n var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$4 + DATA_API_KEY$4;\n var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$4 + DATA_API_KEY$4;\n var CLASS_NAME_DISABLED = 'disabled';\n var CLASS_NAME_SHOW$2 = 'show';\n var CLASS_NAME_DROPUP = 'dropup';\n var CLASS_NAME_DROPRIGHT = 'dropright';\n var CLASS_NAME_DROPLEFT = 'dropleft';\n var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n var CLASS_NAME_POSITION_STATIC = 'position-static';\n var SELECTOR_DATA_TOGGLE$2 = '[data-toggle=\"dropdown\"]';\n var SELECTOR_FORM_CHILD = '.dropdown form';\n var SELECTOR_MENU = '.dropdown-menu';\n var SELECTOR_NAVBAR_NAV = '.navbar-nav';\n var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n var PLACEMENT_TOP = 'top-start';\n var PLACEMENT_TOPEND = 'top-end';\n var PLACEMENT_BOTTOM = 'bottom-start';\n var PLACEMENT_BOTTOMEND = 'bottom-end';\n var PLACEMENT_RIGHT = 'right-start';\n var PLACEMENT_LEFT = 'left-start';\n var Default$2 = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n };\n var DefaultType$2 = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Dropdown = /*#__PURE__*/function () {\n function Dropdown(element, config) {\n this._element = element;\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n this._addEventListeners();\n } // Getters\n\n var _proto = Dropdown.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED)) {\n return;\n }\n var isActive = $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2);\n Dropdown._clearMenus();\n if (isActive) {\n return;\n }\n this.show(true);\n };\n _proto.show = function show(usePopper) {\n if (usePopper === void 0) {\n usePopper = false;\n }\n if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2)) {\n return;\n }\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $__default['default'].Event(EVENT_SHOW$1, relatedTarget);\n var parent = Dropdown._getParentFromElement(this._element);\n $__default['default'](parent).trigger(showEvent);\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Totally disable Popper for Dropdowns in Navbar\n\n if (!this._inNavbar && usePopper) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper__default['default'] === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n var referenceElement = this._element;\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference; // Check if it's jQuery element\n\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0];\n }\n } // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n\n if (this._config.boundary !== 'scrollParent') {\n $__default['default'](parent).addClass(CLASS_NAME_POSITION_STATIC);\n }\n this._popper = new Popper__default['default'](referenceElement, this._menu, this._getPopperConfig());\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement && $__default['default'](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $__default['default'](document.body).children().on('mouseover', null, $__default['default'].noop);\n }\n this._element.focus();\n this._element.setAttribute('aria-expanded', true);\n $__default['default'](this._menu).toggleClass(CLASS_NAME_SHOW$2);\n $__default['default'](parent).toggleClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_SHOWN$1, relatedTarget));\n };\n _proto.hide = function hide() {\n if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || !$__default['default'](this._menu).hasClass(CLASS_NAME_SHOW$2)) {\n return;\n }\n var relatedTarget = {\n relatedTarget: this._element\n };\n var hideEvent = $__default['default'].Event(EVENT_HIDE$1, relatedTarget);\n var parent = Dropdown._getParentFromElement(this._element);\n $__default['default'](parent).trigger(hideEvent);\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n if (this._popper) {\n this._popper.destroy();\n }\n $__default['default'](this._menu).toggleClass(CLASS_NAME_SHOW$2);\n $__default['default'](parent).toggleClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_HIDDEN$1, relatedTarget));\n };\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY$4);\n $__default['default'](this._element).off(EVENT_KEY$4);\n this._element = null;\n this._menu = null;\n if (this._popper !== null) {\n this._popper.destroy();\n this._popper = null;\n }\n };\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Private\n ;\n _proto._addEventListeners = function _addEventListeners() {\n var _this = this;\n $__default['default'](this._element).on(EVENT_CLICK, function (event) {\n event.preventDefault();\n event.stopPropagation();\n _this.toggle();\n });\n };\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, this.constructor.Default, $__default['default'](this._element).data(), config);\n Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n return config;\n };\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n var parent = Dropdown._getParentFromElement(this._element);\n if (parent) {\n this._menu = parent.querySelector(SELECTOR_MENU);\n }\n }\n return this._menu;\n };\n _proto._getPlacement = function _getPlacement() {\n var $parentDropdown = $__default['default'](this._element.parentNode);\n var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $__default['default'](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT;\n } else if ($__default['default'](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND;\n }\n return placement;\n };\n _proto._detectNavbar = function _detectNavbar() {\n return $__default['default'](this._element).closest('.navbar').length > 0;\n };\n _proto._getOffset = function _getOffset() {\n var _this2 = this;\n var offset = {};\n if (typeof this._config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});\n return data;\n };\n } else {\n offset.offset = this._config.offset;\n }\n return offset;\n };\n _proto._getPopperConfig = function _getPopperConfig() {\n var popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }; // Disable Popper if we have a static display\n\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n };\n }\n return _extends({}, popperConfig, this._config.popperConfig);\n } // Static\n ;\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY$4);\n var _config = typeof config === 'object' ? config : null;\n if (!data) {\n data = new Dropdown(this, _config);\n $__default['default'](this).data(DATA_KEY$4, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config]();\n }\n });\n };\n Dropdown._clearMenus = function _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return;\n }\n var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));\n for (var i = 0, len = toggles.length; i < len; i++) {\n var parent = Dropdown._getParentFromElement(toggles[i]);\n var context = $__default['default'](toggles[i]).data(DATA_KEY$4);\n var relatedTarget = {\n relatedTarget: toggles[i]\n };\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n if (!context) {\n continue;\n }\n var dropdownMenu = context._menu;\n if (!$__default['default'](parent).hasClass(CLASS_NAME_SHOW$2)) {\n continue;\n }\n if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default['default'].contains(parent, event.target)) {\n continue;\n }\n var hideEvent = $__default['default'].Event(EVENT_HIDE$1, relatedTarget);\n $__default['default'](parent).trigger(hideEvent);\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $__default['default'](document.body).children().off('mouseover', null, $__default['default'].noop);\n }\n toggles[i].setAttribute('aria-expanded', 'false');\n if (context._popper) {\n context._popper.destroy();\n }\n $__default['default'](dropdownMenu).removeClass(CLASS_NAME_SHOW$2);\n $__default['default'](parent).removeClass(CLASS_NAME_SHOW$2).trigger($__default['default'].Event(EVENT_HIDDEN$1, relatedTarget));\n }\n };\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util.getSelectorFromElement(element);\n if (selector) {\n parent = document.querySelector(selector);\n }\n return parent || element.parentNode;\n } // eslint-disable-next-line complexity\n ;\n Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default['default'](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n if (this.disabled || $__default['default'](this).hasClass(CLASS_NAME_DISABLED)) {\n return;\n }\n var parent = Dropdown._getParentFromElement(this);\n var isActive = $__default['default'](parent).hasClass(CLASS_NAME_SHOW$2);\n if (!isActive && event.which === ESCAPE_KEYCODE) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) {\n if (event.which === ESCAPE_KEYCODE) {\n $__default['default'](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');\n }\n $__default['default'](this).trigger('click');\n return;\n }\n var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n return $__default['default'](item).is(':visible');\n });\n if (items.length === 0) {\n return;\n }\n var index = items.indexOf(event.target);\n if (event.which === ARROW_UP_KEYCODE && index > 0) {\n // Up\n index--;\n }\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n if (index < 0) {\n index = 0;\n }\n items[index].focus();\n };\n _createClass(Dropdown, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$4;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$2;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$2;\n }\n }]);\n return Dropdown;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $__default['default'](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$4 + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) {\n event.preventDefault();\n event.stopPropagation();\n Dropdown._jQueryInterface.call($__default['default'](this), 'toggle');\n }).on(EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$4] = Dropdown._jQueryInterface;\n $__default['default'].fn[NAME$4].Constructor = Dropdown;\n $__default['default'].fn[NAME$4].noConflict = function () {\n $__default['default'].fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n return Dropdown._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$5 = 'modal';\n var VERSION$5 = '4.6.0';\n var DATA_KEY$5 = 'bs.modal';\n var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n var DATA_API_KEY$5 = '.data-api';\n var JQUERY_NO_CONFLICT$5 = $__default['default'].fn[NAME$5];\n var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var Default$3 = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType$3 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n };\n var EVENT_HIDE$2 = \"hide\" + EVENT_KEY$5;\n var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY$5;\n var EVENT_HIDDEN$2 = \"hidden\" + EVENT_KEY$5;\n var EVENT_SHOW$2 = \"show\" + EVENT_KEY$5;\n var EVENT_SHOWN$2 = \"shown\" + EVENT_KEY$5;\n var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY$5;\n var EVENT_RESIZE = \"resize\" + EVENT_KEY$5;\n var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY$5;\n var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY$5;\n var EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$5;\n var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';\n var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n var CLASS_NAME_BACKDROP = 'modal-backdrop';\n var CLASS_NAME_OPEN = 'modal-open';\n var CLASS_NAME_FADE$1 = 'fade';\n var CLASS_NAME_SHOW$3 = 'show';\n var CLASS_NAME_STATIC = 'modal-static';\n var SELECTOR_DIALOG = '.modal-dialog';\n var SELECTOR_MODAL_BODY = '.modal-body';\n var SELECTOR_DATA_TOGGLE$3 = '[data-toggle=\"modal\"]';\n var SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]';\n var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n var SELECTOR_STICKY_CONTENT = '.sticky-top';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Modal = /*#__PURE__*/function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = element.querySelector(SELECTOR_DIALOG);\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n var _proto = Modal.prototype;\n\n // Public\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n _proto.show = function show(relatedTarget) {\n var _this = this;\n if (this._isShown || this._isTransitioning) {\n return;\n }\n if ($__default['default'](this._element).hasClass(CLASS_NAME_FADE$1)) {\n this._isTransitioning = true;\n }\n var showEvent = $__default['default'].Event(EVENT_SHOW$2, {\n relatedTarget: relatedTarget\n });\n $__default['default'](this._element).trigger(showEvent);\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return;\n }\n this._isShown = true;\n this._checkScrollbar();\n this._setScrollbar();\n this._adjustDialog();\n this._setEscapeEvent();\n this._setResizeEvent();\n $__default['default'](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {\n return _this.hide(event);\n });\n $__default['default'](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n $__default['default'](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n if ($__default['default'](event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n this._showBackdrop(function () {\n return _this._showElement(relatedTarget);\n });\n };\n _proto.hide = function hide(event) {\n var _this2 = this;\n if (event) {\n event.preventDefault();\n }\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n var hideEvent = $__default['default'].Event(EVENT_HIDE$2);\n $__default['default'](this._element).trigger(hideEvent);\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n this._isShown = false;\n var transition = $__default['default'](this._element).hasClass(CLASS_NAME_FADE$1);\n if (transition) {\n this._isTransitioning = true;\n }\n this._setEscapeEvent();\n this._setResizeEvent();\n $__default['default'](document).off(EVENT_FOCUSIN);\n $__default['default'](this._element).removeClass(CLASS_NAME_SHOW$3);\n $__default['default'](this._element).off(EVENT_CLICK_DISMISS);\n $__default['default'](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util.TRANSITION_END, function (event) {\n return _this2._hideModal(event);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n _proto.dispose = function dispose() {\n [window, this._element, this._dialog].forEach(function (htmlElement) {\n return $__default['default'](htmlElement).off(EVENT_KEY$5);\n });\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n\n $__default['default'](document).off(EVENT_FOCUSIN);\n $__default['default'].removeData(this._element, DATA_KEY$5);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._isTransitioning = null;\n this._scrollbarWidth = null;\n };\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n } // Private\n ;\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$3, config);\n Util.typeCheckConfig(NAME$5, config, DefaultType$3);\n return config;\n };\n _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n var _this3 = this;\n var hideEventPrevented = $__default['default'].Event(EVENT_HIDE_PREVENTED);\n $__default['default'](this._element).trigger(hideEventPrevented);\n if (hideEventPrevented.isDefaultPrevented()) {\n return;\n }\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n this._element.classList.add(CLASS_NAME_STATIC);\n var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $__default['default'](this._element).off(Util.TRANSITION_END);\n $__default['default'](this._element).one(Util.TRANSITION_END, function () {\n _this3._element.classList.remove(CLASS_NAME_STATIC);\n if (!isModalOverflowing) {\n $__default['default'](_this3._element).one(Util.TRANSITION_END, function () {\n _this3._element.style.overflowY = '';\n }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n }\n }).emulateTransitionEnd(modalTransitionDuration);\n this._element.focus();\n };\n _proto._showElement = function _showElement(relatedTarget) {\n var _this4 = this;\n var transition = $__default['default'](this._element).hasClass(CLASS_NAME_FADE$1);\n var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n this._element.style.display = 'block';\n this._element.removeAttribute('aria-hidden');\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n if ($__default['default'](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0;\n } else {\n this._element.scrollTop = 0;\n }\n if (transition) {\n Util.reflow(this._element);\n }\n $__default['default'](this._element).addClass(CLASS_NAME_SHOW$3);\n if (this._config.focus) {\n this._enforceFocus();\n }\n var shownEvent = $__default['default'].Event(EVENT_SHOWN$2, {\n relatedTarget: relatedTarget\n });\n var transitionComplete = function transitionComplete() {\n if (_this4._config.focus) {\n _this4._element.focus();\n }\n _this4._isTransitioning = false;\n $__default['default'](_this4._element).trigger(shownEvent);\n };\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $__default['default'](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n _proto._enforceFocus = function _enforceFocus() {\n var _this5 = this;\n $__default['default'](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, function (event) {\n if (document !== event.target && _this5._element !== event.target && $__default['default'](_this5._element).has(event.target).length === 0) {\n _this5._element.focus();\n }\n });\n };\n _proto._setEscapeEvent = function _setEscapeEvent() {\n var _this6 = this;\n if (this._isShown) {\n $__default['default'](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {\n event.preventDefault();\n _this6.hide();\n } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {\n _this6._triggerBackdropTransition();\n }\n });\n } else if (!this._isShown) {\n $__default['default'](this._element).off(EVENT_KEYDOWN_DISMISS);\n }\n };\n _proto._setResizeEvent = function _setResizeEvent() {\n var _this7 = this;\n if (this._isShown) {\n $__default['default'](window).on(EVENT_RESIZE, function (event) {\n return _this7.handleUpdate(event);\n });\n } else {\n $__default['default'](window).off(EVENT_RESIZE);\n }\n };\n _proto._hideModal = function _hideModal() {\n var _this8 = this;\n this._element.style.display = 'none';\n this._element.setAttribute('aria-hidden', true);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n this._isTransitioning = false;\n this._showBackdrop(function () {\n $__default['default'](document.body).removeClass(CLASS_NAME_OPEN);\n _this8._resetAdjustments();\n _this8._resetScrollbar();\n $__default['default'](_this8._element).trigger(EVENT_HIDDEN$2);\n });\n };\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $__default['default'](this._backdrop).remove();\n this._backdrop = null;\n }\n };\n _proto._showBackdrop = function _showBackdrop(callback) {\n var _this9 = this;\n var animate = $__default['default'](this._element).hasClass(CLASS_NAME_FADE$1) ? CLASS_NAME_FADE$1 : '';\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div');\n this._backdrop.className = CLASS_NAME_BACKDROP;\n if (animate) {\n this._backdrop.classList.add(animate);\n }\n $__default['default'](this._backdrop).appendTo(document.body);\n $__default['default'](this._element).on(EVENT_CLICK_DISMISS, function (event) {\n if (_this9._ignoreBackdropClick) {\n _this9._ignoreBackdropClick = false;\n return;\n }\n if (event.target !== event.currentTarget) {\n return;\n }\n if (_this9._config.backdrop === 'static') {\n _this9._triggerBackdropTransition();\n } else {\n _this9.hide();\n }\n });\n if (animate) {\n Util.reflow(this._backdrop);\n }\n $__default['default'](this._backdrop).addClass(CLASS_NAME_SHOW$3);\n if (!callback) {\n return;\n }\n if (!animate) {\n callback();\n return;\n }\n var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $__default['default'](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $__default['default'](this._backdrop).removeClass(CLASS_NAME_SHOW$3);\n var callbackRemove = function callbackRemove() {\n _this9._removeBackdrop();\n if (callback) {\n callback();\n }\n };\n if ($__default['default'](this._element).hasClass(CLASS_NAME_FADE$1)) {\n var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $__default['default'](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n } // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n ;\n _proto._adjustDialog = function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n }\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n }\n };\n _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n };\n _proto._checkScrollbar = function _checkScrollbar() {\n var rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n _proto._setScrollbar = function _setScrollbar() {\n var _this10 = this;\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n $__default['default'](fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = $__default['default'](element).css('padding-right');\n $__default['default'](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n }); // Adjust sticky content margin\n\n $__default['default'](stickyContent).each(function (index, element) {\n var actualMargin = element.style.marginRight;\n var calculatedMargin = $__default['default'](element).css('margin-right');\n $__default['default'](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n }); // Adjust body padding\n\n var actualPadding = document.body.style.paddingRight;\n var calculatedPadding = $__default['default'](document.body).css('padding-right');\n $__default['default'](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n }\n $__default['default'](document.body).addClass(CLASS_NAME_OPEN);\n };\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n $__default['default'](fixedContent).each(function (index, element) {\n var padding = $__default['default'](element).data('padding-right');\n $__default['default'](element).removeData('padding-right');\n element.style.paddingRight = padding ? padding : '';\n }); // Restore sticky content\n\n var elements = [].slice.call(document.querySelectorAll(\"\" + SELECTOR_STICKY_CONTENT));\n $__default['default'](elements).each(function (index, element) {\n var margin = $__default['default'](element).data('margin-right');\n if (typeof margin !== 'undefined') {\n $__default['default'](element).css('margin-right', margin).removeData('margin-right');\n }\n }); // Restore body padding\n\n var padding = $__default['default'](document.body).data('padding-right');\n $__default['default'](document.body).removeData('padding-right');\n document.body.style.paddingRight = padding ? padding : '';\n };\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n var scrollDiv = document.createElement('div');\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n } // Static\n ;\n Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY$5);\n var _config = _extends({}, Default$3, $__default['default'](this).data(), typeof config === 'object' && config ? config : {});\n if (!data) {\n data = new Modal(this, _config);\n $__default['default'](this).data(DATA_KEY$5, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n _createClass(Modal, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$5;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$3;\n }\n }]);\n return Modal;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) {\n var _this11 = this;\n var target;\n var selector = Util.getSelectorFromElement(this);\n if (selector) {\n target = document.querySelector(selector);\n }\n var config = $__default['default'](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default['default'](target).data(), $__default['default'](this).data());\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault();\n }\n var $target = $__default['default'](target).one(EVENT_SHOW$2, function (showEvent) {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return;\n }\n $target.one(EVENT_HIDDEN$2, function () {\n if ($__default['default'](_this11).is(':visible')) {\n _this11.focus();\n }\n });\n });\n Modal._jQueryInterface.call($__default['default'](target), config, this);\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$5] = Modal._jQueryInterface;\n $__default['default'].fn[NAME$5].Constructor = Modal;\n $__default['default'].fn[NAME$5].noConflict = function () {\n $__default['default'].fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n return Modal._jQueryInterface;\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.0): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n };\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase();\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));\n }\n return true;\n }\n var regExp = allowedAttributeList.filter(function (attrRegex) {\n return attrRegex instanceof RegExp;\n }); // Check if a regular expression validates the attribute.\n\n for (var i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true;\n }\n }\n return false;\n }\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml;\n }\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml);\n }\n var domParser = new window.DOMParser();\n var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n var whitelistKeys = Object.keys(whiteList);\n var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n var _loop = function _loop(i, len) {\n var el = elements[i];\n var elName = el.nodeName.toLowerCase();\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el);\n return \"continue\";\n }\n var attributeList = [].slice.call(el.attributes);\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n attributeList.forEach(function (attr) {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName);\n }\n });\n };\n for (var i = 0, len = elements.length; i < len; i++) {\n var _ret = _loop(i);\n if (_ret === \"continue\") continue;\n }\n return createdDocument.body.innerHTML;\n }\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$6 = 'tooltip';\n var VERSION$6 = '4.6.0';\n var DATA_KEY$6 = 'bs.tooltip';\n var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n var JQUERY_NO_CONFLICT$6 = $__default['default'].fn[NAME$6];\n var CLASS_PREFIX = 'bs-tooltip';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n var DefaultType$4 = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object',\n popperConfig: '(null|object)'\n };\n var AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n };\n var Default$4 = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\n popperConfig: null\n };\n var HOVER_STATE_SHOW = 'show';\n var HOVER_STATE_OUT = 'out';\n var Event = {\n HIDE: \"hide\" + EVENT_KEY$6,\n HIDDEN: \"hidden\" + EVENT_KEY$6,\n SHOW: \"show\" + EVENT_KEY$6,\n SHOWN: \"shown\" + EVENT_KEY$6,\n INSERTED: \"inserted\" + EVENT_KEY$6,\n CLICK: \"click\" + EVENT_KEY$6,\n FOCUSIN: \"focusin\" + EVENT_KEY$6,\n FOCUSOUT: \"focusout\" + EVENT_KEY$6,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$6,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$6\n };\n var CLASS_NAME_FADE$2 = 'fade';\n var CLASS_NAME_SHOW$4 = 'show';\n var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n var SELECTOR_ARROW = '.arrow';\n var TRIGGER_HOVER = 'hover';\n var TRIGGER_FOCUS = 'focus';\n var TRIGGER_CLICK = 'click';\n var TRIGGER_MANUAL = 'manual';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Tooltip = /*#__PURE__*/function () {\n function Tooltip(element, config) {\n if (typeof Popper__default['default'] === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n } // private\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = '';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n this._setListeners();\n } // Getters\n\n var _proto = Tooltip.prototype;\n\n // Public\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n if (event) {\n var dataKey = this.constructor.DATA_KEY;\n var context = $__default['default'](event.currentTarget).data(dataKey);\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default['default'](event.currentTarget).data(dataKey, context);\n }\n context._activeTrigger.click = !context._activeTrigger.click;\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if ($__default['default'](this.getTipElement()).hasClass(CLASS_NAME_SHOW$4)) {\n this._leave(null, this);\n return;\n }\n this._enter(null, this);\n }\n };\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $__default['default'].removeData(this.element, this.constructor.DATA_KEY);\n $__default['default'](this.element).off(this.constructor.EVENT_KEY);\n $__default['default'](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n if (this.tip) {\n $__default['default'](this.tip).remove();\n }\n this._isEnabled = null;\n this._timeout = null;\n this._hoverState = null;\n this._activeTrigger = null;\n if (this._popper) {\n this._popper.destroy();\n }\n this._popper = null;\n this.element = null;\n this.config = null;\n this.tip = null;\n };\n _proto.show = function show() {\n var _this = this;\n if ($__default['default'](this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements');\n }\n var showEvent = $__default['default'].Event(this.constructor.Event.SHOW);\n if (this.isWithContent() && this._isEnabled) {\n $__default['default'](this.element).trigger(showEvent);\n var shadowRoot = Util.findShadowRoot(this.element);\n var isInTheDom = $__default['default'].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n var tip = this.getTipElement();\n var tipId = Util.getUID(this.constructor.NAME);\n tip.setAttribute('id', tipId);\n this.element.setAttribute('aria-describedby', tipId);\n this.setContent();\n if (this.config.animation) {\n $__default['default'](tip).addClass(CLASS_NAME_FADE$2);\n }\n var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n var attachment = this._getAttachment(placement);\n this.addAttachmentClass(attachment);\n var container = this._getContainer();\n $__default['default'](tip).data(this.constructor.DATA_KEY, this);\n if (!$__default['default'].contains(this.element.ownerDocument.documentElement, this.tip)) {\n $__default['default'](tip).appendTo(container);\n }\n $__default['default'](this.element).trigger(this.constructor.Event.INSERTED);\n this._popper = new Popper__default['default'](this.element, tip, this._getPopperConfig(attachment));\n $__default['default'](tip).addClass(CLASS_NAME_SHOW$4);\n $__default['default'](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n $__default['default'](document.body).children().on('mouseover', null, $__default['default'].noop);\n }\n var complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n var prevHoverState = _this._hoverState;\n _this._hoverState = null;\n $__default['default'](_this.element).trigger(_this.constructor.Event.SHOWN);\n if (prevHoverState === HOVER_STATE_OUT) {\n _this._leave(null, _this);\n }\n };\n if ($__default['default'](this.tip).hasClass(CLASS_NAME_FADE$2)) {\n var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n $__default['default'](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n _proto.hide = function hide(callback) {\n var _this2 = this;\n var tip = this.getTipElement();\n var hideEvent = $__default['default'].Event(this.constructor.Event.HIDE);\n var complete = function complete() {\n if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n _this2._cleanTipClass();\n _this2.element.removeAttribute('aria-describedby');\n $__default['default'](_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n if (_this2._popper !== null) {\n _this2._popper.destroy();\n }\n if (callback) {\n callback();\n }\n };\n $__default['default'](this.element).trigger(hideEvent);\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n $__default['default'](tip).removeClass(CLASS_NAME_SHOW$4); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $__default['default'](document.body).children().off('mouseover', null, $__default['default'].noop);\n }\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n if ($__default['default'](this.tip).hasClass(CLASS_NAME_FADE$2)) {\n var transitionDuration = Util.getTransitionDurationFromElement(tip);\n $__default['default'](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n this._hoverState = '';\n };\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Protected\n ;\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default['default'](this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default['default'](this.config.template)[0];\n return this.tip;\n };\n _proto.setContent = function setContent() {\n var tip = this.getTipElement();\n this.setElementContent($__default['default'](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n $__default['default'](tip).removeClass(CLASS_NAME_FADE$2 + \" \" + CLASS_NAME_SHOW$4);\n };\n _proto.setElementContent = function setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$__default['default'](content).parent().is($element)) {\n $element.empty().append(content);\n }\n } else {\n $element.text($__default['default'](content).text());\n }\n return;\n }\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n }\n $element.html(content);\n } else {\n $element.text(content);\n }\n };\n _proto.getTitle = function getTitle() {\n var title = this.element.getAttribute('data-original-title');\n if (!title) {\n title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n }\n return title;\n } // Private\n ;\n _proto._getPopperConfig = function _getPopperConfig(attachment) {\n var _this3 = this;\n var defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this3._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n return _this3._handlePopperPlacementChange(data);\n }\n };\n return _extends({}, defaultBsConfig, this.config.popperConfig);\n };\n _proto._getOffset = function _getOffset() {\n var _this4 = this;\n var offset = {};\n if (typeof this.config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element) || {});\n return data;\n };\n } else {\n offset.offset = this.config.offset;\n }\n return offset;\n };\n _proto._getContainer = function _getContainer() {\n if (this.config.container === false) {\n return document.body;\n }\n if (Util.isElement(this.config.container)) {\n return $__default['default'](this.config.container);\n }\n return $__default['default'](document).find(this.config.container);\n };\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()];\n };\n _proto._setListeners = function _setListeners() {\n var _this5 = this;\n var triggers = this.config.trigger.split(' ');\n triggers.forEach(function (trigger) {\n if (trigger === 'click') {\n $__default['default'](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n return _this5.toggle(event);\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n $__default['default'](_this5.element).on(eventIn, _this5.config.selector, function (event) {\n return _this5._enter(event);\n }).on(eventOut, _this5.config.selector, function (event) {\n return _this5._leave(event);\n });\n }\n });\n this._hideModalHandler = function () {\n if (_this5.element) {\n _this5.hide();\n }\n };\n $__default['default'](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n if (this.config.selector) {\n this.config = _extends({}, this.config, {\n trigger: 'manual',\n selector: ''\n });\n } else {\n this._fixTitle();\n }\n };\n _proto._fixTitle = function _fixTitle() {\n var titleType = typeof this.element.getAttribute('data-original-title');\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n this.element.setAttribute('title', '');\n }\n };\n _proto._enter = function _enter(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default['default'](event.currentTarget).data(dataKey);\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default['default'](event.currentTarget).data(dataKey, context);\n }\n if (event) {\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n }\n if ($__default['default'](context.getTipElement()).hasClass(CLASS_NAME_SHOW$4) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW;\n return;\n }\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_SHOW;\n if (!context.config.delay || !context.config.delay.show) {\n context.show();\n return;\n }\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show();\n }\n }, context.config.delay.show);\n };\n _proto._leave = function _leave(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default['default'](event.currentTarget).data(dataKey);\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default['default'](event.currentTarget).data(dataKey, context);\n }\n if (event) {\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n }\n if (context._isWithActiveTrigger()) {\n return;\n }\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_OUT;\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide();\n return;\n }\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide();\n }\n }, context.config.delay.hide);\n };\n _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (var trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n return false;\n };\n _proto._getConfig = function _getConfig(config) {\n var dataAttributes = $__default['default'](this.element).data();\n Object.keys(dataAttributes).forEach(function (dataAttr) {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr];\n }\n });\n config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n }\n return config;\n };\n _proto._getDelegateConfig = function _getDelegateConfig() {\n var config = {};\n if (this.config) {\n for (var key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key];\n }\n }\n }\n return config;\n };\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default['default'](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''));\n }\n };\n _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper;\n this._cleanTipClass();\n this.addAttachmentClass(this._getAttachment(popperData.placement));\n };\n _proto._fixTransition = function _fixTransition() {\n var tip = this.getTipElement();\n var initConfigAnimation = this.config.animation;\n if (tip.getAttribute('x-placement') !== null) {\n return;\n }\n $__default['default'](tip).removeClass(CLASS_NAME_FADE$2);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n } // Static\n ;\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default['default'](this);\n var data = $element.data(DATA_KEY$6);\n var _config = typeof config === 'object' && config;\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n if (!data) {\n data = new Tooltip(this, _config);\n $element.data(DATA_KEY$6, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config]();\n }\n });\n };\n _createClass(Tooltip, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$6;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$4;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$6;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$6;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$6;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$4;\n }\n }]);\n return Tooltip;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$6] = Tooltip._jQueryInterface;\n $__default['default'].fn[NAME$6].Constructor = Tooltip;\n $__default['default'].fn[NAME$6].noConflict = function () {\n $__default['default'].fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n return Tooltip._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$7 = 'popover';\n var VERSION$7 = '4.6.0';\n var DATA_KEY$7 = 'bs.popover';\n var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n var JQUERY_NO_CONFLICT$7 = $__default['default'].fn[NAME$7];\n var CLASS_PREFIX$1 = 'bs-popover';\n var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n var Default$5 = _extends({}, Tooltip.Default, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n });\n var DefaultType$5 = _extends({}, Tooltip.DefaultType, {\n content: '(string|element|function)'\n });\n var CLASS_NAME_FADE$3 = 'fade';\n var CLASS_NAME_SHOW$5 = 'show';\n var SELECTOR_TITLE = '.popover-header';\n var SELECTOR_CONTENT = '.popover-body';\n var Event$1 = {\n HIDE: \"hide\" + EVENT_KEY$7,\n HIDDEN: \"hidden\" + EVENT_KEY$7,\n SHOW: \"show\" + EVENT_KEY$7,\n SHOWN: \"shown\" + EVENT_KEY$7,\n INSERTED: \"inserted\" + EVENT_KEY$7,\n CLICK: \"click\" + EVENT_KEY$7,\n FOCUSIN: \"focusin\" + EVENT_KEY$7,\n FOCUSOUT: \"focusout\" + EVENT_KEY$7,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$7,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$7\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Popover = /*#__PURE__*/function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n var _proto = Popover.prototype;\n\n // Overrides\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default['default'](this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n };\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default['default'](this.config.template)[0];\n return this.tip;\n };\n _proto.setContent = function setContent() {\n var $tip = $__default['default'](this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n var content = this._getContent();\n if (typeof content === 'function') {\n content = content.call(this.element);\n }\n this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n $tip.removeClass(CLASS_NAME_FADE$3 + \" \" + CLASS_NAME_SHOW$5);\n } // Private\n ;\n _proto._getContent = function _getContent() {\n return this.element.getAttribute('data-content') || this.config.content;\n };\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default['default'](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''));\n }\n } // Static\n ;\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY$7);\n var _config = typeof config === 'object' ? config : null;\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n if (!data) {\n data = new Popover(this, _config);\n $__default['default'](this).data(DATA_KEY$7, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config]();\n }\n });\n };\n _createClass(Popover, null, [{\n key: \"VERSION\",\n // Getters\n get: function get() {\n return VERSION$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$5;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$7;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$7;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$1;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$7;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$5;\n }\n }]);\n return Popover;\n }(Tooltip);\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$7] = Popover._jQueryInterface;\n $__default['default'].fn[NAME$7].Constructor = Popover;\n $__default['default'].fn[NAME$7].noConflict = function () {\n $__default['default'].fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n return Popover._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$8 = 'scrollspy';\n var VERSION$8 = '4.6.0';\n var DATA_KEY$8 = 'bs.scrollspy';\n var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n var DATA_API_KEY$6 = '.data-api';\n var JQUERY_NO_CONFLICT$8 = $__default['default'].fn[NAME$8];\n var Default$6 = {\n offset: 10,\n method: 'auto',\n target: ''\n };\n var DefaultType$6 = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n };\n var EVENT_ACTIVATE = \"activate\" + EVENT_KEY$8;\n var EVENT_SCROLL = \"scroll\" + EVENT_KEY$8;\n var EVENT_LOAD_DATA_API$2 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$6;\n var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n var CLASS_NAME_ACTIVE$2 = 'active';\n var SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n var SELECTOR_NAV_LINKS = '.nav-link';\n var SELECTOR_NAV_ITEMS = '.nav-item';\n var SELECTOR_LIST_ITEMS = '.list-group-item';\n var SELECTOR_DROPDOWN = '.dropdown';\n var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n var METHOD_OFFSET = 'offset';\n var METHOD_POSITION = 'position';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var ScrollSpy = /*#__PURE__*/function () {\n function ScrollSpy(element, config) {\n var _this = this;\n this._element = element;\n this._scrollElement = element.tagName === 'BODY' ? window : element;\n this._config = this._getConfig(config);\n this._selector = this._config.target + \" \" + SELECTOR_NAV_LINKS + \",\" + (this._config.target + \" \" + SELECTOR_LIST_ITEMS + \",\") + (this._config.target + \" \" + SELECTOR_DROPDOWN_ITEMS);\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n $__default['default'](this._scrollElement).on(EVENT_SCROLL, function (event) {\n return _this._process(event);\n });\n this.refresh();\n this._process();\n } // Getters\n\n var _proto = ScrollSpy.prototype;\n\n // Public\n _proto.refresh = function refresh() {\n var _this2 = this;\n var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n var targets = [].slice.call(document.querySelectorAll(this._selector));\n targets.map(function (element) {\n var target;\n var targetSelector = Util.getSelectorFromElement(element);\n if (targetSelector) {\n target = document.querySelector(targetSelector);\n }\n if (target) {\n var targetBCR = target.getBoundingClientRect();\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [$__default['default'](target)[offsetMethod]().top + offsetBase, targetSelector];\n }\n }\n return null;\n }).filter(function (item) {\n return item;\n }).sort(function (a, b) {\n return a[0] - b[0];\n }).forEach(function (item) {\n _this2._offsets.push(item[0]);\n _this2._targets.push(item[1]);\n });\n };\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY$8);\n $__default['default'](this._scrollElement).off(EVENT_KEY$8);\n this._element = null;\n this._scrollElement = null;\n this._config = null;\n this._selector = null;\n this._offsets = null;\n this._targets = null;\n this._activeTarget = null;\n this._scrollHeight = null;\n } // Private\n ;\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$6, typeof config === 'object' && config ? config : {});\n if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n var id = $__default['default'](config.target).attr('id');\n if (!id) {\n id = Util.getUID(NAME$8);\n $__default['default'](config.target).attr('id', id);\n }\n config.target = \"#\" + id;\n }\n Util.typeCheckConfig(NAME$8, config, DefaultType$6);\n return config;\n };\n _proto._getScrollTop = function _getScrollTop() {\n return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n };\n _proto._getScrollHeight = function _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n };\n _proto._getOffsetHeight = function _getOffsetHeight() {\n return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n };\n _proto._process = function _process() {\n var scrollTop = this._getScrollTop() + this._config.offset;\n var scrollHeight = this._getScrollHeight();\n var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n if (scrollTop >= maxScroll) {\n var target = this._targets[this._targets.length - 1];\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n return;\n }\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null;\n this._clear();\n return;\n }\n for (var i = this._offsets.length; i--;) {\n var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n if (isActiveTarget) {\n this._activate(this._targets[i]);\n }\n }\n };\n _proto._activate = function _activate(target) {\n this._activeTarget = target;\n this._clear();\n var queries = this._selector.split(',').map(function (selector) {\n return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n });\n var $link = $__default['default']([].slice.call(document.querySelectorAll(queries.join(','))));\n if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n $link.closest(SELECTOR_DROPDOWN).find(SELECTOR_DROPDOWN_TOGGLE).addClass(CLASS_NAME_ACTIVE$2);\n $link.addClass(CLASS_NAME_ACTIVE$2);\n } else {\n // Set triggered link as active\n $link.addClass(CLASS_NAME_ACTIVE$2); // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_LINKS + \", \" + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$2); // Handle special case when .nav-link is inside .nav-item\n\n $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$2);\n }\n $__default['default'](this._scrollElement).trigger(EVENT_ACTIVATE, {\n relatedTarget: target\n });\n };\n _proto._clear = function _clear() {\n [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n return node.classList.contains(CLASS_NAME_ACTIVE$2);\n }).forEach(function (node) {\n return node.classList.remove(CLASS_NAME_ACTIVE$2);\n });\n } // Static\n ;\n ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default['default'](this).data(DATA_KEY$8);\n var _config = typeof config === 'object' && config;\n if (!data) {\n data = new ScrollSpy(this, _config);\n $__default['default'](this).data(DATA_KEY$8, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config]();\n }\n });\n };\n _createClass(ScrollSpy, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$8;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$6;\n }\n }]);\n return ScrollSpy;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $__default['default'](window).on(EVENT_LOAD_DATA_API$2, function () {\n var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));\n var scrollSpysLength = scrollSpys.length;\n for (var i = scrollSpysLength; i--;) {\n var $spy = $__default['default'](scrollSpys[i]);\n ScrollSpy._jQueryInterface.call($spy, $spy.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$8] = ScrollSpy._jQueryInterface;\n $__default['default'].fn[NAME$8].Constructor = ScrollSpy;\n $__default['default'].fn[NAME$8].noConflict = function () {\n $__default['default'].fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n return ScrollSpy._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$9 = 'tab';\n var VERSION$9 = '4.6.0';\n var DATA_KEY$9 = 'bs.tab';\n var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n var DATA_API_KEY$7 = '.data-api';\n var JQUERY_NO_CONFLICT$9 = $__default['default'].fn[NAME$9];\n var EVENT_HIDE$3 = \"hide\" + EVENT_KEY$9;\n var EVENT_HIDDEN$3 = \"hidden\" + EVENT_KEY$9;\n var EVENT_SHOW$3 = \"show\" + EVENT_KEY$9;\n var EVENT_SHOWN$3 = \"shown\" + EVENT_KEY$9;\n var EVENT_CLICK_DATA_API$6 = \"click\" + EVENT_KEY$9 + DATA_API_KEY$7;\n var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n var CLASS_NAME_ACTIVE$3 = 'active';\n var CLASS_NAME_DISABLED$1 = 'disabled';\n var CLASS_NAME_FADE$4 = 'fade';\n var CLASS_NAME_SHOW$6 = 'show';\n var SELECTOR_DROPDOWN$1 = '.dropdown';\n var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\n var SELECTOR_ACTIVE$2 = '.active';\n var SELECTOR_ACTIVE_UL = '> li > .active';\n var SELECTOR_DATA_TOGGLE$4 = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]';\n var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Tab = /*#__PURE__*/function () {\n function Tab(element) {\n this._element = element;\n } // Getters\n\n var _proto = Tab.prototype;\n\n // Public\n _proto.show = function show() {\n var _this = this;\n if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default['default'](this._element).hasClass(CLASS_NAME_ACTIVE$3) || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED$1)) {\n return;\n }\n var target;\n var previous;\n var listElement = $__default['default'](this._element).closest(SELECTOR_NAV_LIST_GROUP$1)[0];\n var selector = Util.getSelectorFromElement(this._element);\n if (listElement) {\n var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE$2;\n previous = $__default['default'].makeArray($__default['default'](listElement).find(itemSelector));\n previous = previous[previous.length - 1];\n }\n var hideEvent = $__default['default'].Event(EVENT_HIDE$3, {\n relatedTarget: this._element\n });\n var showEvent = $__default['default'].Event(EVENT_SHOW$3, {\n relatedTarget: previous\n });\n if (previous) {\n $__default['default'](previous).trigger(hideEvent);\n }\n $__default['default'](this._element).trigger(showEvent);\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n return;\n }\n if (selector) {\n target = document.querySelector(selector);\n }\n this._activate(this._element, listElement);\n var complete = function complete() {\n var hiddenEvent = $__default['default'].Event(EVENT_HIDDEN$3, {\n relatedTarget: _this._element\n });\n var shownEvent = $__default['default'].Event(EVENT_SHOWN$3, {\n relatedTarget: previous\n });\n $__default['default'](previous).trigger(hiddenEvent);\n $__default['default'](_this._element).trigger(shownEvent);\n };\n if (target) {\n this._activate(target, target.parentNode, complete);\n } else {\n complete();\n }\n };\n _proto.dispose = function dispose() {\n $__default['default'].removeData(this._element, DATA_KEY$9);\n this._element = null;\n } // Private\n ;\n _proto._activate = function _activate(element, container, callback) {\n var _this2 = this;\n var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default['default'](container).find(SELECTOR_ACTIVE_UL) : $__default['default'](container).children(SELECTOR_ACTIVE$2);\n var active = activeElements[0];\n var isTransitioning = callback && active && $__default['default'](active).hasClass(CLASS_NAME_FADE$4);\n var complete = function complete() {\n return _this2._transitionComplete(element, active, callback);\n };\n if (active && isTransitioning) {\n var transitionDuration = Util.getTransitionDurationFromElement(active);\n $__default['default'](active).removeClass(CLASS_NAME_SHOW$6).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n if (active) {\n $__default['default'](active).removeClass(CLASS_NAME_ACTIVE$3);\n var dropdownChild = $__default['default'](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];\n if (dropdownChild) {\n $__default['default'](dropdownChild).removeClass(CLASS_NAME_ACTIVE$3);\n }\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false);\n }\n }\n $__default['default'](element).addClass(CLASS_NAME_ACTIVE$3);\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true);\n }\n Util.reflow(element);\n if (element.classList.contains(CLASS_NAME_FADE$4)) {\n element.classList.add(CLASS_NAME_SHOW$6);\n }\n if (element.parentNode && $__default['default'](element.parentNode).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n var dropdownElement = $__default['default'](element).closest(SELECTOR_DROPDOWN$1)[0];\n if (dropdownElement) {\n var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE$1));\n $__default['default'](dropdownToggleList).addClass(CLASS_NAME_ACTIVE$3);\n }\n element.setAttribute('aria-expanded', true);\n }\n if (callback) {\n callback();\n }\n } // Static\n ;\n Tab._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $__default['default'](this);\n var data = $this.data(DATA_KEY$9);\n if (!data) {\n data = new Tab(this);\n $this.data(DATA_KEY$9, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config]();\n }\n });\n };\n _createClass(Tab, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$9;\n }\n }]);\n return Tab;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $__default['default'](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$4, function (event) {\n event.preventDefault();\n Tab._jQueryInterface.call($__default['default'](this), 'show');\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$9] = Tab._jQueryInterface;\n $__default['default'].fn[NAME$9].Constructor = Tab;\n $__default['default'].fn[NAME$9].noConflict = function () {\n $__default['default'].fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n return Tab._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$a = 'toast';\n var VERSION$a = '4.6.0';\n var DATA_KEY$a = 'bs.toast';\n var EVENT_KEY$a = \".\" + DATA_KEY$a;\n var JQUERY_NO_CONFLICT$a = $__default['default'].fn[NAME$a];\n var EVENT_CLICK_DISMISS$1 = \"click.dismiss\" + EVENT_KEY$a;\n var EVENT_HIDE$4 = \"hide\" + EVENT_KEY$a;\n var EVENT_HIDDEN$4 = \"hidden\" + EVENT_KEY$a;\n var EVENT_SHOW$4 = \"show\" + EVENT_KEY$a;\n var EVENT_SHOWN$4 = \"shown\" + EVENT_KEY$a;\n var CLASS_NAME_FADE$5 = 'fade';\n var CLASS_NAME_HIDE = 'hide';\n var CLASS_NAME_SHOW$7 = 'show';\n var CLASS_NAME_SHOWING = 'showing';\n var DefaultType$7 = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n };\n var Default$7 = {\n animation: true,\n autohide: true,\n delay: 500\n };\n var SELECTOR_DATA_DISMISS$1 = '[data-dismiss=\"toast\"]';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Toast = /*#__PURE__*/function () {\n function Toast(element, config) {\n this._element = element;\n this._config = this._getConfig(config);\n this._timeout = null;\n this._setListeners();\n } // Getters\n\n var _proto = Toast.prototype;\n\n // Public\n _proto.show = function show() {\n var _this = this;\n var showEvent = $__default['default'].Event(EVENT_SHOW$4);\n $__default['default'](this._element).trigger(showEvent);\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n this._clearTimeout();\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE$5);\n }\n var complete = function complete() {\n _this._element.classList.remove(CLASS_NAME_SHOWING);\n _this._element.classList.add(CLASS_NAME_SHOW$7);\n $__default['default'](_this._element).trigger(EVENT_SHOWN$4);\n if (_this._config.autohide) {\n _this._timeout = setTimeout(function () {\n _this.hide();\n }, _this._config.delay);\n }\n };\n this._element.classList.remove(CLASS_NAME_HIDE);\n Util.reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOWING);\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n _proto.hide = function hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW$7)) {\n return;\n }\n var hideEvent = $__default['default'].Event(EVENT_HIDE$4);\n $__default['default'](this._element).trigger(hideEvent);\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n this._close();\n };\n _proto.dispose = function dispose() {\n this._clearTimeout();\n if (this._element.classList.contains(CLASS_NAME_SHOW$7)) {\n this._element.classList.remove(CLASS_NAME_SHOW$7);\n }\n $__default['default'](this._element).off(EVENT_CLICK_DISMISS$1);\n $__default['default'].removeData(this._element, DATA_KEY$a);\n this._element = null;\n this._config = null;\n } // Private\n ;\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$7, $__default['default'](this._element).data(), typeof config === 'object' && config ? config : {});\n Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);\n return config;\n };\n _proto._setListeners = function _setListeners() {\n var _this2 = this;\n $__default['default'](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function () {\n return _this2.hide();\n });\n };\n _proto._close = function _close() {\n var _this3 = this;\n var complete = function complete() {\n _this3._element.classList.add(CLASS_NAME_HIDE);\n $__default['default'](_this3._element).trigger(EVENT_HIDDEN$4);\n };\n this._element.classList.remove(CLASS_NAME_SHOW$7);\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default['default'](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n _proto._clearTimeout = function _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n } // Static\n ;\n Toast._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default['default'](this);\n var data = $element.data(DATA_KEY$a);\n var _config = typeof config === 'object' && config;\n if (!data) {\n data = new Toast(this, _config);\n $element.data(DATA_KEY$a, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config](this);\n }\n });\n };\n _createClass(Toast, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$a;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$7;\n }\n }]);\n return Toast;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $__default['default'].fn[NAME$a] = Toast._jQueryInterface;\n $__default['default'].fn[NAME$a].Constructor = Toast;\n $__default['default'].fn[NAME$a].noConflict = function () {\n $__default['default'].fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n return Toast._jQueryInterface;\n };\n exports.Alert = Alert;\n exports.Button = Button;\n exports.Carousel = Carousel;\n exports.Collapse = Collapse;\n exports.Dropdown = Dropdown;\n exports.Modal = Modal;\n exports.Popover = Popover;\n exports.Scrollspy = ScrollSpy;\n exports.Tab = Tab;\n exports.Toast = Toast;\n exports.Tooltip = Tooltip;\n exports.Util = Util;\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n});","/*!\n * jQuery UI Widget 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n//>>label: Widget\n//>>group: Core\n//>>description: Provides a factory for creating stateful widgets with a common API.\n//>>docs: https://api.jqueryui.com/jQuery.widget/\n//>>demos: https://jqueryui.com/widget/\n\n(function (factory) {\n \"use strict\";\n\n if (typeof define === \"function\" && define.amd) {\n // AMD. Register as an anonymous module.\n define([\"jquery\", \"./version\"], factory);\n } else {\n // Browser globals\n factory(jQuery);\n }\n})(function ($) {\n \"use strict\";\n\n var widgetUuid = 0;\n var widgetHasOwnProperty = Array.prototype.hasOwnProperty;\n var widgetSlice = Array.prototype.slice;\n $.cleanData = function (orig) {\n return function (elems) {\n var events, elem, i;\n for (i = 0; (elem = elems[i]) != null; i++) {\n // Only trigger remove when necessary to save time\n events = $._data(elem, \"events\");\n if (events && events.remove) {\n $(elem).triggerHandler(\"remove\");\n }\n }\n orig(elems);\n };\n }($.cleanData);\n $.widget = function (name, base, prototype) {\n var existingConstructor, constructor, basePrototype;\n\n // ProxiedPrototype allows the provided prototype to remain unmodified\n // so that it can be used as a mixin for multiple widgets (#8876)\n var proxiedPrototype = {};\n var namespace = name.split(\".\")[0];\n name = name.split(\".\")[1];\n if (name === \"__proto__\" || name === \"constructor\") {\n return $.error(\"Invalid widget name: \" + name);\n }\n var fullName = namespace + \"-\" + name;\n if (!prototype) {\n prototype = base;\n base = $.Widget;\n }\n if (Array.isArray(prototype)) {\n prototype = $.extend.apply(null, [{}].concat(prototype));\n }\n\n // Create selector for plugin\n $.expr.pseudos[fullName.toLowerCase()] = function (elem) {\n return !!$.data(elem, fullName);\n };\n $[namespace] = $[namespace] || {};\n existingConstructor = $[namespace][name];\n constructor = $[namespace][name] = function (options, element) {\n // Allow instantiation without \"new\" keyword\n if (!this || !this._createWidget) {\n return new constructor(options, element);\n }\n\n // Allow instantiation without initializing for simple inheritance\n // must use \"new\" keyword (the code above always passes args)\n if (arguments.length) {\n this._createWidget(options, element);\n }\n };\n\n // Extend with the existing constructor to carry over any static properties\n $.extend(constructor, existingConstructor, {\n version: prototype.version,\n // Copy the object used to create the prototype in case we need to\n // redefine the widget later\n _proto: $.extend({}, prototype),\n // Track widgets that inherit from this widget in case this widget is\n // redefined after a widget inherits from it\n _childConstructors: []\n });\n basePrototype = new base();\n\n // We need to make the options hash a property directly on the new instance\n // otherwise we'll modify the options hash on the prototype that we're\n // inheriting from\n basePrototype.options = $.widget.extend({}, basePrototype.options);\n $.each(prototype, function (prop, value) {\n if (typeof value !== \"function\") {\n proxiedPrototype[prop] = value;\n return;\n }\n proxiedPrototype[prop] = function () {\n function _super() {\n return base.prototype[prop].apply(this, arguments);\n }\n function _superApply(args) {\n return base.prototype[prop].apply(this, args);\n }\n return function () {\n var __super = this._super;\n var __superApply = this._superApply;\n var returnValue;\n this._super = _super;\n this._superApply = _superApply;\n returnValue = value.apply(this, arguments);\n this._super = __super;\n this._superApply = __superApply;\n return returnValue;\n };\n }();\n });\n constructor.prototype = $.widget.extend(basePrototype, {\n // TODO: remove support for widgetEventPrefix\n // always use the name + a colon as the prefix, e.g., draggable:start\n // don't prefix for widgets that aren't DOM-based\n widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix || name : name\n }, proxiedPrototype, {\n constructor: constructor,\n namespace: namespace,\n widgetName: name,\n widgetFullName: fullName\n });\n\n // If this widget is being redefined then we need to find all widgets that\n // are inheriting from it and redefine all of them so that they inherit from\n // the new version of this widget. We're essentially trying to replace one\n // level in the prototype chain.\n if (existingConstructor) {\n $.each(existingConstructor._childConstructors, function (i, child) {\n var childPrototype = child.prototype;\n\n // Redefine the child widget using the same prototype that was\n // originally used, but inherit from the new version of the base\n $.widget(childPrototype.namespace + \".\" + childPrototype.widgetName, constructor, child._proto);\n });\n\n // Remove the list of existing child constructors from the old constructor\n // so the old child constructors can be garbage collected\n delete existingConstructor._childConstructors;\n } else {\n base._childConstructors.push(constructor);\n }\n $.widget.bridge(name, constructor);\n return constructor;\n };\n $.widget.extend = function (target) {\n var input = widgetSlice.call(arguments, 1);\n var inputIndex = 0;\n var inputLength = input.length;\n var key;\n var value;\n for (; inputIndex < inputLength; inputIndex++) {\n for (key in input[inputIndex]) {\n value = input[inputIndex][key];\n if (widgetHasOwnProperty.call(input[inputIndex], key) && value !== undefined) {\n // Clone objects\n if ($.isPlainObject(value)) {\n target[key] = $.isPlainObject(target[key]) ? $.widget.extend({}, target[key], value) :\n // Don't extend strings, arrays, etc. with objects\n $.widget.extend({}, value);\n\n // Copy everything else by reference\n } else {\n target[key] = value;\n }\n }\n }\n }\n return target;\n };\n $.widget.bridge = function (name, object) {\n var fullName = object.prototype.widgetFullName || name;\n $.fn[name] = function (options) {\n var isMethodCall = typeof options === \"string\";\n var args = widgetSlice.call(arguments, 1);\n var returnValue = this;\n if (isMethodCall) {\n // If this is an empty collection, we need to have the instance method\n // return undefined instead of the jQuery instance\n if (!this.length && options === \"instance\") {\n returnValue = undefined;\n } else {\n this.each(function () {\n var methodValue;\n var instance = $.data(this, fullName);\n if (options === \"instance\") {\n returnValue = instance;\n return false;\n }\n if (!instance) {\n return $.error(\"cannot call methods on \" + name + \" prior to initialization; \" + \"attempted to call method '\" + options + \"'\");\n }\n if (typeof instance[options] !== \"function\" || options.charAt(0) === \"_\") {\n return $.error(\"no such method '\" + options + \"' for \" + name + \" widget instance\");\n }\n methodValue = instance[options].apply(instance, args);\n if (methodValue !== instance && methodValue !== undefined) {\n returnValue = methodValue && methodValue.jquery ? returnValue.pushStack(methodValue.get()) : methodValue;\n return false;\n }\n });\n }\n } else {\n // Allow multiple hashes to be passed on init\n if (args.length) {\n options = $.widget.extend.apply(null, [options].concat(args));\n }\n this.each(function () {\n var instance = $.data(this, fullName);\n if (instance) {\n instance.option(options || {});\n if (instance._init) {\n instance._init();\n }\n } else {\n $.data(this, fullName, new object(options, this));\n }\n });\n }\n return returnValue;\n };\n };\n $.Widget = function /* options, element */ () {};\n $.Widget._childConstructors = [];\n $.Widget.prototype = {\n widgetName: \"widget\",\n widgetEventPrefix: \"\",\n defaultElement: \"<div>\",\n options: {\n classes: {},\n disabled: false,\n // Callbacks\n create: null\n },\n _createWidget: function (options, element) {\n element = $(element || this.defaultElement || this)[0];\n this.element = $(element);\n this.uuid = widgetUuid++;\n this.eventNamespace = \".\" + this.widgetName + this.uuid;\n this.bindings = $();\n this.hoverable = $();\n this.focusable = $();\n this.classesElementLookup = {};\n if (element !== this) {\n $.data(element, this.widgetFullName, this);\n this._on(true, this.element, {\n remove: function (event) {\n if (event.target === element) {\n this.destroy();\n }\n }\n });\n this.document = $(element.style ?\n // Element within the document\n element.ownerDocument :\n // Element is window or document\n element.document || element);\n this.window = $(this.document[0].defaultView || this.document[0].parentWindow);\n }\n this.options = $.widget.extend({}, this.options, this._getCreateOptions(), options);\n this._create();\n if (this.options.disabled) {\n this._setOptionDisabled(this.options.disabled);\n }\n this._trigger(\"create\", null, this._getCreateEventData());\n this._init();\n },\n _getCreateOptions: function () {\n return {};\n },\n _getCreateEventData: $.noop,\n _create: $.noop,\n _init: $.noop,\n destroy: function () {\n var that = this;\n this._destroy();\n $.each(this.classesElementLookup, function (key, value) {\n that._removeClass(value, key);\n });\n\n // We can probably remove the unbind calls in 2.0\n // all event bindings should go through this._on()\n this.element.off(this.eventNamespace).removeData(this.widgetFullName);\n this.widget().off(this.eventNamespace).removeAttr(\"aria-disabled\");\n\n // Clean up events and states\n this.bindings.off(this.eventNamespace);\n },\n _destroy: $.noop,\n widget: function () {\n return this.element;\n },\n option: function (key, value) {\n var options = key;\n var parts;\n var curOption;\n var i;\n if (arguments.length === 0) {\n // Don't return a reference to the internal hash\n return $.widget.extend({}, this.options);\n }\n if (typeof key === \"string\") {\n // Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n options = {};\n parts = key.split(\".\");\n key = parts.shift();\n if (parts.length) {\n curOption = options[key] = $.widget.extend({}, this.options[key]);\n for (i = 0; i < parts.length - 1; i++) {\n curOption[parts[i]] = curOption[parts[i]] || {};\n curOption = curOption[parts[i]];\n }\n key = parts.pop();\n if (arguments.length === 1) {\n return curOption[key] === undefined ? null : curOption[key];\n }\n curOption[key] = value;\n } else {\n if (arguments.length === 1) {\n return this.options[key] === undefined ? null : this.options[key];\n }\n options[key] = value;\n }\n }\n this._setOptions(options);\n return this;\n },\n _setOptions: function (options) {\n var key;\n for (key in options) {\n this._setOption(key, options[key]);\n }\n return this;\n },\n _setOption: function (key, value) {\n if (key === \"classes\") {\n this._setOptionClasses(value);\n }\n this.options[key] = value;\n if (key === \"disabled\") {\n this._setOptionDisabled(value);\n }\n return this;\n },\n _setOptionClasses: function (value) {\n var classKey, elements, currentElements;\n for (classKey in value) {\n currentElements = this.classesElementLookup[classKey];\n if (value[classKey] === this.options.classes[classKey] || !currentElements || !currentElements.length) {\n continue;\n }\n\n // We are doing this to create a new jQuery object because the _removeClass() call\n // on the next line is going to destroy the reference to the current elements being\n // tracked. We need to save a copy of this collection so that we can add the new classes\n // below.\n elements = $(currentElements.get());\n this._removeClass(currentElements, classKey);\n\n // We don't use _addClass() here, because that uses this.options.classes\n // for generating the string of classes. We want to use the value passed in from\n // _setOption(), this is the new value of the classes option which was passed to\n // _setOption(). We pass this value directly to _classes().\n elements.addClass(this._classes({\n element: elements,\n keys: classKey,\n classes: value,\n add: true\n }));\n }\n },\n _setOptionDisabled: function (value) {\n this._toggleClass(this.widget(), this.widgetFullName + \"-disabled\", null, !!value);\n\n // If the widget is becoming disabled, then nothing is interactive\n if (value) {\n this._removeClass(this.hoverable, null, \"ui-state-hover\");\n this._removeClass(this.focusable, null, \"ui-state-focus\");\n }\n },\n enable: function () {\n return this._setOptions({\n disabled: false\n });\n },\n disable: function () {\n return this._setOptions({\n disabled: true\n });\n },\n _classes: function (options) {\n var full = [];\n var that = this;\n options = $.extend({\n element: this.element,\n classes: this.options.classes || {}\n }, options);\n function bindRemoveEvent() {\n var nodesToBind = [];\n options.element.each(function (_, element) {\n var isTracked = $.map(that.classesElementLookup, function (elements) {\n return elements;\n }).some(function (elements) {\n return elements.is(element);\n });\n if (!isTracked) {\n nodesToBind.push(element);\n }\n });\n that._on($(nodesToBind), {\n remove: \"_untrackClassesElement\"\n });\n }\n function processClassString(classes, checkOption) {\n var current, i;\n for (i = 0; i < classes.length; i++) {\n current = that.classesElementLookup[classes[i]] || $();\n if (options.add) {\n bindRemoveEvent();\n current = $($.uniqueSort(current.get().concat(options.element.get())));\n } else {\n current = $(current.not(options.element).get());\n }\n that.classesElementLookup[classes[i]] = current;\n full.push(classes[i]);\n if (checkOption && options.classes[classes[i]]) {\n full.push(options.classes[classes[i]]);\n }\n }\n }\n if (options.keys) {\n processClassString(options.keys.match(/\\S+/g) || [], true);\n }\n if (options.extra) {\n processClassString(options.extra.match(/\\S+/g) || []);\n }\n return full.join(\" \");\n },\n _untrackClassesElement: function (event) {\n var that = this;\n $.each(that.classesElementLookup, function (key, value) {\n if ($.inArray(event.target, value) !== -1) {\n that.classesElementLookup[key] = $(value.not(event.target).get());\n }\n });\n this._off($(event.target));\n },\n _removeClass: function (element, keys, extra) {\n return this._toggleClass(element, keys, extra, false);\n },\n _addClass: function (element, keys, extra) {\n return this._toggleClass(element, keys, extra, true);\n },\n _toggleClass: function (element, keys, extra, add) {\n add = typeof add === \"boolean\" ? add : extra;\n var shift = typeof element === \"string\" || element === null,\n options = {\n extra: shift ? keys : extra,\n keys: shift ? element : keys,\n element: shift ? this.element : element,\n add: add\n };\n options.element.toggleClass(this._classes(options), add);\n return this;\n },\n _on: function (suppressDisabledCheck, element, handlers) {\n var delegateElement;\n var instance = this;\n\n // No suppressDisabledCheck flag, shuffle arguments\n if (typeof suppressDisabledCheck !== \"boolean\") {\n handlers = element;\n element = suppressDisabledCheck;\n suppressDisabledCheck = false;\n }\n\n // No element argument, shuffle and use this.element\n if (!handlers) {\n handlers = element;\n element = this.element;\n delegateElement = this.widget();\n } else {\n element = delegateElement = $(element);\n this.bindings = this.bindings.add(element);\n }\n $.each(handlers, function (event, handler) {\n function handlerProxy() {\n // Allow widgets to customize the disabled handling\n // - disabled as an array instead of boolean\n // - disabled class as method for disabling individual parts\n if (!suppressDisabledCheck && (instance.options.disabled === true || $(this).hasClass(\"ui-state-disabled\"))) {\n return;\n }\n return (typeof handler === \"string\" ? instance[handler] : handler).apply(instance, arguments);\n }\n\n // Copy the guid so direct unbinding works\n if (typeof handler !== \"string\") {\n handlerProxy.guid = handler.guid = handler.guid || handlerProxy.guid || $.guid++;\n }\n var match = event.match(/^([\\w:-]*)\\s*(.*)$/);\n var eventName = match[1] + instance.eventNamespace;\n var selector = match[2];\n if (selector) {\n delegateElement.on(eventName, selector, handlerProxy);\n } else {\n element.on(eventName, handlerProxy);\n }\n });\n },\n _off: function (element, eventName) {\n eventName = (eventName || \"\").split(\" \").join(this.eventNamespace + \" \") + this.eventNamespace;\n element.off(eventName);\n\n // Clear the stack to avoid memory leaks (#10056)\n this.bindings = $(this.bindings.not(element).get());\n this.focusable = $(this.focusable.not(element).get());\n this.hoverable = $(this.hoverable.not(element).get());\n },\n _delay: function (handler, delay) {\n function handlerProxy() {\n return (typeof handler === \"string\" ? instance[handler] : handler).apply(instance, arguments);\n }\n var instance = this;\n return setTimeout(handlerProxy, delay || 0);\n },\n _hoverable: function (element) {\n this.hoverable = this.hoverable.add(element);\n this._on(element, {\n mouseenter: function (event) {\n this._addClass($(event.currentTarget), null, \"ui-state-hover\");\n },\n mouseleave: function (event) {\n this._removeClass($(event.currentTarget), null, \"ui-state-hover\");\n }\n });\n },\n _focusable: function (element) {\n this.focusable = this.focusable.add(element);\n this._on(element, {\n focusin: function (event) {\n this._addClass($(event.currentTarget), null, \"ui-state-focus\");\n },\n focusout: function (event) {\n this._removeClass($(event.currentTarget), null, \"ui-state-focus\");\n }\n });\n },\n _trigger: function (type, event, data) {\n var prop, orig;\n var callback = this.options[type];\n data = data || {};\n event = $.Event(event);\n event.type = (type === this.widgetEventPrefix ? type : this.widgetEventPrefix + type).toLowerCase();\n\n // The original event may come from any element\n // so we need to reset the target on the new event\n event.target = this.element[0];\n\n // Copy original event properties over to the new event\n orig = event.originalEvent;\n if (orig) {\n for (prop in orig) {\n if (!(prop in event)) {\n event[prop] = orig[prop];\n }\n }\n }\n this.element.trigger(event, data);\n return !(typeof callback === \"function\" && callback.apply(this.element[0], [event].concat(data)) === false || event.isDefaultPrevented());\n }\n };\n $.each({\n show: \"fadeIn\",\n hide: \"fadeOut\"\n }, function (method, defaultEffect) {\n $.Widget.prototype[\"_\" + method] = function (element, options, callback) {\n if (typeof options === \"string\") {\n options = {\n effect: options\n };\n }\n var hasOptions;\n var effectName = !options ? method : options === true || typeof options === \"number\" ? defaultEffect : options.effect || defaultEffect;\n options = options || {};\n if (typeof options === \"number\") {\n options = {\n duration: options\n };\n } else if (options === true) {\n options = {};\n }\n hasOptions = !$.isEmptyObject(options);\n options.complete = callback;\n if (options.delay) {\n element.delay(options.delay);\n }\n if (hasOptions && $.effects && $.effects.effect[effectName]) {\n element[method](options);\n } else if (effectName !== method && element[effectName]) {\n element[effectName](options.duration, options.easing, callback);\n } else {\n element.queue(function (next) {\n $(this)[method]();\n if (callback) {\n callback.call(element[0]);\n }\n next();\n });\n }\n };\n });\n return $.widget;\n});","(function (factory) {\n \"use strict\";\n\n if (typeof define === \"function\" && define.amd) {\n // AMD. Register as an anonymous module.\n define([\"jquery\"], factory);\n } else {\n // Browser globals\n factory(jQuery);\n }\n})(function ($) {\n \"use strict\";\n\n $.ui = $.ui || {};\n return $.ui.version = \"1.14.1\";\n});","var DateFormatter;\n!function () {\n \"use strict\";\n\n var D, s, r, a, n;\n D = function (e, t) {\n return \"string\" == typeof e && \"string\" == typeof t && e.toLowerCase() === t.toLowerCase();\n }, s = function (e, t, a) {\n var n = a || \"0\",\n r = e.toString();\n return r.length < t ? s(n + r, t) : r;\n }, r = function (e) {\n var t, a;\n for (e = e || {}, t = 1; t < arguments.length; t++) if (a = arguments[t]) for (var n in a) a.hasOwnProperty(n) && (\"object\" == typeof a[n] ? r(e[n], a[n]) : e[n] = a[n]);\n return e;\n }, a = function (e, t) {\n for (var a = 0; a < t.length; a++) if (t[a].toLowerCase() === e.toLowerCase()) return a;\n return -1;\n }, n = {\n dateSettings: {\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n daysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n meridiem: [\"AM\", \"PM\"],\n ordinal: function (e) {\n var t = e % 10,\n a = {\n 1: \"st\",\n 2: \"nd\",\n 3: \"rd\"\n };\n return 1 !== Math.floor(e % 100 / 10) && a[t] ? a[t] : \"th\";\n }\n },\n separators: /[ \\-+\\/\\.T:@]/g,\n validParts: /[dDjlNSwzWFmMntLoYyaABgGhHisueTIOPZcrU]/g,\n intParts: /[djwNzmnyYhHgGis]/g,\n tzParts: /\\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\\d{4})?)\\b/g,\n tzClip: /[^-+\\dA-Z]/g\n }, (DateFormatter = function (e) {\n var t = this,\n a = r(n, e);\n t.dateSettings = a.dateSettings, t.separators = a.separators, t.validParts = a.validParts, t.intParts = a.intParts, t.tzParts = a.tzParts, t.tzClip = a.tzClip;\n }).prototype = {\n constructor: DateFormatter,\n getMonth: function (e) {\n var t;\n return 0 === (t = a(e, this.dateSettings.monthsShort) + 1) && (t = a(e, this.dateSettings.months) + 1), t;\n },\n parseDate: function (e, t) {\n var a,\n n,\n r,\n o,\n i,\n s,\n d,\n u,\n l,\n f,\n c = this,\n m = !1,\n h = !1,\n g = c.dateSettings,\n p = {\n date: null,\n year: null,\n month: null,\n day: null,\n hour: 0,\n min: 0,\n sec: 0\n };\n if (!e) return null;\n if (e instanceof Date) return e;\n if (\"U\" === t) return (r = parseInt(e)) ? new Date(1e3 * r) : e;\n switch (typeof e) {\n case \"number\":\n return new Date(e);\n case \"string\":\n break;\n default:\n return null;\n }\n if (!(a = t.match(c.validParts)) || 0 === a.length) throw new Error(\"Invalid date format definition.\");\n for (n = e.replace(c.separators, \"\\0\").split(\"\\0\"), r = 0; r < n.length; r++) switch (o = n[r], i = parseInt(o), a[r]) {\n case \"y\":\n case \"Y\":\n if (!i) return null;\n l = o.length, p.year = 2 === l ? parseInt((i < 70 ? \"20\" : \"19\") + o) : i, m = !0;\n break;\n case \"m\":\n case \"n\":\n case \"M\":\n case \"F\":\n if (isNaN(i)) {\n if (!(0 < (s = c.getMonth(o)))) return null;\n p.month = s;\n } else {\n if (!(1 <= i && i <= 12)) return null;\n p.month = i;\n }\n m = !0;\n break;\n case \"d\":\n case \"j\":\n if (!(1 <= i && i <= 31)) return null;\n p.day = i, m = !0;\n break;\n case \"g\":\n case \"h\":\n if (f = n[d = -1 < a.indexOf(\"a\") ? a.indexOf(\"a\") : -1 < a.indexOf(\"A\") ? a.indexOf(\"A\") : -1], -1 < d) u = D(f, g.meridiem[0]) ? 0 : D(f, g.meridiem[1]) ? 12 : -1, 1 <= i && i <= 12 && -1 < u ? p.hour = i + u - 1 : 0 <= i && i <= 23 && (p.hour = i);else {\n if (!(0 <= i && i <= 23)) return null;\n p.hour = i;\n }\n h = !0;\n break;\n case \"G\":\n case \"H\":\n if (!(0 <= i && i <= 23)) return null;\n p.hour = i, h = !0;\n break;\n case \"i\":\n if (!(0 <= i && i <= 59)) return null;\n p.min = i, h = !0;\n break;\n case \"s\":\n if (!(0 <= i && i <= 59)) return null;\n p.sec = i, h = !0;\n }\n if (!0 === m && p.year && p.month && p.day) p.date = new Date(p.year, p.month - 1, p.day, p.hour, p.min, p.sec, 0);else {\n if (!0 !== h) return null;\n p.date = new Date(0, 0, 0, p.hour, p.min, p.sec, 0);\n }\n return p.date;\n },\n guessDate: function (e, t) {\n if (\"string\" != typeof e) return e;\n var a,\n n,\n r,\n o,\n i,\n s,\n d = e.replace(this.separators, \"\\0\").split(\"\\0\"),\n u = t.match(this.validParts),\n l = new Date(),\n f = 0;\n if (!/^[djmn]/g.test(u[0])) return e;\n for (r = 0; r < d.length; r++) {\n if (f = 2, i = d[r], s = parseInt(i.substr(0, 2)), isNaN(s)) return null;\n switch (r) {\n case 0:\n \"m\" === u[0] || \"n\" === u[0] ? l.setMonth(s - 1) : l.setDate(s);\n break;\n case 1:\n \"m\" === u[0] || \"n\" === u[0] ? l.setDate(s) : l.setMonth(s - 1);\n break;\n case 2:\n if (n = l.getFullYear(), f = (a = i.length) < 4 ? a : 4, !(n = parseInt(a < 4 ? n.toString().substr(0, 4 - a) + i : i.substr(0, 4)))) return null;\n l.setFullYear(n);\n break;\n case 3:\n l.setHours(s);\n break;\n case 4:\n l.setMinutes(s);\n break;\n case 5:\n l.setSeconds(s);\n }\n 0 < (o = i.substr(f)).length && d.splice(r + 1, 0, o);\n }\n return l;\n },\n parseFormat: function (e, n) {\n var a,\n t = this,\n r = t.dateSettings,\n o = /\\\\?(.?)/gi,\n i = function (e, t) {\n return a[e] ? a[e]() : t;\n };\n return a = {\n d: function () {\n return s(a.j(), 2);\n },\n D: function () {\n return r.daysShort[a.w()];\n },\n j: function () {\n return n.getDate();\n },\n l: function () {\n return r.days[a.w()];\n },\n N: function () {\n return a.w() || 7;\n },\n w: function () {\n return n.getDay();\n },\n z: function () {\n var e = new Date(a.Y(), a.n() - 1, a.j()),\n t = new Date(a.Y(), 0, 1);\n return Math.round((e - t) / 864e5);\n },\n W: function () {\n var e = new Date(a.Y(), a.n() - 1, a.j() - a.N() + 3),\n t = new Date(e.getFullYear(), 0, 4);\n return s(1 + Math.round((e - t) / 864e5 / 7), 2);\n },\n F: function () {\n return r.months[n.getMonth()];\n },\n m: function () {\n return s(a.n(), 2);\n },\n M: function () {\n return r.monthsShort[n.getMonth()];\n },\n n: function () {\n return n.getMonth() + 1;\n },\n t: function () {\n return new Date(a.Y(), a.n(), 0).getDate();\n },\n L: function () {\n var e = a.Y();\n return e % 4 == 0 && e % 100 != 0 || e % 400 == 0 ? 1 : 0;\n },\n o: function () {\n var e = a.n(),\n t = a.W();\n return a.Y() + (12 === e && t < 9 ? 1 : 1 === e && 9 < t ? -1 : 0);\n },\n Y: function () {\n return n.getFullYear();\n },\n y: function () {\n return a.Y().toString().slice(-2);\n },\n a: function () {\n return a.A().toLowerCase();\n },\n A: function () {\n var e = a.G() < 12 ? 0 : 1;\n return r.meridiem[e];\n },\n B: function () {\n var e = 3600 * n.getUTCHours(),\n t = 60 * n.getUTCMinutes(),\n a = n.getUTCSeconds();\n return s(Math.floor((e + t + a + 3600) / 86.4) % 1e3, 3);\n },\n g: function () {\n return a.G() % 12 || 12;\n },\n G: function () {\n return n.getHours();\n },\n h: function () {\n return s(a.g(), 2);\n },\n H: function () {\n return s(a.G(), 2);\n },\n i: function () {\n return s(n.getMinutes(), 2);\n },\n s: function () {\n return s(n.getSeconds(), 2);\n },\n u: function () {\n return s(1e3 * n.getMilliseconds(), 6);\n },\n e: function () {\n return /\\((.*)\\)/.exec(String(n))[1] || \"Coordinated Universal Time\";\n },\n I: function () {\n return new Date(a.Y(), 0) - Date.UTC(a.Y(), 0) != new Date(a.Y(), 6) - Date.UTC(a.Y(), 6) ? 1 : 0;\n },\n O: function () {\n var e = n.getTimezoneOffset(),\n t = Math.abs(e);\n return (0 < e ? \"-\" : \"+\") + s(100 * Math.floor(t / 60) + t % 60, 4);\n },\n P: function () {\n var e = a.O();\n return e.substr(0, 3) + \":\" + e.substr(3, 2);\n },\n T: function () {\n return (String(n).match(t.tzParts) || [\"\"]).pop().replace(t.tzClip, \"\") || \"UTC\";\n },\n Z: function () {\n return 60 * -n.getTimezoneOffset();\n },\n c: function () {\n return \"Y-m-d\\\\TH:i:sP\".replace(o, i);\n },\n r: function () {\n return \"D, d M Y H:i:s O\".replace(o, i);\n },\n U: function () {\n return n.getTime() / 1e3 || 0;\n }\n }, i(e, e);\n },\n formatDate: function (e, t) {\n var a,\n n,\n r,\n o,\n i,\n s = \"\";\n if (\"string\" == typeof e && !(e = this.parseDate(e, t))) return null;\n if (e instanceof Date) {\n for (r = t.length, a = 0; a < r; a++) \"S\" !== (i = t.charAt(a)) && \"\\\\\" !== i && (0 < a && \"\\\\\" === t.charAt(a - 1) ? s += i : (o = this.parseFormat(i, e), a !== r - 1 && this.intParts.test(i) && \"S\" === t.charAt(a + 1) && (n = parseInt(o) || 0, o += this.dateSettings.ordinal(n)), s += o));\n return s;\n }\n return \"\";\n }\n };\n}();\nvar datetimepickerFactory = function (L) {\n \"use strict\";\n\n var s = {\n i18n: {\n ar: {\n months: [\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"مايو\", \"Øزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"],\n dayOfWeekShort: [\"Ù†\", \"Ø«\", \"ع\", \"Ø®\", \"ج\", \"س\", \"Ø\"],\n dayOfWeek: [\"الأØد\", \"الاثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\", \"الأØد\"]\n },\n ro: {\n months: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"Noiembrie\", \"Decembrie\"],\n dayOfWeekShort: [\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sâ\"],\n dayOfWeek: [\"Duminică\", \"Luni\", \"MarÅ£i\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sâmbătă\"]\n },\n id: {\n months: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n dayOfWeekShort: [\"Min\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"],\n dayOfWeek: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"]\n },\n is: {\n months: [\"Janúar\", \"Febrúar\", \"Mars\", \"AprÃl\", \"MaÃ\", \"JúnÃ\", \"JúlÃ\", \"Ãgúst\", \"September\", \"Október\", \"Nóvember\", \"Desember\"],\n dayOfWeekShort: [\"Sun\", \"Mán\", \"Þrið\", \"Mið\", \"Fim\", \"Fös\", \"Lau\"],\n dayOfWeek: [\"Sunnudagur\", \"Mánudagur\", \"Þriðjudagur\", \"Miðvikudagur\", \"Fimmtudagur\", \"Föstudagur\", \"Laugardagur\"]\n },\n bg: {\n months: [\"Януари\", \"Февруари\", \"Март\", \"Ðприл\", \"Май\", \"Юни\", \"Юли\", \"ÐвгуÑÑ‚\", \"Септември\", \"Октомври\", \"Ðоември\", \"Декември\"],\n dayOfWeekShort: [\"Ðд\", \"Пн\", \"Ð’Ñ‚\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"],\n dayOfWeek: [\"ÐеделÑ\", \"Понеделник\", \"Вторник\", \"СрÑда\", \"Четвъртък\", \"Петък\", \"Събота\"]\n },\n fa: {\n months: [\"Ùروردین\", \"اردیبهشت\", \"خرداد\", \"تیر\", \"مرداد\", \"شهریور\", \"مهر\", \"آبان\", \"آذر\", \"دی\", \"بهمن\", \"اسÙند\"],\n dayOfWeekShort: [\"یکشنبه\", \"دوشنبه\", \"سه شنبه\", \"چهارشنبه\", \"پنجشنبه\", \"جمعه\", \"شنبه\"],\n dayOfWeek: [\"یک‌شنبه\", \"دوشنبه\", \"سه‌شنبه\", \"چهارشنبه\", \"پنج‌شنبه\", \"جمعه\", \"شنبه\", \"یک‌شنبه\"]\n },\n ru: {\n months: [\"Январь\", \"Февраль\", \"Март\", \"Ðпрель\", \"Май\", \"Июнь\", \"Июль\", \"ÐвгуÑÑ‚\", \"СентÑбрь\", \"ОктÑбрь\", \"ÐоÑбрь\", \"Декабрь\"],\n dayOfWeekShort: [\"Ð’Ñ\", \"Пн\", \"Ð’Ñ‚\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"],\n dayOfWeek: [\"ВоÑкреÑенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"ПÑтница\", \"Суббота\"]\n },\n uk: {\n months: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"ВереÑень\", \"Жовтень\", \"ЛиÑтопад\", \"Грудень\"],\n dayOfWeekShort: [\"Ðдл\", \"Пнд\", \"Ð’Ñ‚Ñ€\", \"Срд\", \"Чтв\", \"Птн\", \"Сбт\"],\n dayOfWeek: [\"ÐеділÑ\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ÑтницÑ\", \"Субота\"]\n },\n en: {\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n dayOfWeekShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n dayOfWeek: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n },\n el: {\n months: [\"ΙανουάÏιος\", \"ΦεβÏουάÏιος\", \"ΜάÏτιος\", \"ΑπÏίλιος\", \"Μάιος\", \"ΙοÏνιος\", \"ΙοÏλιος\", \"ΑÏγουστος\", \"ΣεπτÎμβÏιος\", \"ΟκτώβÏιος\", \"ÎοÎμβÏιος\", \"ΔεκÎμβÏιος\"],\n dayOfWeekShort: [\"ΚυÏ\", \"Δευ\", \"ΤÏι\", \"Τετ\", \"Πεμ\", \"ΠαÏ\", \"Σαβ\"],\n dayOfWeek: [\"ΚυÏιακή\", \"ΔευτÎÏα\", \"ΤÏίτη\", \"ΤετάÏτη\", \"Î Îμπτη\", \"ΠαÏασκευή\", \"Σάββατο\"]\n },\n de: {\n months: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n dayOfWeekShort: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n dayOfWeek: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"]\n },\n nl: {\n months: [\"januari\", \"februari\", \"maart\", \"april\", \"mei\", \"juni\", \"juli\", \"augustus\", \"september\", \"oktober\", \"november\", \"december\"],\n dayOfWeekShort: [\"zo\", \"ma\", \"di\", \"wo\", \"do\", \"vr\", \"za\"],\n dayOfWeek: [\"zondag\", \"maandag\", \"dinsdag\", \"woensdag\", \"donderdag\", \"vrijdag\", \"zaterdag\"]\n },\n tr: {\n months: [\"Ocak\", \"Åžubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"AÄŸustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\n dayOfWeekShort: [\"Paz\", \"Pts\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cts\"],\n dayOfWeek: [\"Pazar\", \"Pazartesi\", \"Salı\", \"ÇarÅŸamba\", \"PerÅŸembe\", \"Cuma\", \"Cumartesi\"]\n },\n fr: {\n months: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\n dayOfWeekShort: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"],\n dayOfWeek: [\"dimanche\", \"lundi\", \"mardi\", \"mercredi\", \"jeudi\", \"vendredi\", \"samedi\"]\n },\n es: {\n months: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\n dayOfWeekShort: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"],\n dayOfWeek: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"]\n },\n th: {\n months: [\"มà¸à¸£à¸²à¸„ม\", \"à¸à¸¸à¸¡à¸ าพันธ์\", \"มีนาคม\", \"เมษายน\", \"พฤษภาคม\", \"มิถุนายน\", \"à¸à¸£à¸à¸Žà¸²à¸„ม\", \"สิงหาคม\", \"à¸à¸±à¸™à¸¢à¸²à¸¢à¸™\", \"ตุลาคม\", \"พฤศจิà¸à¸²à¸¢à¸™\", \"ธันวาคม\"],\n dayOfWeekShort: [\"à¸à¸².\", \"จ.\", \"à¸.\", \"พ.\", \"พฤ.\", \"ศ.\", \"ส.\"],\n dayOfWeek: [\"à¸à¸²à¸—ิตย์\", \"จันทร์\", \"à¸à¸±à¸‡à¸„าร\", \"พุธ\", \"พฤหัส\", \"ศุà¸à¸£à¹Œ\", \"เสาร์\", \"à¸à¸²à¸—ิตย์\"]\n },\n pl: {\n months: [\"styczeÅ„\", \"luty\", \"marzec\", \"kwiecieÅ„\", \"maj\", \"czerwiec\", \"lipiec\", \"sierpieÅ„\", \"wrzesieÅ„\", \"październik\", \"listopad\", \"grudzieÅ„\"],\n dayOfWeekShort: [\"nd\", \"pn\", \"wt\", \"Å›r\", \"cz\", \"pt\", \"sb\"],\n dayOfWeek: [\"niedziela\", \"poniedziaÅ‚ek\", \"wtorek\", \"Å›roda\", \"czwartek\", \"piÄ…tek\", \"sobota\"]\n },\n pt: {\n months: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\n dayOfWeekShort: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"],\n dayOfWeek: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"]\n },\n ch: {\n months: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"å…月\", \"七月\", \"八月\", \"ä¹æœˆ\", \"å月\", \"å一月\", \"å二月\"],\n dayOfWeekShort: [\"æ—¥\", \"一\", \"二\", \"三\", \"å››\", \"五\", \"å…\"]\n },\n se: {\n months: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\n dayOfWeekShort: [\"Sön\", \"MÃ¥n\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"]\n },\n km: {\n months: [\"មករា​\", \"កុម្ភៈ\", \"មិនា​\", \"មáŸážŸáž¶â€‹\", \"ឧសភា​\", \"មិážáž»áž“ា​\", \"កក្កដា​\", \"សីហា​\", \"កញ្ញា​\", \"ážáž»áž›áž¶â€‹\", \"វិច្ឆិកា\", \"ធ្នូ​\"],\n dayOfWeekShort: [\"អាទិ​\", \"áž…áŸáž“្ទ​\", \"អង្គារ​\", \"ពុធ​\", \"ព្រហ​​\", \"សុក្រ​\", \"សៅរáŸ\"],\n dayOfWeek: [\"អាទិážáŸ’យ​\", \"áž…áŸáž“្ទ​\", \"អង្គារ​\", \"ពុធ​\", \"ព្រហស្បážáž·áŸâ€‹\", \"សុក្រ​\", \"សៅរáŸ\"]\n },\n kr: {\n months: [\"1ì›”\", \"2ì›”\", \"3ì›”\", \"4ì›”\", \"5ì›”\", \"6ì›”\", \"7ì›”\", \"8ì›”\", \"9ì›”\", \"10ì›”\", \"11ì›”\", \"12ì›”\"],\n dayOfWeekShort: [\"ì¼\", \"ì›”\", \"í™”\", \"수\", \"목\", \"금\", \"í† \"],\n dayOfWeek: [\"ì¼ìš”ì¼\", \"월요ì¼\", \"화요ì¼\", \"수요ì¼\", \"목요ì¼\", \"금요ì¼\", \"í† ìš”ì¼\"]\n },\n it: {\n months: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\n dayOfWeekShort: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"],\n dayOfWeek: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"]\n },\n da: {\n months: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\n dayOfWeekShort: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"],\n dayOfWeek: [\"søndag\", \"mandag\", \"tirsdag\", \"onsdag\", \"torsdag\", \"fredag\", \"lørdag\"]\n },\n no: {\n months: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n dayOfWeekShort: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"],\n dayOfWeek: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\n },\n ja: {\n months: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\n dayOfWeekShort: [\"æ—¥\", \"月\", \"ç«\", \"æ°´\", \"木\", \"金\", \"土\"],\n dayOfWeek: [\"日曜\", \"月曜\", \"ç«æ›œ\", \"水曜\", \"木曜\", \"金曜\", \"土曜\"]\n },\n vi: {\n months: [\"Tháng 1\", \"Tháng 2\", \"Tháng 3\", \"Tháng 4\", \"Tháng 5\", \"Tháng 6\", \"Tháng 7\", \"Tháng 8\", \"Tháng 9\", \"Tháng 10\", \"Tháng 11\", \"Tháng 12\"],\n dayOfWeekShort: [\"CN\", \"T2\", \"T3\", \"T4\", \"T5\", \"T6\", \"T7\"],\n dayOfWeek: [\"Chủ nháºt\", \"Thứ hai\", \"Thứ ba\", \"Thứ tÆ°\", \"Thứ năm\", \"Thứ sáu\", \"Thứ bảy\"]\n },\n sl: {\n months: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\n dayOfWeekShort: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"ÄŒet\", \"Pet\", \"Sob\"],\n dayOfWeek: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"ÄŒetrtek\", \"Petek\", \"Sobota\"]\n },\n cs: {\n months: [\"Leden\", \"Únor\", \"BÅ™ezen\", \"Duben\", \"KvÄ›ten\", \"ÄŒerven\", \"ÄŒervenec\", \"Srpen\", \"ZářÃ\", \"ŘÃjen\", \"Listopad\", \"Prosinec\"],\n dayOfWeekShort: [\"Ne\", \"Po\", \"Út\", \"St\", \"ÄŒt\", \"Pá\", \"So\"]\n },\n hu: {\n months: [\"Január\", \"Február\", \"Március\", \"Ãprilis\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\n dayOfWeekShort: [\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Cs\", \"Pé\", \"Szo\"],\n dayOfWeek: [\"vasárnap\", \"hétfÅ‘\", \"kedd\", \"szerda\", \"csütörtök\", \"péntek\", \"szombat\"]\n },\n az: {\n months: [\"Yanvar\", \"Fevral\", \"Mart\", \"Aprel\", \"May\", \"Iyun\", \"Iyul\", \"Avqust\", \"Sentyabr\", \"Oktyabr\", \"Noyabr\", \"Dekabr\"],\n dayOfWeekShort: [\"B\", \"Be\", \"Ça\", \"Ç\", \"Ca\", \"C\", \"Åž\"],\n dayOfWeek: [\"Bazar\", \"Bazar ertÉ™si\", \"ÇərÅŸÉ™nbÉ™ axÅŸamı\", \"ÇərÅŸÉ™nbÉ™\", \"CümÉ™ axÅŸamı\", \"CümÉ™\", \"ŞənbÉ™\"]\n },\n bs: {\n months: [\"Januar\", \"Februar\", \"Mart\", \"April\", \"Maj\", \"Jun\", \"Jul\", \"Avgust\", \"Septembar\", \"Oktobar\", \"Novembar\", \"Decembar\"],\n dayOfWeekShort: [\"Ned\", \"Pon\", \"Uto\", \"Sri\", \"ÄŒet\", \"Pet\", \"Sub\"],\n dayOfWeek: [\"Nedjelja\", \"Ponedjeljak\", \"Utorak\", \"Srijeda\", \"ÄŒetvrtak\", \"Petak\", \"Subota\"]\n },\n ca: {\n months: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\n dayOfWeekShort: [\"Dg\", \"Dl\", \"Dt\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"],\n dayOfWeek: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"]\n },\n \"en-GB\": {\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n dayOfWeekShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n dayOfWeek: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n },\n et: {\n months: [\"Jaanuar\", \"Veebruar\", \"Märts\", \"Aprill\", \"Mai\", \"Juuni\", \"Juuli\", \"August\", \"September\", \"Oktoober\", \"November\", \"Detsember\"],\n dayOfWeekShort: [\"P\", \"E\", \"T\", \"K\", \"N\", \"R\", \"L\"],\n dayOfWeek: [\"Pühapäev\", \"Esmaspäev\", \"Teisipäev\", \"Kolmapäev\", \"Neljapäev\", \"Reede\", \"Laupäev\"]\n },\n eu: {\n months: [\"Urtarrila\", \"Otsaila\", \"Martxoa\", \"Apirila\", \"Maiatza\", \"Ekaina\", \"Uztaila\", \"Abuztua\", \"Iraila\", \"Urria\", \"Azaroa\", \"Abendua\"],\n dayOfWeekShort: [\"Ig.\", \"Al.\", \"Ar.\", \"Az.\", \"Og.\", \"Or.\", \"La.\"],\n dayOfWeek: [\"Igandea\", \"Astelehena\", \"Asteartea\", \"Asteazkena\", \"Osteguna\", \"Ostirala\", \"Larunbata\"]\n },\n fi: {\n months: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\n dayOfWeekShort: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"],\n dayOfWeek: [\"sunnuntai\", \"maanantai\", \"tiistai\", \"keskiviikko\", \"torstai\", \"perjantai\", \"lauantai\"]\n },\n gl: {\n months: [\"Xan\", \"Feb\", \"Maz\", \"Abr\", \"Mai\", \"Xun\", \"Xul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dec\"],\n dayOfWeekShort: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Xov\", \"Ven\", \"Sab\"],\n dayOfWeek: [\"Domingo\", \"Luns\", \"Martes\", \"Mércores\", \"Xoves\", \"Venres\", \"Sábado\"]\n },\n hr: {\n months: [\"SijeÄanj\", \"VeljaÄa\", \"Ožujak\", \"Travanj\", \"Svibanj\", \"Lipanj\", \"Srpanj\", \"Kolovoz\", \"Rujan\", \"Listopad\", \"Studeni\", \"Prosinac\"],\n dayOfWeekShort: [\"Ned\", \"Pon\", \"Uto\", \"Sri\", \"ÄŒet\", \"Pet\", \"Sub\"],\n dayOfWeek: [\"Nedjelja\", \"Ponedjeljak\", \"Utorak\", \"Srijeda\", \"ÄŒetvrtak\", \"Petak\", \"Subota\"]\n },\n ko: {\n months: [\"1ì›”\", \"2ì›”\", \"3ì›”\", \"4ì›”\", \"5ì›”\", \"6ì›”\", \"7ì›”\", \"8ì›”\", \"9ì›”\", \"10ì›”\", \"11ì›”\", \"12ì›”\"],\n dayOfWeekShort: [\"ì¼\", \"ì›”\", \"í™”\", \"수\", \"목\", \"금\", \"í† \"],\n dayOfWeek: [\"ì¼ìš”ì¼\", \"월요ì¼\", \"화요ì¼\", \"수요ì¼\", \"목요ì¼\", \"금요ì¼\", \"í† ìš”ì¼\"]\n },\n lt: {\n months: [\"Sausio\", \"Vasario\", \"Kovo\", \"Balandžio\", \"Gegužės\", \"Birželio\", \"Liepos\", \"RugpjÅ«Äio\", \"RugsÄ—jo\", \"Spalio\", \"LapkriÄio\", \"Gruodžio\"],\n dayOfWeekShort: [\"Sek\", \"Pir\", \"Ant\", \"Tre\", \"Ket\", \"Pen\", \"Å eÅ¡\"],\n dayOfWeek: [\"Sekmadienis\", \"Pirmadienis\", \"Antradienis\", \"TreÄiadienis\", \"Ketvirtadienis\", \"Penktadienis\", \"Å eÅ¡tadienis\"]\n },\n lv: {\n months: [\"JanvÄris\", \"FebruÄris\", \"Marts\", \"AprÄ«lis \", \"Maijs\", \"JÅ«nijs\", \"JÅ«lijs\", \"Augusts\", \"Septembris\", \"Oktobris\", \"Novembris\", \"Decembris\"],\n dayOfWeekShort: [\"Sv\", \"Pr\", \"Ot\", \"Tr\", \"Ct\", \"Pk\", \"St\"],\n dayOfWeek: [\"SvÄ“tdiena\", \"Pirmdiena\", \"Otrdiena\", \"TreÅ¡diena\", \"Ceturtdiena\", \"Piektdiena\", \"Sestdiena\"]\n },\n mk: {\n months: [\"јануари\", \"февруари\", \"март\", \"април\", \"мај\", \"јуни\", \"јули\", \"авгуÑÑ‚\", \"Ñептември\", \"октомври\", \"ноември\", \"декември\"],\n dayOfWeekShort: [\"нед\", \"пон\", \"вто\", \"Ñре\", \"чет\", \"пет\", \"Ñаб\"],\n dayOfWeek: [\"Ðедела\", \"Понеделник\", \"Вторник\", \"Среда\", \"Четврток\", \"Петок\", \"Сабота\"]\n },\n mn: {\n months: [\"1-Ñ€ Ñар\", \"2-Ñ€ Ñар\", \"3-Ñ€ Ñар\", \"4-Ñ€ Ñар\", \"5-Ñ€ Ñар\", \"6-Ñ€ Ñар\", \"7-Ñ€ Ñар\", \"8-Ñ€ Ñар\", \"9-Ñ€ Ñар\", \"10-Ñ€ Ñар\", \"11-Ñ€ Ñар\", \"12-Ñ€ Ñар\"],\n dayOfWeekShort: [\"Дав\", \"ÐœÑг\", \"Лха\", \"Пүр\", \"БÑн\", \"БÑм\", \"ÐÑм\"],\n dayOfWeek: [\"Даваа\", \"ÐœÑгмар\", \"Лхагва\", \"ПүрÑв\", \"БааÑан\", \"БÑмба\", \"ÐÑм\"]\n },\n \"pt-BR\": {\n months: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\n dayOfWeekShort: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sáb\"],\n dayOfWeek: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"]\n },\n sk: {\n months: [\"Január\", \"Február\", \"Marec\", \"AprÃl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\n dayOfWeekShort: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Å t\", \"Pi\", \"So\"],\n dayOfWeek: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Å tvrtok\", \"Piatok\", \"Sobota\"]\n },\n sq: {\n months: [\"Janar\", \"Shkurt\", \"Mars\", \"Prill\", \"Maj\", \"Qershor\", \"Korrik\", \"Gusht\", \"Shtator\", \"Tetor\", \"Nëntor\", \"Dhjetor\"],\n dayOfWeekShort: [\"Die\", \"Hën\", \"Mar\", \"Mër\", \"Enj\", \"Pre\", \"Shtu\"],\n dayOfWeek: [\"E Diel\", \"E Hënë\", \"E MartÄ“\", \"E Mërkurë\", \"E Enjte\", \"E Premte\", \"E Shtunë\"]\n },\n \"sr-YU\": {\n months: [\"Januar\", \"Februar\", \"Mart\", \"April\", \"Maj\", \"Jun\", \"Jul\", \"Avgust\", \"Septembar\", \"Oktobar\", \"Novembar\", \"Decembar\"],\n dayOfWeekShort: [\"Ned\", \"Pon\", \"Uto\", \"Sre\", \"Äet\", \"Pet\", \"Sub\"],\n dayOfWeek: [\"Nedelja\", \"Ponedeljak\", \"Utorak\", \"Sreda\", \"ÄŒetvrtak\", \"Petak\", \"Subota\"]\n },\n sr: {\n months: [\"јануар\", \"фебруар\", \"март\", \"април\", \"мај\", \"јун\", \"јул\", \"авгуÑÑ‚\", \"Ñептембар\", \"октобар\", \"новембар\", \"децембар\"],\n dayOfWeekShort: [\"нед\", \"пон\", \"уто\", \"Ñре\", \"чет\", \"пет\", \"Ñуб\"],\n dayOfWeek: [\"Ðедеља\", \"Понедељак\", \"Уторак\", \"Среда\", \"Четвртак\", \"Петак\", \"Субота\"]\n },\n sv: {\n months: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\n dayOfWeekShort: [\"Sön\", \"MÃ¥n\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"],\n dayOfWeek: [\"Söndag\", \"MÃ¥ndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"]\n },\n \"zh-TW\": {\n months: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"å…月\", \"七月\", \"八月\", \"ä¹æœˆ\", \"å月\", \"å一月\", \"å二月\"],\n dayOfWeekShort: [\"æ—¥\", \"一\", \"二\", \"三\", \"å››\", \"五\", \"å…\"],\n dayOfWeek: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期å…\"]\n },\n zh: {\n months: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"å…月\", \"七月\", \"八月\", \"ä¹æœˆ\", \"å月\", \"å一月\", \"å二月\"],\n dayOfWeekShort: [\"æ—¥\", \"一\", \"二\", \"三\", \"å››\", \"五\", \"å…\"],\n dayOfWeek: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期å…\"]\n },\n ug: {\n months: [\"1-ئاي\", \"2-ئاي\", \"3-ئاي\", \"4-ئاي\", \"5-ئاي\", \"6-ئاي\", \"7-ئاي\", \"8-ئاي\", \"9-ئاي\", \"10-ئاي\", \"11-ئاي\", \"12-ئاي\"],\n dayOfWeek: [\"يەكشەنبە\", \"دۈشەنبە\", \"سەيشەنبە\", \"چارشەنبە\", \"پەيشەنبە\", \"جۈمە\", \"شەنبە\"]\n },\n he: {\n months: [\"×™× ×•×ר\", \"פברו×ר\", \"מרץ\", \"×פריל\", \"מ××™\", \"×™×•× ×™\", \"יולי\", \"×וגוסט\", \"ספטמבר\", \"×וקטובר\", \"× ×•×‘×ž×‘×¨\", \"דצמבר\"],\n dayOfWeekShort: [\"×'\", \"ב'\", \"×’'\", \"ד'\", \"×”'\", \"ו'\", \"שבת\"],\n dayOfWeek: [\"ר×שון\", \"×©× ×™\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\", \"ר×שון\"]\n },\n hy: {\n months: [\"Õ€Õ¸Ö‚Õ¶Õ¾Õ¡Ö€\", \"Õ“Õ¥Õ¿Ö€Õ¾Õ¡Ö€\", \"Õ„Õ¡Ö€Õ¿\", \"Ô±ÕºÖ€Õ«Õ¬\", \"Õ„Õ¡ÕµÕ«Õ½\", \"Õ€Õ¸Ö‚Õ¶Õ«Õ½\", \"Õ€Õ¸Ö‚Õ¬Õ«Õ½\", \"Õ•Õ£Õ¸Õ½Õ¿Õ¸Õ½\", \"ÕÕ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€\", \"Õ€Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€\", \"Õ†Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€\", \"Ô´Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€\"],\n dayOfWeekShort: [\"Ô¿Õ«\", \"ÔµÖ€Õ¯\", \"ÔµÖ€Ö„\", \"Õ‰Õ¸Ö€\", \"Õ€Õ¶Õ£\", \"ÕˆÖ‚Ö€Õ¢\", \"Õ‡Õ¢Õ©\"],\n dayOfWeek: [\"Ô¿Õ«Ö€Õ¡Õ¯Õ«\", \"ÔµÖ€Õ¯Õ¸Ö‚Õ·Õ¡Õ¢Õ©Õ«\", \"ÔµÖ€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«\", \"Õ‰Õ¸Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«\", \"Õ€Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«\", \"ÕˆÖ‚Ö€Õ¢Õ¡Õ©\", \"Õ‡Õ¡Õ¢Õ¡Õ©\"]\n },\n kg: {\n months: [\"Үчтүн айы\", \"Бирдин айы\", \"Жалган Куран\", \"Чын Куран\", \"Бугу\", \"Кулжа\", \"Теке\", \"Баш Оона\", \"ÐÑк Оона\", \"Тогуздун айы\", \"Жетинин айы\", \"Бештин айы\"],\n dayOfWeekShort: [\"Жек\", \"Дүй\", \"Шей\", \"Шар\", \"Бей\", \"Жум\", \"Ише\"],\n dayOfWeek: [\"Жекшемб\", \"Дүйшөмб\", \"Шейшемб\", \"Шаршемб\", \"Бейшемби\", \"Жума\", \"Ишенб\"]\n },\n rm: {\n months: [\"Schaner\", \"Favrer\", \"Mars\", \"Avrigl\", \"Matg\", \"Zercladur\", \"Fanadur\", \"Avust\", \"Settember\", \"October\", \"November\", \"December\"],\n dayOfWeekShort: [\"Du\", \"Gli\", \"Ma\", \"Me\", \"Gie\", \"Ve\", \"So\"],\n dayOfWeek: [\"Dumengia\", \"Glindesdi\", \"Mardi\", \"Mesemna\", \"Gievgia\", \"Venderdi\", \"Sonda\"]\n },\n ka: {\n months: [\"იáƒáƒœáƒ•áƒáƒ ი\", \"თებერვáƒáƒšáƒ˜\", \"მáƒáƒ ტი\", \"áƒáƒžáƒ ილი\", \"მáƒáƒ˜áƒ¡áƒ˜\", \"ივნისი\", \"ივლისი\", \"áƒáƒ’ვისტáƒ\", \"სექტემბერი\", \"áƒáƒ¥áƒ¢áƒáƒ›áƒ‘ერი\", \"ნáƒáƒ”მბერი\", \"დეკემბერი\"],\n dayOfWeekShort: [\"კვ\", \"áƒáƒ შ\", \"სáƒáƒ›áƒ¨\", \"áƒáƒ—ხ\", \"ხუთ\", \"პáƒáƒ \", \"შáƒáƒ‘\"],\n dayOfWeek: [\"კვირáƒ\", \"áƒáƒ შáƒáƒ‘áƒáƒ—ი\", \"სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ი\", \"áƒáƒ—ხშáƒáƒ‘áƒáƒ—ი\", \"ხუთშáƒáƒ‘áƒáƒ—ი\", \"პáƒáƒ áƒáƒ¡áƒ™áƒ”ვი\", \"შáƒáƒ‘áƒáƒ—ი\"]\n }\n },\n ownerDocument: document,\n contentWindow: window,\n value: \"\",\n rtl: !1,\n format: \"Y/m/d H:i\",\n formatTime: \"H:i\",\n formatDate: \"Y/m/d\",\n startDate: !1,\n step: 60,\n monthChangeSpinner: !0,\n closeOnDateSelect: !1,\n closeOnTimeSelect: !0,\n closeOnWithoutClick: !0,\n closeOnInputClick: !0,\n openOnFocus: !0,\n timepicker: !0,\n datepicker: !0,\n weeks: !1,\n defaultTime: !1,\n defaultDate: !1,\n minDate: !1,\n maxDate: !1,\n minTime: !1,\n maxTime: !1,\n minDateTime: !1,\n maxDateTime: !1,\n allowTimes: [],\n opened: !1,\n initTime: !0,\n inline: !1,\n theme: \"\",\n touchMovedThreshold: 5,\n onSelectDate: function () {},\n onSelectTime: function () {},\n onChangeMonth: function () {},\n onGetWeekOfYear: function () {},\n onChangeYear: function () {},\n onChangeDateTime: function () {},\n onShow: function () {},\n onClose: function () {},\n onGenerate: function () {},\n withoutCopyright: !0,\n inverseButton: !1,\n hours12: !1,\n next: \"xdsoft_next\",\n prev: \"xdsoft_prev\",\n dayOfWeekStart: 0,\n parentID: \"body\",\n timeHeightInTimePicker: 25,\n timepickerScrollbar: !0,\n todayButton: !0,\n prevButton: !0,\n nextButton: !0,\n defaultSelect: !0,\n scrollMonth: !0,\n scrollTime: !0,\n scrollInput: !0,\n lazyInit: !1,\n mask: !1,\n validateOnBlur: !0,\n allowBlank: !0,\n yearStart: 1950,\n yearEnd: 2050,\n monthStart: 0,\n monthEnd: 11,\n style: \"\",\n id: \"\",\n fixed: !1,\n roundTime: \"round\",\n className: \"\",\n weekends: [],\n highlightedDates: [],\n highlightedPeriods: [],\n allowDates: [],\n allowDateRe: null,\n disabledDates: [],\n disabledWeekDays: [],\n yearOffset: 0,\n beforeShowDay: null,\n enterLikeTab: !0,\n showApplyButton: !1,\n insideParent: !1\n },\n E = null,\n n = null,\n R = \"en\",\n a = {\n meridiem: [\"AM\", \"PM\"]\n },\n r = function () {\n var e = s.i18n[R],\n t = {\n days: e.dayOfWeek,\n daysShort: e.dayOfWeekShort,\n months: e.months,\n monthsShort: L.map(e.months, function (e) {\n return e.substring(0, 3);\n })\n };\n \"function\" == typeof DateFormatter && (E = n = new DateFormatter({\n dateSettings: L.extend({}, a, t)\n }));\n },\n o = {\n moment: {\n default_options: {\n format: \"YYYY/MM/DD HH:mm\",\n formatDate: \"YYYY/MM/DD\",\n formatTime: \"HH:mm\"\n },\n formatter: {\n parseDate: function (e, t) {\n if (i(t)) return n.parseDate(e, t);\n var a = moment(e, t);\n return !!a.isValid() && a.toDate();\n },\n formatDate: function (e, t) {\n return i(t) ? n.formatDate(e, t) : moment(e).format(t);\n },\n formatMask: function (e) {\n return e.replace(/Y{4}/g, \"9999\").replace(/Y{2}/g, \"99\").replace(/M{2}/g, \"19\").replace(/D{2}/g, \"39\").replace(/H{2}/g, \"29\").replace(/m{2}/g, \"59\").replace(/s{2}/g, \"59\");\n }\n }\n }\n };\n L.datetimepicker = {\n setLocale: function (e) {\n var t = s.i18n[e] ? e : \"en\";\n R !== t && (R = t, r());\n },\n setDateFormatter: function (e) {\n if (\"string\" == typeof e && o.hasOwnProperty(e)) {\n var t = o[e];\n L.extend(s, t.default_options), E = t.formatter;\n } else E = e;\n }\n };\n var t = {\n RFC_2822: \"D, d M Y H:i:s O\",\n ATOM: \"Y-m-dTH:i:sP\",\n ISO_8601: \"Y-m-dTH:i:sO\",\n RFC_822: \"D, d M y H:i:s O\",\n RFC_850: \"l, d-M-y H:i:s T\",\n RFC_1036: \"D, d M y H:i:s O\",\n RFC_1123: \"D, d M Y H:i:s O\",\n RSS: \"D, d M Y H:i:s O\",\n W3C: \"Y-m-dTH:i:sP\"\n },\n i = function (e) {\n return -1 !== Object.values(t).indexOf(e);\n };\n function m(e, t, a) {\n this.date = e, this.desc = t, this.style = a;\n }\n L.extend(L.datetimepicker, t), r(), window.getComputedStyle || (window.getComputedStyle = function (a) {\n return this.el = a, this.getPropertyValue = function (e) {\n var t = /(-([a-z]))/g;\n return \"float\" === e && (e = \"styleFloat\"), t.test(e) && (e = e.replace(t, function (e, t, a) {\n return a.toUpperCase();\n })), a.currentStyle[e] || null;\n }, this;\n }), Array.prototype.indexOf || (Array.prototype.indexOf = function (e, t) {\n var a, n;\n for (a = t || 0, n = this.length; a < n; a += 1) if (this[a] === e) return a;\n return -1;\n }), Date.prototype.countDaysInMonth = function () {\n return new Date(this.getFullYear(), this.getMonth() + 1, 0).getDate();\n }, L.fn.xdsoftScroller = function (p, D) {\n return this.each(function () {\n var o,\n i,\n s,\n d,\n u,\n l = L(this),\n a = function (e) {\n var t,\n a = {\n x: 0,\n y: 0\n };\n return \"touchstart\" === e.type || \"touchmove\" === e.type || \"touchend\" === e.type || \"touchcancel\" === e.type ? (t = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0], a.x = t.clientX, a.y = t.clientY) : \"mousedown\" !== e.type && \"mouseup\" !== e.type && \"mousemove\" !== e.type && \"mouseover\" !== e.type && \"mouseout\" !== e.type && \"mouseenter\" !== e.type && \"mouseleave\" !== e.type || (a.x = e.clientX, a.y = e.clientY), a;\n },\n f = 100,\n n = !1,\n r = 0,\n c = 0,\n m = 0,\n t = !1,\n h = 0,\n g = function () {};\n \"hide\" !== D ? (L(this).hasClass(\"xdsoft_scroller_box\") || (o = l.children().eq(0), i = l[0].clientHeight, s = o[0].offsetHeight, d = L('<div class=\"xdsoft_scrollbar\"></div>'), u = L('<div class=\"xdsoft_scroller\"></div>'), d.append(u), l.addClass(\"xdsoft_scroller_box\").append(d), g = function (e) {\n var t = a(e).y - r + h;\n t < 0 && (t = 0), t + u[0].offsetHeight > m && (t = m - u[0].offsetHeight), l.trigger(\"scroll_element.xdsoft_scroller\", [f ? t / f : 0]);\n }, u.on(\"touchstart.xdsoft_scroller mousedown.xdsoft_scroller\", function (e) {\n i || l.trigger(\"resize_scroll.xdsoft_scroller\", [D]), r = a(e).y, h = parseInt(u.css(\"margin-top\"), 10), m = d[0].offsetHeight, \"mousedown\" === e.type || \"touchstart\" === e.type ? (p.ownerDocument && L(p.ownerDocument.body).addClass(\"xdsoft_noselect\"), L([p.ownerDocument.body, p.contentWindow]).on(\"touchend mouseup.xdsoft_scroller\", function e() {\n L([p.ownerDocument.body, p.contentWindow]).off(\"touchend mouseup.xdsoft_scroller\", e).off(\"mousemove.xdsoft_scroller\", g).removeClass(\"xdsoft_noselect\");\n }), L(p.ownerDocument.body).on(\"mousemove.xdsoft_scroller\", g)) : (t = !0, e.stopPropagation(), e.preventDefault());\n }).on(\"touchmove\", function (e) {\n t && (e.preventDefault(), g(e));\n }).on(\"touchend touchcancel\", function () {\n t = !1, h = 0;\n }), l.on(\"scroll_element.xdsoft_scroller\", function (e, t) {\n i || l.trigger(\"resize_scroll.xdsoft_scroller\", [t, !0]), t = 1 < t ? 1 : t < 0 || isNaN(t) ? 0 : t, u.css(\"margin-top\", f * t), setTimeout(function () {\n o.css(\"marginTop\", -parseInt((o[0].offsetHeight - i) * t, 10));\n }, 10);\n }).on(\"resize_scroll.xdsoft_scroller\", function (e, t, a) {\n var n, r;\n i = l[0].clientHeight, s = o[0].offsetHeight, r = (n = i / s) * d[0].offsetHeight, 1 < n ? u.hide() : (u.show(), u.css(\"height\", parseInt(10 < r ? r : 10, 10)), f = d[0].offsetHeight - u[0].offsetHeight, !0 !== a && l.trigger(\"scroll_element.xdsoft_scroller\", [t || Math.abs(parseInt(o.css(\"marginTop\"), 10)) / (s - i)]));\n }), l.on(\"mousewheel\", function (e) {\n var t = Math.abs(parseInt(o.css(\"marginTop\"), 10));\n return (t -= 20 * e.deltaY) < 0 && (t = 0), l.trigger(\"scroll_element.xdsoft_scroller\", [t / (s - i)]), e.stopPropagation(), !1;\n }), l.on(\"touchstart\", function (e) {\n n = a(e), c = Math.abs(parseInt(o.css(\"marginTop\"), 10));\n }), l.on(\"touchmove\", function (e) {\n if (n) {\n e.preventDefault();\n var t = a(e);\n l.trigger(\"scroll_element.xdsoft_scroller\", [(c - (t.y - n.y)) / (s - i)]);\n }\n }), l.on(\"touchend touchcancel\", function () {\n n = !1, c = 0;\n })), l.trigger(\"resize_scroll.xdsoft_scroller\", [D])) : l.find(\".xdsoft_scrollbar\").hide();\n });\n }, L.fn.datetimepicker = function (H, a) {\n var n,\n r,\n o = this,\n p = 17,\n D = 13,\n y = 27,\n v = 37,\n b = 38,\n k = 39,\n x = 40,\n T = 9,\n S = 116,\n M = 65,\n w = 67,\n j = 86,\n J = 90,\n z = 89,\n I = !1,\n N = L.isPlainObject(H) || !H ? L.extend(!0, {}, s, H) : L.extend(!0, {}, s),\n i = 0;\n return n = function (O) {\n var t,\n n,\n a,\n r,\n W,\n h,\n _ = L('<div class=\"xdsoft_datetimepicker xdsoft_noselect\"></div>'),\n e = L('<div class=\"xdsoft_copyright\"><a target=\"_blank\" href=\"http://xdsoft.net/jqplugins/datetimepicker/\">xdsoft.net</a></div>'),\n g = L('<div class=\"xdsoft_datepicker active\"></div>'),\n F = L('<div class=\"xdsoft_monthpicker\"><button type=\"button\" class=\"xdsoft_prev\"></button><button type=\"button\" class=\"xdsoft_today_button\"></button><div class=\"xdsoft_label xdsoft_month\"><span></span><i></i></div><div class=\"xdsoft_label xdsoft_year\"><span></span><i></i></div><button type=\"button\" class=\"xdsoft_next\"></button></div>'),\n C = L('<div class=\"xdsoft_calendar\"></div>'),\n o = L('<div class=\"xdsoft_timepicker active\"><button type=\"button\" class=\"xdsoft_prev\"></button><div class=\"xdsoft_time_box\"></div><button type=\"button\" class=\"xdsoft_next\"></button></div>'),\n u = o.find(\".xdsoft_time_box\").eq(0),\n P = L('<div class=\"xdsoft_time_variant\"></div>'),\n i = L('<button type=\"button\" class=\"xdsoft_save_selected blue-gradient-button\">Save Selected</button>'),\n Y = L('<div class=\"xdsoft_select xdsoft_monthselect\"><div></div></div>'),\n A = L('<div class=\"xdsoft_select xdsoft_yearselect\"><div></div></div>'),\n s = !1,\n d = 0;\n N.id && _.attr(\"id\", N.id), N.style && _.attr(\"style\", N.style), N.weeks && _.addClass(\"xdsoft_showweeks\"), N.rtl && _.addClass(\"xdsoft_rtl\"), _.addClass(\"xdsoft_\" + N.theme), _.addClass(N.className), F.find(\".xdsoft_month span\").after(Y), F.find(\".xdsoft_year span\").after(A), F.find(\".xdsoft_month,.xdsoft_year\").on(\"touchstart mousedown.xdsoft\", function (e) {\n var t,\n a,\n n = L(this).find(\".xdsoft_select\").eq(0),\n r = 0,\n o = 0,\n i = n.is(\":visible\");\n for (F.find(\".xdsoft_select\").hide(), W.currentTime && (r = W.currentTime[L(this).hasClass(\"xdsoft_month\") ? \"getMonth\" : \"getFullYear\"]()), n[i ? \"hide\" : \"show\"](), t = n.find(\"div.xdsoft_option\"), a = 0; a < t.length && t.eq(a).data(\"value\") !== r; a += 1) o += t[0].offsetHeight;\n return n.xdsoftScroller(N, o / (n.children()[0].offsetHeight - n[0].clientHeight)), e.stopPropagation(), !1;\n });\n var l = function (e) {\n var t = e.originalEvent,\n a = t.touches ? t.touches[0] : t;\n this.touchStartPosition = this.touchStartPosition || a;\n var n = Math.abs(this.touchStartPosition.clientX - a.clientX),\n r = Math.abs(this.touchStartPosition.clientY - a.clientY);\n Math.sqrt(n * n + r * r) > N.touchMovedThreshold && (this.touchMoved = !0);\n };\n function f() {\n var e,\n t = !1;\n return N.startDate ? t = W.strToDate(N.startDate) : (t = N.value || (O && O.val && O.val() ? O.val() : \"\")) ? (t = W.strToDateTime(t), N.yearOffset && (t = new Date(t.getFullYear() - N.yearOffset, t.getMonth(), t.getDate(), t.getHours(), t.getMinutes(), t.getSeconds(), t.getMilliseconds()))) : N.defaultDate && (t = W.strToDateTime(N.defaultDate), N.defaultTime && (e = W.strtotime(N.defaultTime), t.setHours(e.getHours()), t.setMinutes(e.getMinutes()))), t && W.isValidDate(t) ? _.data(\"changed\", !0) : t = \"\", t || 0;\n }\n function c(m) {\n var h = function (e, t) {\n var a = e.replace(/([\\[\\]\\/\\{\\}\\(\\)\\-\\.\\+]{1})/g, \"\\\\$1\").replace(/_/g, \"{digit+}\").replace(/([0-9]{1})/g, \"{digit$1}\").replace(/\\{digit([0-9]{1})\\}/g, \"[0-$1_]{1}\").replace(/\\{digit[\\+]\\}/g, \"[0-9_]{1}\");\n return new RegExp(a).test(t);\n },\n g = function (e, t) {\n if (!(e = \"string\" == typeof e || e instanceof String ? m.ownerDocument.getElementById(e) : e)) return !1;\n if (e.createTextRange) {\n var a = e.createTextRange();\n return a.collapse(!0), a.moveEnd(\"character\", t), a.moveStart(\"character\", t), a.select(), !0;\n }\n return !!e.setSelectionRange && (e.setSelectionRange(t, t), !0);\n };\n m.mask && O.off(\"keydown.xdsoft\"), !0 === m.mask && (E.formatMask ? m.mask = E.formatMask(m.format) : m.mask = m.format.replace(/Y/g, \"9999\").replace(/F/g, \"9999\").replace(/m/g, \"19\").replace(/d/g, \"39\").replace(/H/g, \"29\").replace(/i/g, \"59\").replace(/s/g, \"59\")), \"string\" === L.type(m.mask) && (h(m.mask, O.val()) || (O.val(m.mask.replace(/[0-9]/g, \"_\")), g(O[0], 0)), O.on(\"paste.xdsoft\", function (e) {\n var t = (e.clipboardData || e.originalEvent.clipboardData || window.clipboardData).getData(\"text\"),\n a = this.value,\n n = this.selectionStart;\n return a = a.substr(0, n) + t + a.substr(n + t.length), n += t.length, h(m.mask, a) ? (this.value = a, g(this, n)) : \"\" === L.trim(a) ? this.value = m.mask.replace(/[0-9]/g, \"_\") : O.trigger(\"error_input.xdsoft\"), e.preventDefault(), !1;\n }), O.on(\"keydown.xdsoft\", function (e) {\n var t,\n a = this.value,\n n = e.which,\n r = this.selectionStart,\n o = this.selectionEnd,\n i = r !== o;\n if (48 <= n && n <= 57 || 96 <= n && n <= 105 || 8 === n || 46 === n) {\n for (t = 8 === n || 46 === n ? \"_\" : String.fromCharCode(96 <= n && n <= 105 ? n - 48 : n), 8 === n && r && !i && (r -= 1);;) {\n var s = m.mask.substr(r, 1),\n d = r < m.mask.length,\n u = 0 < r;\n if (!(/[^0-9_]/.test(s) && d && u)) break;\n r += 8 !== n || i ? 1 : -1;\n }\n if (e.metaKey && (i = !(r = 0)), i) {\n var l = o - r,\n f = m.mask.replace(/[0-9]/g, \"_\"),\n c = f.substr(r, l).substr(1);\n a = a.substr(0, r) + (t + c) + a.substr(r + l);\n } else {\n a = a.substr(0, r) + t + a.substr(r + 1);\n }\n if (\"\" === L.trim(a)) a = f;else if (r === m.mask.length) return e.preventDefault(), !1;\n for (r += 8 === n ? 0 : 1; /[^0-9_]/.test(m.mask.substr(r, 1)) && r < m.mask.length && 0 < r;) r += 8 === n ? 0 : 1;\n h(m.mask, a) ? (this.value = a, g(this, r)) : \"\" === L.trim(a) ? this.value = m.mask.replace(/[0-9]/g, \"_\") : O.trigger(\"error_input.xdsoft\");\n } else if (-1 !== [M, w, j, J, z].indexOf(n) && I || -1 !== [y, b, x, v, k, S, p, T, D].indexOf(n)) return !0;\n return e.preventDefault(), !1;\n }));\n }\n F.find(\".xdsoft_select\").xdsoftScroller(N).on(\"touchstart mousedown.xdsoft\", function (e) {\n var t = e.originalEvent;\n this.touchMoved = !1, this.touchStartPosition = t.touches ? t.touches[0] : t, e.stopPropagation(), e.preventDefault();\n }).on(\"touchmove\", \".xdsoft_option\", l).on(\"touchend mousedown.xdsoft\", \".xdsoft_option\", function () {\n if (!this.touchMoved) {\n void 0 !== W.currentTime && null !== W.currentTime || (W.currentTime = W.now());\n var e = W.currentTime.getFullYear();\n W && W.currentTime && W.currentTime[L(this).parent().parent().hasClass(\"xdsoft_monthselect\") ? \"setMonth\" : \"setFullYear\"](L(this).data(\"value\")), L(this).parent().parent().hide(), _.trigger(\"xchange.xdsoft\"), N.onChangeMonth && L.isFunction(N.onChangeMonth) && N.onChangeMonth.call(_, W.currentTime, _.data(\"input\")), e !== W.currentTime.getFullYear() && L.isFunction(N.onChangeYear) && N.onChangeYear.call(_, W.currentTime, _.data(\"input\"));\n }\n }), _.getValue = function () {\n return W.getCurrentTime();\n }, _.setOptions = function (e) {\n var l = {};\n N = L.extend(!0, {}, N, e), e.allowTimes && L.isArray(e.allowTimes) && e.allowTimes.length && (N.allowTimes = L.extend(!0, [], e.allowTimes)), e.weekends && L.isArray(e.weekends) && e.weekends.length && (N.weekends = L.extend(!0, [], e.weekends)), e.allowDates && L.isArray(e.allowDates) && e.allowDates.length && (N.allowDates = L.extend(!0, [], e.allowDates)), e.allowDateRe && \"[object String]\" === Object.prototype.toString.call(e.allowDateRe) && (N.allowDateRe = new RegExp(e.allowDateRe)), e.highlightedDates && L.isArray(e.highlightedDates) && e.highlightedDates.length && (L.each(e.highlightedDates, function (e, t) {\n var a,\n n = L.map(t.split(\",\"), L.trim),\n r = new m(E.parseDate(n[0], N.formatDate), n[1], n[2]),\n o = E.formatDate(r.date, N.formatDate);\n void 0 !== l[o] ? (a = l[o].desc) && a.length && r.desc && r.desc.length && (l[o].desc = a + \"\\n\" + r.desc) : l[o] = r;\n }), N.highlightedDates = L.extend(!0, [], l)), e.highlightedPeriods && L.isArray(e.highlightedPeriods) && e.highlightedPeriods.length && (l = L.extend(!0, [], N.highlightedDates), L.each(e.highlightedPeriods, function (e, t) {\n var a, n, r, o, i, s, d;\n if (L.isArray(t)) a = t[0], n = t[1], r = t[2], d = t[3];else {\n var u = L.map(t.split(\",\"), L.trim);\n a = E.parseDate(u[0], N.formatDate), n = E.parseDate(u[1], N.formatDate), r = u[2], d = u[3];\n }\n for (; a <= n;) o = new m(a, r, d), i = E.formatDate(a, N.formatDate), a.setDate(a.getDate() + 1), void 0 !== l[i] ? (s = l[i].desc) && s.length && o.desc && o.desc.length && (l[i].desc = s + \"\\n\" + o.desc) : l[i] = o;\n }), N.highlightedDates = L.extend(!0, [], l)), e.disabledDates && L.isArray(e.disabledDates) && e.disabledDates.length && (N.disabledDates = L.extend(!0, [], e.disabledDates)), e.disabledWeekDays && L.isArray(e.disabledWeekDays) && e.disabledWeekDays.length && (N.disabledWeekDays = L.extend(!0, [], e.disabledWeekDays)), !N.open && !N.opened || N.inline || O.trigger(\"open.xdsoft\"), N.inline && (s = !0, _.addClass(\"xdsoft_inline\"), O.after(_).hide()), N.inverseButton && (N.next = \"xdsoft_prev\", N.prev = \"xdsoft_next\"), N.datepicker ? g.addClass(\"active\") : g.removeClass(\"active\"), N.timepicker ? o.addClass(\"active\") : o.removeClass(\"active\"), N.value && (W.setCurrentTime(N.value), O && O.val && O.val(W.str)), isNaN(N.dayOfWeekStart) ? N.dayOfWeekStart = 0 : N.dayOfWeekStart = parseInt(N.dayOfWeekStart, 10) % 7, N.timepickerScrollbar || u.xdsoftScroller(N, \"hide\"), N.minDate && /^[\\+\\-](.*)$/.test(N.minDate) && (N.minDate = E.formatDate(W.strToDateTime(N.minDate), N.formatDate)), N.maxDate && /^[\\+\\-](.*)$/.test(N.maxDate) && (N.maxDate = E.formatDate(W.strToDateTime(N.maxDate), N.formatDate)), N.minDateTime && /^\\+(.*)$/.test(N.minDateTime) && (N.minDateTime = W.strToDateTime(N.minDateTime).dateFormat(N.formatDate)), N.maxDateTime && /^\\+(.*)$/.test(N.maxDateTime) && (N.maxDateTime = W.strToDateTime(N.maxDateTime).dateFormat(N.formatDate)), i.toggle(N.showApplyButton), F.find(\".xdsoft_today_button\").css(\"visibility\", N.todayButton ? \"visible\" : \"hidden\"), F.find(\".\" + N.prev).css(\"visibility\", N.prevButton ? \"visible\" : \"hidden\"), F.find(\".\" + N.next).css(\"visibility\", N.nextButton ? \"visible\" : \"hidden\"), c(N), N.validateOnBlur && O.off(\"blur.xdsoft\").on(\"blur.xdsoft\", function () {\n if (N.allowBlank && (!L.trim(L(this).val()).length || \"string\" == typeof N.mask && L.trim(L(this).val()) === N.mask.replace(/[0-9]/g, \"_\"))) L(this).val(null), _.data(\"xdsoft_datetime\").empty();else {\n var e = E.parseDate(L(this).val(), N.format);\n if (e) L(this).val(E.formatDate(e, N.format));else {\n var t = +[L(this).val()[0], L(this).val()[1]].join(\"\"),\n a = +[L(this).val()[2], L(this).val()[3]].join(\"\");\n !N.datepicker && N.timepicker && 0 <= t && t < 24 && 0 <= a && a < 60 ? L(this).val([t, a].map(function (e) {\n return 9 < e ? e : \"0\" + e;\n }).join(\":\")) : L(this).val(E.formatDate(W.now(), N.format));\n }\n _.data(\"xdsoft_datetime\").setCurrentTime(L(this).val());\n }\n _.trigger(\"changedatetime.xdsoft\"), _.trigger(\"close.xdsoft\");\n }), N.dayOfWeekStartPrev = 0 === N.dayOfWeekStart ? 6 : N.dayOfWeekStart - 1, _.trigger(\"xchange.xdsoft\").trigger(\"afterOpen.xdsoft\");\n }, _.data(\"options\", N).on(\"touchstart mousedown.xdsoft\", function (e) {\n return e.stopPropagation(), e.preventDefault(), A.hide(), Y.hide(), !1;\n }), u.append(P), u.xdsoftScroller(N), _.on(\"afterOpen.xdsoft\", function () {\n u.xdsoftScroller(N);\n }), _.append(g).append(o), !0 !== N.withoutCopyright && _.append(e), g.append(F).append(C).append(i), N.insideParent ? L(O).parent().append(_) : L(N.parentID).append(_), W = new function () {\n var r = this;\n r.now = function (e) {\n var t,\n a,\n n = new Date();\n return !e && N.defaultDate && (t = r.strToDateTime(N.defaultDate), n.setFullYear(t.getFullYear()), n.setMonth(t.getMonth()), n.setDate(t.getDate())), n.setFullYear(n.getFullYear()), !e && N.defaultTime && (a = r.strtotime(N.defaultTime), n.setHours(a.getHours()), n.setMinutes(a.getMinutes()), n.setSeconds(a.getSeconds()), n.setMilliseconds(a.getMilliseconds())), n;\n }, r.isValidDate = function (e) {\n return \"[object Date]\" === Object.prototype.toString.call(e) && !isNaN(e.getTime());\n }, r.setCurrentTime = function (e, t) {\n \"string\" == typeof e ? r.currentTime = r.strToDateTime(e) : r.isValidDate(e) ? r.currentTime = e : e || t || !N.allowBlank || N.inline ? r.currentTime = r.now() : r.currentTime = null, _.trigger(\"xchange.xdsoft\");\n }, r.empty = function () {\n r.currentTime = null;\n }, r.getCurrentTime = function () {\n return r.currentTime;\n }, r.nextMonth = function () {\n void 0 !== r.currentTime && null !== r.currentTime || (r.currentTime = r.now());\n var e,\n t = r.currentTime.getMonth() + 1;\n return 12 === t && (r.currentTime.setFullYear(r.currentTime.getFullYear() + 1), t = 0), e = r.currentTime.getFullYear(), r.currentTime.setDate(Math.min(new Date(r.currentTime.getFullYear(), t + 1, 0).getDate(), r.currentTime.getDate())), r.currentTime.setMonth(t), N.onChangeMonth && L.isFunction(N.onChangeMonth) && N.onChangeMonth.call(_, W.currentTime, _.data(\"input\")), e !== r.currentTime.getFullYear() && L.isFunction(N.onChangeYear) && N.onChangeYear.call(_, W.currentTime, _.data(\"input\")), _.trigger(\"xchange.xdsoft\"), t;\n }, r.prevMonth = function () {\n void 0 !== r.currentTime && null !== r.currentTime || (r.currentTime = r.now());\n var e = r.currentTime.getMonth() - 1;\n return -1 === e && (r.currentTime.setFullYear(r.currentTime.getFullYear() - 1), e = 11), r.currentTime.setDate(Math.min(new Date(r.currentTime.getFullYear(), e + 1, 0).getDate(), r.currentTime.getDate())), r.currentTime.setMonth(e), N.onChangeMonth && L.isFunction(N.onChangeMonth) && N.onChangeMonth.call(_, W.currentTime, _.data(\"input\")), _.trigger(\"xchange.xdsoft\"), e;\n }, r.getWeekOfYear = function (e) {\n if (N.onGetWeekOfYear && L.isFunction(N.onGetWeekOfYear)) {\n var t = N.onGetWeekOfYear.call(_, e);\n if (void 0 !== t) return t;\n }\n var a = new Date(e.getFullYear(), 0, 1);\n return 4 !== a.getDay() && a.setMonth(0, 1 + (4 - a.getDay() + 7) % 7), Math.ceil(((e - a) / 864e5 + a.getDay() + 1) / 7);\n }, r.strToDateTime = function (e) {\n var t,\n a,\n n = [];\n return e && e instanceof Date && r.isValidDate(e) ? e : ((n = /^([+-]{1})(.*)$/.exec(e)) && (n[2] = E.parseDate(n[2], N.formatDate)), a = n && n[2] ? (t = n[2].getTime() - 6e4 * n[2].getTimezoneOffset(), new Date(r.now(!0).getTime() + parseInt(n[1] + \"1\", 10) * t)) : e ? E.parseDate(e, N.format) : r.now(), r.isValidDate(a) || (a = r.now()), a);\n }, r.strToDate = function (e) {\n if (e && e instanceof Date && r.isValidDate(e)) return e;\n var t = e ? E.parseDate(e, N.formatDate) : r.now(!0);\n return r.isValidDate(t) || (t = r.now(!0)), t;\n }, r.strtotime = function (e) {\n if (e && e instanceof Date && r.isValidDate(e)) return e;\n var t = e ? E.parseDate(e, N.formatTime) : r.now(!0);\n return r.isValidDate(t) || (t = r.now(!0)), t;\n }, r.str = function () {\n var e = N.format;\n return N.yearOffset && (e = (e = e.replace(\"Y\", r.currentTime.getFullYear() + N.yearOffset)).replace(\"y\", String(r.currentTime.getFullYear() + N.yearOffset).substring(2, 4))), E.formatDate(r.currentTime, e);\n }, r.currentTime = this.now();\n }(), i.on(\"touchend click\", function (e) {\n e.preventDefault(), _.data(\"changed\", !0), W.setCurrentTime(f()), O.val(W.str()), _.trigger(\"close.xdsoft\");\n }), F.find(\".xdsoft_today_button\").on(\"touchend mousedown.xdsoft\", function () {\n _.data(\"changed\", !0), W.setCurrentTime(0, !0), _.trigger(\"afterOpen.xdsoft\");\n }).on(\"dblclick.xdsoft\", function () {\n var e,\n t,\n a = W.getCurrentTime();\n a = new Date(a.getFullYear(), a.getMonth(), a.getDate()), e = W.strToDate(N.minDate), a < (e = new Date(e.getFullYear(), e.getMonth(), e.getDate())) || (t = W.strToDate(N.maxDate), (t = new Date(t.getFullYear(), t.getMonth(), t.getDate())) < a || (O.val(W.str()), O.trigger(\"change\"), _.trigger(\"close.xdsoft\")));\n }), F.find(\".xdsoft_prev,.xdsoft_next\").on(\"touchend mousedown.xdsoft\", function () {\n var a = L(this),\n n = 0,\n r = !1;\n !function e(t) {\n a.hasClass(N.next) ? W.nextMonth() : a.hasClass(N.prev) && W.prevMonth(), N.monthChangeSpinner && (r || (n = setTimeout(e, t || 100)));\n }(500), L([N.ownerDocument.body, N.contentWindow]).on(\"touchend mouseup.xdsoft\", function e() {\n clearTimeout(n), r = !0, L([N.ownerDocument.body, N.contentWindow]).off(\"touchend mouseup.xdsoft\", e);\n });\n }), o.find(\".xdsoft_prev,.xdsoft_next\").on(\"touchend mousedown.xdsoft\", function () {\n var o = L(this),\n i = 0,\n s = !1,\n d = 110;\n !function e(t) {\n var a = u[0].clientHeight,\n n = P[0].offsetHeight,\n r = Math.abs(parseInt(P.css(\"marginTop\"), 10));\n o.hasClass(N.next) && n - a - N.timeHeightInTimePicker >= r ? P.css(\"marginTop\", \"-\" + (r + N.timeHeightInTimePicker) + \"px\") : o.hasClass(N.prev) && 0 <= r - N.timeHeightInTimePicker && P.css(\"marginTop\", \"-\" + (r - N.timeHeightInTimePicker) + \"px\"), u.trigger(\"scroll_element.xdsoft_scroller\", [Math.abs(parseInt(P[0].style.marginTop, 10) / (n - a))]), d = 10 < d ? 10 : d - 10, s || (i = setTimeout(e, t || d));\n }(500), L([N.ownerDocument.body, N.contentWindow]).on(\"touchend mouseup.xdsoft\", function e() {\n clearTimeout(i), s = !0, L([N.ownerDocument.body, N.contentWindow]).off(\"touchend mouseup.xdsoft\", e);\n });\n }), t = 0, _.on(\"xchange.xdsoft\", function (e) {\n clearTimeout(t), t = setTimeout(function () {\n void 0 !== W.currentTime && null !== W.currentTime || (W.currentTime = W.now());\n for (var e, t, a, n, r, o, i, s, d, u, l = \"\", f = new Date(W.currentTime.getFullYear(), W.currentTime.getMonth(), 1, 12, 0, 0), c = 0, m = W.now(), h = !1, g = !1, p = !1, D = !1, y = [], v = !0, b = \"\"; f.getDay() !== N.dayOfWeekStart;) f.setDate(f.getDate() - 1);\n for (l += \"<table><thead><tr>\", N.weeks && (l += \"<th></th>\"), e = 0; e < 7; e += 1) l += \"<th>\" + N.i18n[R].dayOfWeekShort[(e + N.dayOfWeekStart) % 7] + \"</th>\";\n for (l += \"</tr></thead>\", l += \"<tbody>\", !1 !== N.maxDate && (h = W.strToDate(N.maxDate), h = new Date(h.getFullYear(), h.getMonth(), h.getDate(), 23, 59, 59, 999)), !1 !== N.minDate && (g = W.strToDate(N.minDate), g = new Date(g.getFullYear(), g.getMonth(), g.getDate())), !1 !== N.minDateTime && (p = W.strToDate(N.minDateTime), p = new Date(p.getFullYear(), p.getMonth(), p.getDate(), p.getHours(), p.getMinutes(), p.getSeconds())), !1 !== N.maxDateTime && (D = W.strToDate(N.maxDateTime), D = new Date(D.getFullYear(), D.getMonth(), D.getDate(), D.getHours(), D.getMinutes(), D.getSeconds())), !1 !== D && (u = 31 * (12 * D.getFullYear() + D.getMonth()) + D.getDate()); c < W.currentTime.countDaysInMonth() || f.getDay() !== N.dayOfWeekStart || W.currentTime.getMonth() === f.getMonth();) {\n y = [], c += 1, a = f.getDay(), n = f.getDate(), r = f.getFullYear(), M = f.getMonth(), o = W.getWeekOfYear(f), d = \"\", y.push(\"xdsoft_date\"), i = N.beforeShowDay && L.isFunction(N.beforeShowDay.call) ? N.beforeShowDay.call(_, f) : null, N.allowDateRe && \"[object RegExp]\" === Object.prototype.toString.call(N.allowDateRe) && (N.allowDateRe.test(E.formatDate(f, N.formatDate)) || y.push(\"xdsoft_disabled\")), N.allowDates && 0 < N.allowDates.length && -1 === N.allowDates.indexOf(E.formatDate(f, N.formatDate)) && y.push(\"xdsoft_disabled\");\n var k = 31 * (12 * f.getFullYear() + f.getMonth()) + f.getDate();\n (!1 !== h && h < f || !1 !== p && f < p || !1 !== g && f < g || !1 !== D && u < k || i && !1 === i[0]) && y.push(\"xdsoft_disabled\"), -1 !== N.disabledDates.indexOf(E.formatDate(f, N.formatDate)) && y.push(\"xdsoft_disabled\"), -1 !== N.disabledWeekDays.indexOf(a) && y.push(\"xdsoft_disabled\"), O.is(\"[disabled]\") && y.push(\"xdsoft_disabled\"), i && \"\" !== i[1] && y.push(i[1]), W.currentTime.getMonth() !== M && y.push(\"xdsoft_other_month\"), (N.defaultSelect || _.data(\"changed\")) && E.formatDate(W.currentTime, N.formatDate) === E.formatDate(f, N.formatDate) && y.push(\"xdsoft_current\"), E.formatDate(m, N.formatDate) === E.formatDate(f, N.formatDate) && y.push(\"xdsoft_today\"), 0 !== f.getDay() && 6 !== f.getDay() && -1 === N.weekends.indexOf(E.formatDate(f, N.formatDate)) || y.push(\"xdsoft_weekend\"), void 0 !== N.highlightedDates[E.formatDate(f, N.formatDate)] && (t = N.highlightedDates[E.formatDate(f, N.formatDate)], y.push(void 0 === t.style ? \"xdsoft_highlighted_default\" : t.style), d = void 0 === t.desc ? \"\" : t.desc), N.beforeShowDay && L.isFunction(N.beforeShowDay) && y.push(N.beforeShowDay(f)), v && (l += \"<tr>\", v = !1, N.weeks && (l += \"<th>\" + o + \"</th>\")), l += '<td data-date=\"' + n + '\" data-month=\"' + M + '\" data-year=\"' + r + '\" class=\"xdsoft_date xdsoft_day_of_week' + f.getDay() + \" \" + y.join(\" \") + '\" title=\"' + d + '\"><div>' + n + \"</div></td>\", f.getDay() === N.dayOfWeekStartPrev && (l += \"</tr>\", v = !0), f.setDate(n + 1);\n }\n l += \"</tbody></table>\", C.html(l), F.find(\".xdsoft_label span\").eq(0).text(N.i18n[R].months[W.currentTime.getMonth()]), F.find(\".xdsoft_label span\").eq(1).text(W.currentTime.getFullYear() + N.yearOffset), M = b = \"\";\n var x = 0;\n if (!1 !== N.minTime) {\n var T = W.strtotime(N.minTime);\n x = 60 * T.getHours() + T.getMinutes();\n }\n var S = 1440;\n if (!1 !== N.maxTime) {\n T = W.strtotime(N.maxTime);\n S = 60 * T.getHours() + T.getMinutes();\n }\n if (!1 !== N.minDateTime) {\n T = W.strToDateTime(N.minDateTime);\n if (E.formatDate(W.currentTime, N.formatDate) === E.formatDate(T, N.formatDate)) {\n var M = 60 * T.getHours() + T.getMinutes();\n x < M && (x = M);\n }\n }\n if (!1 !== N.maxDateTime) {\n T = W.strToDateTime(N.maxDateTime);\n if (E.formatDate(W.currentTime, N.formatDate) === E.formatDate(T, N.formatDate)) (M = 60 * T.getHours() + T.getMinutes()) < S && (S = M);\n }\n if (s = function (e, t) {\n var a,\n n = W.now(),\n r = N.allowTimes && L.isArray(N.allowTimes) && N.allowTimes.length;\n n.setHours(e), e = parseInt(n.getHours(), 10), n.setMinutes(t), t = parseInt(n.getMinutes(), 10), y = [];\n var o = 60 * e + t;\n (O.is(\"[disabled]\") || S <= o || o < x) && y.push(\"xdsoft_disabled\"), (a = new Date(W.currentTime)).setHours(parseInt(W.currentTime.getHours(), 10)), r || a.setMinutes(Math[N.roundTime](W.currentTime.getMinutes() / N.step) * N.step), (N.initTime || N.defaultSelect || _.data(\"changed\")) && a.getHours() === parseInt(e, 10) && (!r && 59 < N.step || a.getMinutes() === parseInt(t, 10)) && (N.defaultSelect || _.data(\"changed\") ? y.push(\"xdsoft_current\") : N.initTime && y.push(\"xdsoft_init_time\")), parseInt(m.getHours(), 10) === parseInt(e, 10) && parseInt(m.getMinutes(), 10) === parseInt(t, 10) && y.push(\"xdsoft_today\"), b += '<div class=\"xdsoft_time ' + y.join(\" \") + '\" data-hour=\"' + e + '\" data-minute=\"' + t + '\">' + E.formatDate(n, N.formatTime) + \"</div>\";\n }, N.allowTimes && L.isArray(N.allowTimes) && N.allowTimes.length) for (c = 0; c < N.allowTimes.length; c += 1) s(W.strtotime(N.allowTimes[c]).getHours(), M = W.strtotime(N.allowTimes[c]).getMinutes());else for (e = c = 0; c < (N.hours12 ? 12 : 24); c += 1) for (e = 0; e < 60; e += N.step) {\n var w = 60 * c + e;\n w < x || S <= w || s((c < 10 ? \"0\" : \"\") + c, M = (e < 10 ? \"0\" : \"\") + e);\n }\n for (P.html(b), H = \"\", c = parseInt(N.yearStart, 10); c <= parseInt(N.yearEnd, 10); c += 1) H += '<div class=\"xdsoft_option ' + (W.currentTime.getFullYear() === c ? \"xdsoft_current\" : \"\") + '\" data-value=\"' + c + '\">' + (c + N.yearOffset) + \"</div>\";\n for (A.children().eq(0).html(H), c = parseInt(N.monthStart, 10), H = \"\"; c <= parseInt(N.monthEnd, 10); c += 1) H += '<div class=\"xdsoft_option ' + (W.currentTime.getMonth() === c ? \"xdsoft_current\" : \"\") + '\" data-value=\"' + c + '\">' + N.i18n[R].months[c] + \"</div>\";\n Y.children().eq(0).html(H), L(_).trigger(\"generate.xdsoft\");\n }, 10), e.stopPropagation();\n }).on(\"afterOpen.xdsoft\", function () {\n var e, t, a, n;\n N.timepicker && (P.find(\".xdsoft_current\").length ? e = \".xdsoft_current\" : P.find(\".xdsoft_init_time\").length && (e = \".xdsoft_init_time\"), e ? (t = u[0].clientHeight, (a = P[0].offsetHeight) - t < (n = P.find(e).index() * N.timeHeightInTimePicker + 1) && (n = a - t), u.trigger(\"scroll_element.xdsoft_scroller\", [parseInt(n, 10) / (a - t)])) : u.trigger(\"scroll_element.xdsoft_scroller\", [0]));\n }), n = 0, C.on(\"touchend click.xdsoft\", \"td\", function (e) {\n e.stopPropagation(), n += 1;\n var t = L(this),\n a = W.currentTime;\n if (null == a && (W.currentTime = W.now(), a = W.currentTime), t.hasClass(\"xdsoft_disabled\")) return !1;\n a.setDate(1), a.setFullYear(t.data(\"year\")), a.setMonth(t.data(\"month\")), a.setDate(t.data(\"date\")), _.trigger(\"select.xdsoft\", [a]), O.val(W.str()), N.onSelectDate && L.isFunction(N.onSelectDate) && N.onSelectDate.call(_, W.currentTime, _.data(\"input\"), e), _.data(\"changed\", !0), _.trigger(\"xchange.xdsoft\"), _.trigger(\"changedatetime.xdsoft\"), (1 < n || !0 === N.closeOnDateSelect || !1 === N.closeOnDateSelect && !N.timepicker) && !N.inline && _.trigger(\"close.xdsoft\"), setTimeout(function () {\n n = 0;\n }, 200);\n }), P.on(\"touchstart\", \"div\", function (e) {\n this.touchMoved = !1;\n }).on(\"touchmove\", \"div\", l).on(\"touchend click.xdsoft\", \"div\", function (e) {\n if (!this.touchMoved) {\n e.stopPropagation();\n var t = L(this),\n a = W.currentTime;\n if (null == a && (W.currentTime = W.now(), a = W.currentTime), t.hasClass(\"xdsoft_disabled\")) return !1;\n a.setHours(t.data(\"hour\")), a.setMinutes(t.data(\"minute\")), _.trigger(\"select.xdsoft\", [a]), _.data(\"input\").val(W.str()), N.onSelectTime && L.isFunction(N.onSelectTime) && N.onSelectTime.call(_, W.currentTime, _.data(\"input\"), e), _.data(\"changed\", !0), _.trigger(\"xchange.xdsoft\"), _.trigger(\"changedatetime.xdsoft\"), !0 !== N.inline && !0 === N.closeOnTimeSelect && _.trigger(\"close.xdsoft\");\n }\n }), g.on(\"mousewheel.xdsoft\", function (e) {\n return !N.scrollMonth || (e.deltaY < 0 ? W.nextMonth() : W.prevMonth(), !1);\n }), O.on(\"mousewheel.xdsoft\", function (e) {\n return !N.scrollInput || (!N.datepicker && N.timepicker ? (0 <= (a = P.find(\".xdsoft_current\").length ? P.find(\".xdsoft_current\").eq(0).index() : 0) + e.deltaY && a + e.deltaY < P.children().length && (a += e.deltaY), P.children().eq(a).length && P.children().eq(a).trigger(\"mousedown\"), !1) : N.datepicker && !N.timepicker ? (g.trigger(e, [e.deltaY, e.deltaX, e.deltaY]), O.val && O.val(W.str()), _.trigger(\"changedatetime.xdsoft\"), !1) : void 0);\n }), _.on(\"changedatetime.xdsoft\", function (e) {\n if (N.onChangeDateTime && L.isFunction(N.onChangeDateTime)) {\n var t = _.data(\"input\");\n N.onChangeDateTime.call(_, W.currentTime, t, e), delete N.value, t.trigger(\"change\");\n }\n }).on(\"generate.xdsoft\", function () {\n N.onGenerate && L.isFunction(N.onGenerate) && N.onGenerate.call(_, W.currentTime, _.data(\"input\")), s && (_.trigger(\"afterOpen.xdsoft\"), s = !1);\n }).on(\"click.xdsoft\", function (e) {\n e.stopPropagation();\n }), a = 0, h = function (e, t) {\n do {\n if (!(e = e.parentNode) || !1 === t(e)) break;\n } while (\"HTML\" !== e.nodeName);\n }, r = function () {\n var e, t, a, n, r, o, i, s, d, u, l, f, c;\n if (e = (s = _.data(\"input\")).offset(), t = s[0], u = \"top\", a = e.top + t.offsetHeight - 1, n = e.left, r = \"absolute\", d = L(N.contentWindow).width(), f = L(N.contentWindow).height(), c = L(N.contentWindow).scrollTop(), N.ownerDocument.documentElement.clientWidth - e.left < g.parent().outerWidth(!0)) {\n var m = g.parent().outerWidth(!0) - t.offsetWidth;\n n -= m;\n }\n \"rtl\" === s.parent().css(\"direction\") && (n -= _.outerWidth() - s.outerWidth()), N.fixed ? (a -= c, n -= L(N.contentWindow).scrollLeft(), r = \"fixed\") : (i = !1, h(t, function (e) {\n return null !== e && (\"fixed\" === N.contentWindow.getComputedStyle(e).getPropertyValue(\"position\") ? !(i = !0) : void 0);\n }), i && !N.insideParent ? (r = \"fixed\", a + _.outerHeight() > f + c ? (u = \"bottom\", a = f + c - e.top) : a -= c) : a + _[0].offsetHeight > f + c && (a = e.top - _[0].offsetHeight + 1), a < 0 && (a = 0), n + t.offsetWidth > d && (n = d - t.offsetWidth)), o = _[0], h(o, function (e) {\n if (\"relative\" === N.contentWindow.getComputedStyle(e).getPropertyValue(\"position\") && d >= e.offsetWidth) return n -= (d - e.offsetWidth) / 2, !1;\n }), l = {\n position: r,\n left: N.insideParent ? t.offsetLeft : n,\n top: \"\",\n bottom: \"\"\n }, N.insideParent ? l[u] = t.offsetTop + t.offsetHeight : l[u] = a, _.css(l);\n }, _.on(\"open.xdsoft\", function (e) {\n var t = !0;\n N.onShow && L.isFunction(N.onShow) && (t = N.onShow.call(_, W.currentTime, _.data(\"input\"), e)), !1 !== t && (_.show(), r(), L(N.contentWindow).off(\"resize.xdsoft\", r).on(\"resize.xdsoft\", r), N.closeOnWithoutClick && L([N.ownerDocument.body, N.contentWindow]).on(\"touchstart mousedown.xdsoft\", function e() {\n _.trigger(\"close.xdsoft\"), L([N.ownerDocument.body, N.contentWindow]).off(\"touchstart mousedown.xdsoft\", e);\n }));\n }).on(\"close.xdsoft\", function (e) {\n var t = !0;\n F.find(\".xdsoft_month,.xdsoft_year\").find(\".xdsoft_select\").hide(), N.onClose && L.isFunction(N.onClose) && (t = N.onClose.call(_, W.currentTime, _.data(\"input\"), e)), !1 === t || N.opened || N.inline || _.hide(), e.stopPropagation();\n }).on(\"toggle.xdsoft\", function () {\n _.is(\":visible\") ? _.trigger(\"close.xdsoft\") : _.trigger(\"open.xdsoft\");\n }).data(\"input\", O), d = 0, _.data(\"xdsoft_datetime\", W), _.setOptions(N), W.setCurrentTime(f()), O.data(\"xdsoft_datetimepicker\", _).on(\"open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart\", function () {\n O.is(\":disabled\") || O.data(\"xdsoft_datetimepicker\").is(\":visible\") && N.closeOnInputClick || N.openOnFocus && (clearTimeout(d), d = setTimeout(function () {\n O.is(\":disabled\") || (s = !0, W.setCurrentTime(f(), !0), N.mask && c(N), _.trigger(\"open.xdsoft\"));\n }, 100));\n }).on(\"keydown.xdsoft\", function (e) {\n var t,\n a = e.which;\n return -1 !== [D].indexOf(a) && N.enterLikeTab ? (t = L(\"input:visible,textarea:visible,button:visible,a:visible\"), _.trigger(\"close.xdsoft\"), t.eq(t.index(this) + 1).focus(), !1) : -1 !== [T].indexOf(a) ? (_.trigger(\"close.xdsoft\"), !0) : void 0;\n }).on(\"blur.xdsoft\", function () {\n _.trigger(\"close.xdsoft\");\n });\n }, r = function (e) {\n var t = e.data(\"xdsoft_datetimepicker\");\n t && (t.data(\"xdsoft_datetime\", null), t.remove(), e.data(\"xdsoft_datetimepicker\", null).off(\".xdsoft\"), L(N.contentWindow).off(\"resize.xdsoft\"), L([N.contentWindow, N.ownerDocument.body]).off(\"mousedown.xdsoft touchstart\"), e.unmousewheel && e.unmousewheel());\n }, L(N.ownerDocument).off(\"keydown.xdsoftctrl keyup.xdsoftctrl\").off(\"keydown.xdsoftcmd keyup.xdsoftcmd\").on(\"keydown.xdsoftctrl\", function (e) {\n e.keyCode === p && (I = !0);\n }).on(\"keyup.xdsoftctrl\", function (e) {\n e.keyCode === p && (I = !1);\n }).on(\"keydown.xdsoftcmd\", function (e) {\n 91 === e.keyCode && !0;\n }).on(\"keyup.xdsoftcmd\", function (e) {\n 91 === e.keyCode && !1;\n }), this.each(function () {\n var t,\n e = L(this).data(\"xdsoft_datetimepicker\");\n if (e) {\n if (\"string\" === L.type(H)) switch (H) {\n case \"show\":\n L(this).select().focus(), e.trigger(\"open.xdsoft\");\n break;\n case \"hide\":\n e.trigger(\"close.xdsoft\");\n break;\n case \"toggle\":\n e.trigger(\"toggle.xdsoft\");\n break;\n case \"destroy\":\n r(L(this));\n break;\n case \"reset\":\n this.value = this.defaultValue, this.value && e.data(\"xdsoft_datetime\").isValidDate(E.parseDate(this.value, N.format)) || e.data(\"changed\", !1), e.data(\"xdsoft_datetime\").setCurrentTime(this.value);\n break;\n case \"validate\":\n e.data(\"input\").trigger(\"blur.xdsoft\");\n break;\n default:\n e[H] && L.isFunction(e[H]) && (o = e[H](a));\n } else e.setOptions(H);\n return 0;\n }\n \"string\" !== L.type(H) && (!N.lazyInit || N.open || N.inline ? n(L(this)) : (t = L(this)).on(\"open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart\", function e() {\n t.is(\":disabled\") || t.data(\"xdsoft_datetimepicker\") || (clearTimeout(i), i = setTimeout(function () {\n t.data(\"xdsoft_datetimepicker\") || n(t), t.off(\"open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart\", e).trigger(\"open.xdsoft\");\n }, 100));\n }));\n }), o;\n }, L.fn.datetimepicker.defaults = s;\n};\n!function (e) {\n \"function\" == typeof define && define.amd ? define([\"jquery\", \"jquery-mousewheel\"], e) : \"object\" == typeof exports ? module.exports = e(require(\"jquery\")) : e(jQuery);\n}(datetimepickerFactory), function (e) {\n \"function\" == typeof define && define.amd ? define([\"jquery\"], e) : \"object\" == typeof exports ? module.exports = e : e(jQuery);\n}(function (c) {\n var m,\n h,\n e = [\"wheel\", \"mousewheel\", \"DOMMouseScroll\", \"MozMousePixelScroll\"],\n t = \"onwheel\" in document || 9 <= document.documentMode ? [\"wheel\"] : [\"mousewheel\", \"DomMouseScroll\", \"MozMousePixelScroll\"],\n g = Array.prototype.slice;\n if (c.event.fixHooks) for (var a = e.length; a;) c.event.fixHooks[e[--a]] = c.event.mouseHooks;\n var p = c.event.special.mousewheel = {\n version: \"3.1.12\",\n setup: function () {\n if (this.addEventListener) for (var e = t.length; e;) this.addEventListener(t[--e], n, !1);else this.onmousewheel = n;\n c.data(this, \"mousewheel-line-height\", p.getLineHeight(this)), c.data(this, \"mousewheel-page-height\", p.getPageHeight(this));\n },\n teardown: function () {\n if (this.removeEventListener) for (var e = t.length; e;) this.removeEventListener(t[--e], n, !1);else this.onmousewheel = null;\n c.removeData(this, \"mousewheel-line-height\"), c.removeData(this, \"mousewheel-page-height\");\n },\n getLineHeight: function (e) {\n var t = c(e),\n a = t[\"offsetParent\" in c.fn ? \"offsetParent\" : \"parent\"]();\n return a.length || (a = c(\"body\")), parseInt(a.css(\"fontSize\"), 10) || parseInt(t.css(\"fontSize\"), 10) || 16;\n },\n getPageHeight: function (e) {\n return c(e).height();\n },\n settings: {\n adjustOldDeltas: !0,\n normalizeOffset: !0\n }\n };\n function n(e) {\n var t,\n a = e || window.event,\n n = g.call(arguments, 1),\n r = 0,\n o = 0,\n i = 0,\n s = 0,\n d = 0;\n if ((e = c.event.fix(a)).type = \"mousewheel\", \"detail\" in a && (i = -1 * a.detail), \"wheelDelta\" in a && (i = a.wheelDelta), \"wheelDeltaY\" in a && (i = a.wheelDeltaY), \"wheelDeltaX\" in a && (o = -1 * a.wheelDeltaX), \"axis\" in a && a.axis === a.HORIZONTAL_AXIS && (o = -1 * i, i = 0), r = 0 === i ? o : i, \"deltaY\" in a && (r = i = -1 * a.deltaY), \"deltaX\" in a && (o = a.deltaX, 0 === i && (r = -1 * o)), 0 !== i || 0 !== o) {\n if (1 === a.deltaMode) {\n var u = c.data(this, \"mousewheel-line-height\");\n r *= u, i *= u, o *= u;\n } else if (2 === a.deltaMode) {\n var l = c.data(this, \"mousewheel-page-height\");\n r *= l, i *= l, o *= l;\n }\n if (t = Math.max(Math.abs(i), Math.abs(o)), (!h || t < h) && y(a, h = t) && (h /= 40), y(a, t) && (r /= 40, o /= 40, i /= 40), r = Math[1 <= r ? \"floor\" : \"ceil\"](r / h), o = Math[1 <= o ? \"floor\" : \"ceil\"](o / h), i = Math[1 <= i ? \"floor\" : \"ceil\"](i / h), p.settings.normalizeOffset && this.getBoundingClientRect) {\n var f = this.getBoundingClientRect();\n s = e.clientX - f.left, d = e.clientY - f.top;\n }\n return e.deltaX = o, e.deltaY = i, e.deltaFactor = h, e.offsetX = s, e.offsetY = d, e.deltaMode = 0, n.unshift(e, r, o, i), m && clearTimeout(m), m = setTimeout(D, 200), (c.event.dispatch || c.event.handle).apply(this, n);\n }\n }\n function D() {\n h = null;\n }\n function y(e, t) {\n return p.settings.adjustOldDeltas && \"mousewheel\" === e.type && t % 120 == 0;\n }\n c.fn.extend({\n mousewheel: function (e) {\n return e ? this.bind(\"mousewheel\", e) : this.trigger(\"mousewheel\");\n },\n unmousewheel: function (e) {\n return this.unbind(\"mousewheel\", e);\n }\n });\n});","/*!\n * jQuery Mousewheel 3.1.13\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n */\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS style for Browserify\n module.exports = factory;\n } else {\n // Browser globals\n factory(jQuery);\n }\n})(function ($) {\n var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],\n toBind = 'onwheel' in document || document.documentMode >= 9 ? ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],\n slice = Array.prototype.slice,\n nullLowestDeltaTimeout,\n lowestDelta;\n if ($.event.fixHooks) {\n for (var i = toFix.length; i;) {\n $.event.fixHooks[toFix[--i]] = $.event.mouseHooks;\n }\n }\n var special = $.event.special.mousewheel = {\n version: '3.1.12',\n setup: function () {\n if (this.addEventListener) {\n for (var i = toBind.length; i;) {\n this.addEventListener(toBind[--i], handler, false);\n }\n } else {\n this.onmousewheel = handler;\n }\n // Store the line height and page height for this particular element\n $.data(this, 'mousewheel-line-height', special.getLineHeight(this));\n $.data(this, 'mousewheel-page-height', special.getPageHeight(this));\n },\n teardown: function () {\n if (this.removeEventListener) {\n for (var i = toBind.length; i;) {\n this.removeEventListener(toBind[--i], handler, false);\n }\n } else {\n this.onmousewheel = null;\n }\n // Clean up the data we added to the element\n $.removeData(this, 'mousewheel-line-height');\n $.removeData(this, 'mousewheel-page-height');\n },\n getLineHeight: function (elem) {\n var $elem = $(elem),\n $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();\n if (!$parent.length) {\n $parent = $('body');\n }\n return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;\n },\n getPageHeight: function (elem) {\n return $(elem).height();\n },\n settings: {\n adjustOldDeltas: true,\n // see shouldAdjustOldDeltas() below\n normalizeOffset: true // calls getBoundingClientRect for each event\n }\n };\n $.fn.extend({\n mousewheel: function (fn) {\n return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');\n },\n unmousewheel: function (fn) {\n return this.unbind('mousewheel', fn);\n }\n });\n function handler(event) {\n var orgEvent = event || window.event,\n args = slice.call(arguments, 1),\n delta = 0,\n deltaX = 0,\n deltaY = 0,\n absDelta = 0,\n offsetX = 0,\n offsetY = 0;\n event = $.event.fix(orgEvent);\n event.type = 'mousewheel';\n\n // Old school scrollwheel delta\n if ('detail' in orgEvent) {\n deltaY = orgEvent.detail * -1;\n }\n if ('wheelDelta' in orgEvent) {\n deltaY = orgEvent.wheelDelta;\n }\n if ('wheelDeltaY' in orgEvent) {\n deltaY = orgEvent.wheelDeltaY;\n }\n if ('wheelDeltaX' in orgEvent) {\n deltaX = orgEvent.wheelDeltaX * -1;\n }\n\n // Firefox < 17 horizontal scrolling related to DOMMouseScroll event\n if ('axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS) {\n deltaX = deltaY * -1;\n deltaY = 0;\n }\n\n // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy\n delta = deltaY === 0 ? deltaX : deltaY;\n\n // New school wheel delta (wheel event)\n if ('deltaY' in orgEvent) {\n deltaY = orgEvent.deltaY * -1;\n delta = deltaY;\n }\n if ('deltaX' in orgEvent) {\n deltaX = orgEvent.deltaX;\n if (deltaY === 0) {\n delta = deltaX * -1;\n }\n }\n\n // No change actually happened, no reason to go any further\n if (deltaY === 0 && deltaX === 0) {\n return;\n }\n\n // Need to convert lines and pages to pixels if we aren't already in pixels\n // There are three delta modes:\n // * deltaMode 0 is by pixels, nothing to do\n // * deltaMode 1 is by lines\n // * deltaMode 2 is by pages\n if (orgEvent.deltaMode === 1) {\n var lineHeight = $.data(this, 'mousewheel-line-height');\n delta *= lineHeight;\n deltaY *= lineHeight;\n deltaX *= lineHeight;\n } else if (orgEvent.deltaMode === 2) {\n var pageHeight = $.data(this, 'mousewheel-page-height');\n delta *= pageHeight;\n deltaY *= pageHeight;\n deltaX *= pageHeight;\n }\n\n // Store lowest absolute delta to normalize the delta values\n absDelta = Math.max(Math.abs(deltaY), Math.abs(deltaX));\n if (!lowestDelta || absDelta < lowestDelta) {\n lowestDelta = absDelta;\n\n // Adjust older deltas if necessary\n if (shouldAdjustOldDeltas(orgEvent, absDelta)) {\n lowestDelta /= 40;\n }\n }\n\n // Adjust older deltas if necessary\n if (shouldAdjustOldDeltas(orgEvent, absDelta)) {\n // Divide all the things by 40!\n delta /= 40;\n deltaX /= 40;\n deltaY /= 40;\n }\n\n // Get a whole, normalized value for the deltas\n delta = Math[delta >= 1 ? 'floor' : 'ceil'](delta / lowestDelta);\n deltaX = Math[deltaX >= 1 ? 'floor' : 'ceil'](deltaX / lowestDelta);\n deltaY = Math[deltaY >= 1 ? 'floor' : 'ceil'](deltaY / lowestDelta);\n\n // Normalise offsetX and offsetY properties\n if (special.settings.normalizeOffset && this.getBoundingClientRect) {\n var boundingRect = this.getBoundingClientRect();\n offsetX = event.clientX - boundingRect.left;\n offsetY = event.clientY - boundingRect.top;\n }\n\n // Add information to the event object\n event.deltaX = deltaX;\n event.deltaY = deltaY;\n event.deltaFactor = lowestDelta;\n event.offsetX = offsetX;\n event.offsetY = offsetY;\n // Go ahead and set deltaMode to 0 since we converted to pixels\n // Although this is a little odd since we overwrite the deltaX/Y\n // properties with normalized deltas.\n event.deltaMode = 0;\n\n // Add event and delta to the front of the arguments\n args.unshift(event, delta, deltaX, deltaY);\n\n // Clearout lowestDelta after sometime to better\n // handle multiple device types that give different\n // a different lowestDelta\n // Ex: trackpad = 3 and mouse wheel = 120\n if (nullLowestDeltaTimeout) {\n clearTimeout(nullLowestDeltaTimeout);\n }\n nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);\n return ($.event.dispatch || $.event.handle).apply(this, args);\n }\n function nullLowestDelta() {\n lowestDelta = null;\n }\n function shouldAdjustOldDeltas(orgEvent, absDelta) {\n // If this is an older event and the delta is divisable by 120,\n // then we are assuming that the browser is treating this as an\n // older mouse wheel event and that we should divide the deltas\n // by 40 to try and get a more usable deltaFactor.\n // Side note, this actually impacts the reported scroll distance\n // in older browsers and can cause scrolling to be slower than native.\n // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.\n return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;\n }\n});","/*\n * jQuery MiniColors: A tiny color picker built on jQuery\n *\n * Copyright: Cory LaViska for A Beautiful Site, LLC: http://www.abeautifulsite.net/\n *\n * Contribute: https://github.com/claviska/jquery-minicolors\n *\n * @license: http://opensource.org/licenses/MIT\n *\n */\n(function (factory) {\n /* jshint ignore:start */\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS\n module.exports = factory(require('jquery'));\n } else {\n // Browser globals\n factory(jQuery);\n }\n /* jshint ignore:end */\n})(function ($) {\n // Defaults\n $.minicolors = {\n defaults: {\n animationSpeed: 50,\n animationEasing: 'swing',\n change: null,\n changeDelay: 0,\n control: 'hue',\n dataUris: true,\n defaultValue: '',\n hide: null,\n hideSpeed: 100,\n inline: false,\n letterCase: 'lowercase',\n opacity: false,\n position: 'bottom left',\n show: null,\n showSpeed: 100,\n theme: 'default'\n }\n };\n\n // Public methods\n $.extend($.fn, {\n minicolors: function (method, data) {\n switch (method) {\n // Destroy the control\n case 'destroy':\n $(this).each(function () {\n destroy($(this));\n });\n return $(this);\n\n // Hide the color picker\n case 'hide':\n hide();\n return $(this);\n\n // Get/set opacity\n case 'opacity':\n // Getter\n if (data === undefined) {\n // Getter\n return $(this).attr('data-opacity');\n } else {\n // Setter\n $(this).each(function () {\n updateFromInput($(this).attr('data-opacity', data));\n });\n }\n return $(this);\n\n // Get an RGB(A) object based on the current color/opacity\n case 'rgbObject':\n return rgbObject($(this), method === 'rgbaObject');\n\n // Get an RGB(A) string based on the current color/opacity\n case 'rgbString':\n case 'rgbaString':\n return rgbString($(this), method === 'rgbaString');\n\n // Get/set settings on the fly\n case 'settings':\n if (data === undefined) {\n return $(this).data('minicolors-settings');\n } else {\n // Setter\n $(this).each(function () {\n var settings = $(this).data('minicolors-settings') || {};\n destroy($(this));\n $(this).minicolors($.extend(true, settings, data));\n });\n }\n return $(this);\n\n // Show the color picker\n case 'show':\n show($(this).eq(0));\n return $(this);\n\n // Get/set the hex color value\n case 'value':\n if (data === undefined) {\n // Getter\n return $(this).val();\n } else {\n // Setter\n $(this).each(function () {\n updateFromInput($(this).val(data));\n });\n }\n return $(this);\n\n // Initializes the control\n default:\n if (method !== 'create') data = method;\n $(this).each(function () {\n init($(this), data);\n });\n return $(this);\n }\n }\n });\n\n // Initialize input elements\n function init(input, settings) {\n var minicolors = $('<div class=\"minicolors\" />'),\n defaults = $.minicolors.defaults;\n\n // Do nothing if already initialized\n if (input.data('minicolors-initialized')) return;\n\n // Handle settings\n settings = $.extend(true, {}, defaults, settings);\n\n // The wrapper\n minicolors.addClass('minicolors-theme-' + settings.theme).toggleClass('minicolors-with-opacity', settings.opacity).toggleClass('minicolors-no-data-uris', settings.dataUris !== true);\n\n // Custom positioning\n if (settings.position !== undefined) {\n $.each(settings.position.split(' '), function () {\n minicolors.addClass('minicolors-position-' + this);\n });\n }\n\n // The input\n input.addClass('minicolors-input').data('minicolors-initialized', false).data('minicolors-settings', settings).prop('size', 7).wrap(minicolors).after('<div class=\"minicolors-panel minicolors-slider-' + settings.control + '\">' + '<div class=\"minicolors-slider minicolors-sprite\">' + '<div class=\"minicolors-picker\"></div>' + '</div>' + '<div class=\"minicolors-opacity-slider minicolors-sprite\">' + '<div class=\"minicolors-picker\"></div>' + '</div>' + '<div class=\"minicolors-grid minicolors-sprite\">' + '<div class=\"minicolors-grid-inner\"></div>' + '<div class=\"minicolors-picker\"><div></div></div>' + '</div>' + '</div>');\n\n // The swatch\n if (!settings.inline) {\n input.after('<span class=\"minicolors-swatch minicolors-sprite\"><span class=\"minicolors-swatch-color\"></span></span>');\n input.next('.minicolors-swatch').on('click', function (event) {\n event.preventDefault();\n input.focus();\n });\n }\n\n // Prevent text selection in IE\n input.parent().find('.minicolors-panel').on('selectstart', function () {\n return false;\n }).end();\n\n // Inline controls\n if (settings.inline) input.parent().addClass('minicolors-inline');\n updateFromInput(input, false);\n input.data('minicolors-initialized', true);\n }\n\n // Returns the input back to its original state\n function destroy(input) {\n var minicolors = input.parent();\n\n // Revert the input element\n input.removeData('minicolors-initialized').removeData('minicolors-settings').removeProp('size').removeClass('minicolors-input');\n\n // Remove the wrap and destroy whatever remains\n minicolors.before(input).remove();\n }\n\n // Shows the specified dropdown panel\n function show(input) {\n var minicolors = input.parent(),\n panel = minicolors.find('.minicolors-panel'),\n settings = input.data('minicolors-settings');\n\n // Do nothing if uninitialized, disabled, inline, or already open\n if (!input.data('minicolors-initialized') || input.prop('disabled') || minicolors.hasClass('minicolors-inline') || minicolors.hasClass('minicolors-focus')) return;\n hide();\n minicolors.addClass('minicolors-focus');\n panel.stop(true, true).fadeIn(settings.showSpeed, function () {\n if (settings.show) settings.show.call(input.get(0));\n });\n }\n\n // Hides all dropdown panels\n function hide() {\n $('.minicolors-focus').each(function () {\n var minicolors = $(this),\n input = minicolors.find('.minicolors-input'),\n panel = minicolors.find('.minicolors-panel'),\n settings = input.data('minicolors-settings');\n panel.fadeOut(settings.hideSpeed, function () {\n if (settings.hide) settings.hide.call(input.get(0));\n minicolors.removeClass('minicolors-focus');\n });\n });\n }\n\n // Moves the selected picker\n function move(target, event, animate) {\n var input = target.parents('.minicolors').find('.minicolors-input'),\n settings = input.data('minicolors-settings'),\n picker = target.find('[class$=-picker]'),\n offsetX = target.offset().left,\n offsetY = target.offset().top,\n x = Math.round(event.pageX - offsetX),\n y = Math.round(event.pageY - offsetY),\n duration = animate ? settings.animationSpeed : 0,\n wx,\n wy,\n r,\n phi;\n\n // Touch support\n if (event.originalEvent.changedTouches) {\n x = event.originalEvent.changedTouches[0].pageX - offsetX;\n y = event.originalEvent.changedTouches[0].pageY - offsetY;\n }\n\n // Constrain picker to its container\n if (x < 0) x = 0;\n if (y < 0) y = 0;\n if (x > target.width()) x = target.width();\n if (y > target.height()) y = target.height();\n\n // Constrain color wheel values to the wheel\n if (target.parent().is('.minicolors-slider-wheel') && picker.parent().is('.minicolors-grid')) {\n wx = 75 - x;\n wy = 75 - y;\n r = Math.sqrt(wx * wx + wy * wy);\n phi = Math.atan2(wy, wx);\n if (phi < 0) phi += Math.PI * 2;\n if (r > 75) {\n r = 75;\n x = 75 - 75 * Math.cos(phi);\n y = 75 - 75 * Math.sin(phi);\n }\n x = Math.round(x);\n y = Math.round(y);\n }\n\n // Move the picker\n if (target.is('.minicolors-grid')) {\n picker.stop(true).animate({\n top: y + 'px',\n left: x + 'px'\n }, duration, settings.animationEasing, function () {\n updateFromControl(input, target);\n });\n } else {\n picker.stop(true).animate({\n top: y + 'px'\n }, duration, settings.animationEasing, function () {\n updateFromControl(input, target);\n });\n }\n }\n\n // Sets the input based on the color picker values\n function updateFromControl(input, target) {\n function getCoords(picker, container) {\n var left, top;\n if (!picker.length || !container) return null;\n left = picker.offset().left;\n top = picker.offset().top;\n return {\n x: left - container.offset().left + picker.outerWidth() / 2,\n y: top - container.offset().top + picker.outerHeight() / 2\n };\n }\n var hue,\n saturation,\n brightness,\n x,\n y,\n r,\n phi,\n hex = input.val(),\n opacity = input.attr('data-opacity'),\n // Helpful references\n minicolors = input.parent(),\n settings = input.data('minicolors-settings'),\n swatch = minicolors.find('.minicolors-swatch'),\n // Panel objects\n grid = minicolors.find('.minicolors-grid'),\n slider = minicolors.find('.minicolors-slider'),\n opacitySlider = minicolors.find('.minicolors-opacity-slider'),\n // Picker objects\n gridPicker = grid.find('[class$=-picker]'),\n sliderPicker = slider.find('[class$=-picker]'),\n opacityPicker = opacitySlider.find('[class$=-picker]'),\n // Picker positions\n gridPos = getCoords(gridPicker, grid),\n sliderPos = getCoords(sliderPicker, slider),\n opacityPos = getCoords(opacityPicker, opacitySlider);\n\n // Handle colors\n if (target.is('.minicolors-grid, .minicolors-slider')) {\n // Determine HSB values\n switch (settings.control) {\n case 'wheel':\n // Calculate hue, saturation, and brightness\n x = grid.width() / 2 - gridPos.x;\n y = grid.height() / 2 - gridPos.y;\n r = Math.sqrt(x * x + y * y);\n phi = Math.atan2(y, x);\n if (phi < 0) phi += Math.PI * 2;\n if (r > 75) {\n r = 75;\n gridPos.x = 69 - 75 * Math.cos(phi);\n gridPos.y = 69 - 75 * Math.sin(phi);\n }\n saturation = keepWithin(r / 0.75, 0, 100);\n hue = keepWithin(phi * 180 / Math.PI, 0, 360);\n brightness = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);\n hex = hsb2hex({\n h: hue,\n s: saturation,\n b: brightness\n });\n\n // Update UI\n slider.css('backgroundColor', hsb2hex({\n h: hue,\n s: saturation,\n b: 100\n }));\n break;\n case 'saturation':\n // Calculate hue, saturation, and brightness\n hue = keepWithin(parseInt(gridPos.x * (360 / grid.width()), 10), 0, 360);\n saturation = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);\n brightness = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);\n hex = hsb2hex({\n h: hue,\n s: saturation,\n b: brightness\n });\n\n // Update UI\n slider.css('backgroundColor', hsb2hex({\n h: hue,\n s: 100,\n b: brightness\n }));\n minicolors.find('.minicolors-grid-inner').css('opacity', saturation / 100);\n break;\n case 'brightness':\n // Calculate hue, saturation, and brightness\n hue = keepWithin(parseInt(gridPos.x * (360 / grid.width()), 10), 0, 360);\n saturation = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);\n brightness = keepWithin(100 - Math.floor(sliderPos.y * (100 / slider.height())), 0, 100);\n hex = hsb2hex({\n h: hue,\n s: saturation,\n b: brightness\n });\n\n // Update UI\n slider.css('backgroundColor', hsb2hex({\n h: hue,\n s: saturation,\n b: 100\n }));\n minicolors.find('.minicolors-grid-inner').css('opacity', 1 - brightness / 100);\n break;\n default:\n // Calculate hue, saturation, and brightness\n hue = keepWithin(360 - parseInt(sliderPos.y * (360 / slider.height()), 10), 0, 360);\n saturation = keepWithin(Math.floor(gridPos.x * (100 / grid.width())), 0, 100);\n brightness = keepWithin(100 - Math.floor(gridPos.y * (100 / grid.height())), 0, 100);\n hex = hsb2hex({\n h: hue,\n s: saturation,\n b: brightness\n });\n\n // Update UI\n grid.css('backgroundColor', hsb2hex({\n h: hue,\n s: 100,\n b: 100\n }));\n break;\n }\n\n // Adjust case\n input.val(convertCase(hex, settings.letterCase));\n }\n\n // Handle opacity\n if (target.is('.minicolors-opacity-slider')) {\n if (settings.opacity) {\n opacity = parseFloat(1 - opacityPos.y / opacitySlider.height()).toFixed(2);\n } else {\n opacity = 1;\n }\n if (settings.opacity) input.attr('data-opacity', opacity);\n }\n\n // Set swatch color\n swatch.find('SPAN').css({\n backgroundColor: hex,\n opacity: opacity\n });\n\n // Handle change event\n doChange(input, hex, opacity);\n }\n\n // Sets the color picker values from the input\n function updateFromInput(input, preserveInputValue) {\n var hex,\n hsb,\n opacity,\n x,\n y,\n r,\n phi,\n // Helpful references\n minicolors = input.parent(),\n settings = input.data('minicolors-settings'),\n swatch = minicolors.find('.minicolors-swatch'),\n // Panel objects\n grid = minicolors.find('.minicolors-grid'),\n slider = minicolors.find('.minicolors-slider'),\n opacitySlider = minicolors.find('.minicolors-opacity-slider'),\n // Picker objects\n gridPicker = grid.find('[class$=-picker]'),\n sliderPicker = slider.find('[class$=-picker]'),\n opacityPicker = opacitySlider.find('[class$=-picker]');\n\n // Determine hex/HSB values\n hex = convertCase(parseHex(input.val(), true), settings.letterCase);\n if (!hex) {\n hex = convertCase(parseHex(settings.defaultValue, true), settings.letterCase);\n }\n hsb = hex2hsb(hex);\n\n // Update input value\n if (!preserveInputValue) input.val(hex);\n\n // Determine opacity value\n if (settings.opacity) {\n // Get from data-opacity attribute and keep within 0-1 range\n opacity = input.attr('data-opacity') === '' ? 1 : keepWithin(parseFloat(input.attr('data-opacity')).toFixed(2), 0, 1);\n if (isNaN(opacity)) opacity = 1;\n input.attr('data-opacity', opacity);\n swatch.find('SPAN').css('opacity', opacity);\n\n // Set opacity picker position\n y = keepWithin(opacitySlider.height() - opacitySlider.height() * opacity, 0, opacitySlider.height());\n opacityPicker.css('top', y + 'px');\n }\n\n // Update swatch\n swatch.find('SPAN').css('backgroundColor', hex);\n\n // Determine picker locations\n switch (settings.control) {\n case 'wheel':\n // Set grid position\n r = keepWithin(Math.ceil(hsb.s * 0.75), 0, grid.height() / 2);\n phi = hsb.h * Math.PI / 180;\n x = keepWithin(75 - Math.cos(phi) * r, 0, grid.width());\n y = keepWithin(75 - Math.sin(phi) * r, 0, grid.height());\n gridPicker.css({\n top: y + 'px',\n left: x + 'px'\n });\n\n // Set slider position\n y = 150 - hsb.b / (100 / grid.height());\n if (hex === '') y = 0;\n sliderPicker.css('top', y + 'px');\n\n // Update panel color\n slider.css('backgroundColor', hsb2hex({\n h: hsb.h,\n s: hsb.s,\n b: 100\n }));\n break;\n case 'saturation':\n // Set grid position\n x = keepWithin(5 * hsb.h / 12, 0, 150);\n y = keepWithin(grid.height() - Math.ceil(hsb.b / (100 / grid.height())), 0, grid.height());\n gridPicker.css({\n top: y + 'px',\n left: x + 'px'\n });\n\n // Set slider position\n y = keepWithin(slider.height() - hsb.s * (slider.height() / 100), 0, slider.height());\n sliderPicker.css('top', y + 'px');\n\n // Update UI\n slider.css('backgroundColor', hsb2hex({\n h: hsb.h,\n s: 100,\n b: hsb.b\n }));\n minicolors.find('.minicolors-grid-inner').css('opacity', hsb.s / 100);\n break;\n case 'brightness':\n // Set grid position\n x = keepWithin(5 * hsb.h / 12, 0, 150);\n y = keepWithin(grid.height() - Math.ceil(hsb.s / (100 / grid.height())), 0, grid.height());\n gridPicker.css({\n top: y + 'px',\n left: x + 'px'\n });\n\n // Set slider position\n y = keepWithin(slider.height() - hsb.b * (slider.height() / 100), 0, slider.height());\n sliderPicker.css('top', y + 'px');\n\n // Update UI\n slider.css('backgroundColor', hsb2hex({\n h: hsb.h,\n s: hsb.s,\n b: 100\n }));\n minicolors.find('.minicolors-grid-inner').css('opacity', 1 - hsb.b / 100);\n break;\n default:\n // Set grid position\n x = keepWithin(Math.ceil(hsb.s / (100 / grid.width())), 0, grid.width());\n y = keepWithin(grid.height() - Math.ceil(hsb.b / (100 / grid.height())), 0, grid.height());\n gridPicker.css({\n top: y + 'px',\n left: x + 'px'\n });\n\n // Set slider position\n y = keepWithin(slider.height() - hsb.h / (360 / slider.height()), 0, slider.height());\n sliderPicker.css('top', y + 'px');\n\n // Update panel color\n grid.css('backgroundColor', hsb2hex({\n h: hsb.h,\n s: 100,\n b: 100\n }));\n break;\n }\n\n // Fire change event, but only if minicolors is fully initialized\n if (input.data('minicolors-initialized')) {\n doChange(input, hex, opacity);\n }\n }\n\n // Runs the change and changeDelay callbacks\n function doChange(input, hex, opacity) {\n var settings = input.data('minicolors-settings'),\n lastChange = input.data('minicolors-lastChange');\n\n // Only run if it actually changed\n if (!lastChange || lastChange.hex !== hex || lastChange.opacity !== opacity) {\n // Remember last-changed value\n input.data('minicolors-lastChange', {\n hex: hex,\n opacity: opacity\n });\n\n // Fire change event\n if (settings.change) {\n if (settings.changeDelay) {\n // Call after a delay\n clearTimeout(input.data('minicolors-changeTimeout'));\n input.data('minicolors-changeTimeout', setTimeout(function () {\n settings.change.call(input.get(0), hex, opacity);\n }, settings.changeDelay));\n } else {\n // Call immediately\n settings.change.call(input.get(0), hex, opacity);\n }\n }\n input.trigger('change').trigger('input');\n }\n }\n\n // Generates an RGB(A) object based on the input's value\n function rgbObject(input) {\n var hex = parseHex($(input).val(), true),\n rgb = hex2rgb(hex),\n opacity = $(input).attr('data-opacity');\n if (!rgb) return null;\n if (opacity !== undefined) $.extend(rgb, {\n a: parseFloat(opacity)\n });\n return rgb;\n }\n\n // Genearates an RGB(A) string based on the input's value\n function rgbString(input, alpha) {\n var hex = parseHex($(input).val(), true),\n rgb = hex2rgb(hex),\n opacity = $(input).attr('data-opacity');\n if (!rgb) return null;\n if (opacity === undefined) opacity = 1;\n if (alpha) {\n return 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + parseFloat(opacity) + ')';\n } else {\n return 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')';\n }\n }\n\n // Converts to the letter case specified in settings\n function convertCase(string, letterCase) {\n return letterCase === 'uppercase' ? string.toUpperCase() : string.toLowerCase();\n }\n\n // Parses a string and returns a valid hex string when possible\n function parseHex(string, expand) {\n string = string.replace(/[^A-F0-9]/ig, '');\n if (string.length !== 3 && string.length !== 6) return '';\n if (string.length === 3 && expand) {\n string = string[0] + string[0] + string[1] + string[1] + string[2] + string[2];\n }\n return '#' + string;\n }\n\n // Keeps value within min and max\n function keepWithin(value, min, max) {\n if (value < min) value = min;\n if (value > max) value = max;\n return value;\n }\n\n // Converts an HSB object to an RGB object\n function hsb2rgb(hsb) {\n var rgb = {};\n var h = Math.round(hsb.h);\n var s = Math.round(hsb.s * 255 / 100);\n var v = Math.round(hsb.b * 255 / 100);\n if (s === 0) {\n rgb.r = rgb.g = rgb.b = v;\n } else {\n var t1 = v;\n var t2 = (255 - s) * v / 255;\n var t3 = (t1 - t2) * (h % 60) / 60;\n if (h === 360) h = 0;\n if (h < 60) {\n rgb.r = t1;\n rgb.b = t2;\n rgb.g = t2 + t3;\n } else if (h < 120) {\n rgb.g = t1;\n rgb.b = t2;\n rgb.r = t1 - t3;\n } else if (h < 180) {\n rgb.g = t1;\n rgb.r = t2;\n rgb.b = t2 + t3;\n } else if (h < 240) {\n rgb.b = t1;\n rgb.r = t2;\n rgb.g = t1 - t3;\n } else if (h < 300) {\n rgb.b = t1;\n rgb.g = t2;\n rgb.r = t2 + t3;\n } else if (h < 360) {\n rgb.r = t1;\n rgb.g = t2;\n rgb.b = t1 - t3;\n } else {\n rgb.r = 0;\n rgb.g = 0;\n rgb.b = 0;\n }\n }\n return {\n r: Math.round(rgb.r),\n g: Math.round(rgb.g),\n b: Math.round(rgb.b)\n };\n }\n\n // Converts an RGB object to a hex string\n function rgb2hex(rgb) {\n var hex = [rgb.r.toString(16), rgb.g.toString(16), rgb.b.toString(16)];\n $.each(hex, function (nr, val) {\n if (val.length === 1) hex[nr] = '0' + val;\n });\n return '#' + hex.join('');\n }\n\n // Converts an HSB object to a hex string\n function hsb2hex(hsb) {\n return rgb2hex(hsb2rgb(hsb));\n }\n\n // Converts a hex string to an HSB object\n function hex2hsb(hex) {\n var hsb = rgb2hsb(hex2rgb(hex));\n if (hsb.s === 0) hsb.h = 360;\n return hsb;\n }\n\n // Converts an RGB object to an HSB object\n function rgb2hsb(rgb) {\n var hsb = {\n h: 0,\n s: 0,\n b: 0\n };\n var min = Math.min(rgb.r, rgb.g, rgb.b);\n var max = Math.max(rgb.r, rgb.g, rgb.b);\n var delta = max - min;\n hsb.b = max;\n hsb.s = max !== 0 ? 255 * delta / max : 0;\n if (hsb.s !== 0) {\n if (rgb.r === max) {\n hsb.h = (rgb.g - rgb.b) / delta;\n } else if (rgb.g === max) {\n hsb.h = 2 + (rgb.b - rgb.r) / delta;\n } else {\n hsb.h = 4 + (rgb.r - rgb.g) / delta;\n }\n } else {\n hsb.h = -1;\n }\n hsb.h *= 60;\n if (hsb.h < 0) {\n hsb.h += 360;\n }\n hsb.s *= 100 / 255;\n hsb.b *= 100 / 255;\n return hsb;\n }\n\n // Converts a hex string to an RGB object\n function hex2rgb(hex) {\n hex = parseInt(hex.indexOf('#') > -1 ? hex.substring(1) : hex, 16);\n return {\n /* jshint ignore:start */\n r: hex >> 16,\n g: (hex & 0x00FF00) >> 8,\n b: hex & 0x0000FF\n /* jshint ignore:end */\n };\n }\n\n // Handle events\n $(document)\n // Hide on clicks outside of the control\n .on('mousedown.minicolors touchstart.minicolors', function (event) {\n if (!$(event.target).parents().add(event.target).hasClass('minicolors')) {\n hide();\n }\n })\n // Start moving\n .on('mousedown.minicolors touchstart.minicolors', '.minicolors-grid, .minicolors-slider, .minicolors-opacity-slider', function (event) {\n var target = $(this);\n event.preventDefault();\n $(document).data('minicolors-target', target);\n move(target, event, true);\n })\n // Move pickers\n .on('mousemove.minicolors touchmove.minicolors', function (event) {\n var target = $(document).data('minicolors-target');\n if (target) move(target, event);\n })\n // Stop moving\n .on('mouseup.minicolors touchend.minicolors', function () {\n $(this).removeData('minicolors-target');\n })\n // Show panel when swatch is clicked\n .on('mousedown.minicolors touchstart.minicolors', '.minicolors-swatch', function (event) {\n var input = $(this).parent().find('.minicolors-input');\n event.preventDefault();\n show(input);\n })\n // Show on focus\n .on('focus.minicolors', '.minicolors-input', function () {\n var input = $(this);\n if (!input.data('minicolors-initialized')) return;\n show(input);\n })\n // Fix hex on blur\n .on('blur.minicolors', '.minicolors-input', function () {\n var input = $(this),\n settings = input.data('minicolors-settings');\n if (!input.data('minicolors-initialized')) return;\n\n // Parse Hex\n input.val(parseHex(input.val(), true));\n\n // Is it blank?\n if (input.val() === '') input.val(parseHex(settings.defaultValue, true));\n\n // Adjust case\n input.val(convertCase(input.val(), settings.letterCase));\n })\n // Handle keypresses\n .on('keydown.minicolors', '.minicolors-input', function (event) {\n var input = $(this);\n if (!input.data('minicolors-initialized')) return;\n switch (event.keyCode) {\n case 9:\n // tab\n hide();\n break;\n case 13: // enter\n case 27:\n // esc\n hide();\n input.blur();\n break;\n }\n })\n // Update on keyup\n .on('keyup.minicolors', '.minicolors-input', function () {\n var input = $(this);\n if (!input.data('minicolors-initialized')) return;\n updateFromInput(input, true);\n })\n // Update on paste\n .on('paste.minicolors', '.minicolors-input', function () {\n var input = $(this);\n if (!input.data('minicolors-initialized')) return;\n setTimeout(function () {\n updateFromInput(input, true);\n }, 1);\n });\n});","/*! =======================================================\n VERSION 11.0.2 \n========================================================= */\n\"use strict\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n/*! =========================================================\n * bootstrap-slider.js\n *\n * Maintainers:\n *\t\tKyle Kemp\n *\t\t\t- Twitter: @seiyria\n *\t\t\t- Github: seiyria\n *\t\tRohit Kalkur\n *\t\t\t- Twitter: @Rovolutionary\n *\t\t\t- Github: rovolution\n *\n * =========================================================\n *\n * bootstrap-slider is released under the MIT License\n * Copyright (c) 2019 Kyle Kemp, Rohit Kalkur, and contributors\n *\n * Permission is hereby granted, free of charge, to any person\n * obtaining a copy of this software and associated documentation\n * files (the \"Software\"), to deal in the Software without\n * restriction, including without limitation the rights to use,\n * copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following\n * conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE.\n *\n * ========================================================= */\n\n/**\n * Bridget makes jQuery widgets\n * v1.0.1\n * MIT license\n */\nvar windowIsDefined = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\";\n(function (factory) {\n if (typeof define === \"function\" && define.amd) {\n define([\"jquery\"], factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && module.exports) {\n var jQuery;\n try {\n jQuery = require(\"jquery\");\n } catch (err) {\n jQuery = null;\n }\n module.exports = factory(jQuery);\n } else if (window) {\n window.Slider = factory(window.jQuery);\n }\n})(function ($) {\n // Constants\n var NAMESPACE_MAIN = 'slider';\n var NAMESPACE_ALTERNATE = 'bootstrapSlider';\n\n // Polyfill console methods\n if (windowIsDefined && !window.console) {\n window.console = {};\n }\n if (windowIsDefined && !window.console.log) {\n window.console.log = function () {};\n }\n if (windowIsDefined && !window.console.warn) {\n window.console.warn = function () {};\n }\n\n // Reference to Slider constructor\n var Slider;\n (function ($) {\n 'use strict';\n\n // -------------------------- utils -------------------------- //\n var slice = Array.prototype.slice;\n function noop() {}\n\n // -------------------------- definition -------------------------- //\n\n function defineBridget($) {\n // bail if no jQuery\n if (!$) {\n return;\n }\n\n // -------------------------- addOptionMethod -------------------------- //\n\n /**\n * adds option method -> $().plugin('option', {...})\n * @param {Function} PluginClass - constructor class\n */\n function addOptionMethod(PluginClass) {\n // don't overwrite original option method\n if (PluginClass.prototype.option) {\n return;\n }\n\n // option setter\n PluginClass.prototype.option = function (opts) {\n // bail out if not an object\n if (!$.isPlainObject(opts)) {\n return;\n }\n this.options = $.extend(true, this.options, opts);\n };\n }\n\n // -------------------------- plugin bridge -------------------------- //\n\n // helper function for logging errors\n // $.error breaks jQuery chaining\n var logError = typeof console === 'undefined' ? noop : function (message) {\n console.error(message);\n };\n\n /**\n * jQuery plugin bridge, access methods like $elem.plugin('method')\n * @param {String} namespace - plugin name\n * @param {Function} PluginClass - constructor class\n */\n function bridge(namespace, PluginClass) {\n // add to jQuery fn namespace\n $.fn[namespace] = function (options) {\n if (typeof options === 'string') {\n // call plugin method when first argument is a string\n // get arguments for method\n var args = slice.call(arguments, 1);\n for (var i = 0, len = this.length; i < len; i++) {\n var elem = this[i];\n var instance = $.data(elem, namespace);\n if (!instance) {\n logError(\"cannot call methods on \" + namespace + \" prior to initialization; \" + \"attempted to call '\" + options + \"'\");\n continue;\n }\n if (!$.isFunction(instance[options]) || options.charAt(0) === '_') {\n logError(\"no such method '\" + options + \"' for \" + namespace + \" instance\");\n continue;\n }\n\n // trigger method with arguments\n var returnValue = instance[options].apply(instance, args);\n\n // break look and return first value if provided\n if (returnValue !== undefined && returnValue !== instance) {\n return returnValue;\n }\n }\n // return this if no return value\n return this;\n } else {\n var objects = this.map(function () {\n var instance = $.data(this, namespace);\n if (instance) {\n // apply options & init\n instance.option(options);\n instance._init();\n } else {\n // initialize new instance\n instance = new PluginClass(this, options);\n $.data(this, namespace, instance);\n }\n return $(this);\n });\n if (objects.length === 1) {\n return objects[0];\n }\n return objects;\n }\n };\n }\n\n // -------------------------- bridget -------------------------- //\n\n /**\n * converts a Prototypical class into a proper jQuery plugin\n * the class must have a ._init method\n * @param {String} namespace - plugin name, used in $().pluginName\n * @param {Function} PluginClass - constructor class\n */\n $.bridget = function (namespace, PluginClass) {\n addOptionMethod(PluginClass);\n bridge(namespace, PluginClass);\n };\n return $.bridget;\n }\n\n // get jquery from browser global\n defineBridget($);\n })($);\n\n /*************************************************\n \t\t\tBOOTSTRAP-SLIDER SOURCE CODE\n \t**************************************************/\n\n (function ($) {\n var autoRegisterNamespace = void 0;\n var ErrorMsgs = {\n formatInvalidInputErrorMsg: function formatInvalidInputErrorMsg(input) {\n return \"Invalid input value '\" + input + \"' passed in\";\n },\n callingContextNotSliderInstance: \"Calling context element does not have instance of Slider bound to it. Check your code to make sure the JQuery object returned from the call to the slider() initializer is calling the method\"\n };\n var SliderScale = {\n linear: {\n getValue: function getValue(value, options) {\n if (value < options.min) {\n return options.min;\n } else if (value > options.max) {\n return options.max;\n } else {\n return value;\n }\n },\n toValue: function toValue(percentage) {\n var rawValue = percentage / 100 * (this.options.max - this.options.min);\n var shouldAdjustWithBase = true;\n if (this.options.ticks_positions.length > 0) {\n var minv,\n maxv,\n minp,\n maxp = 0;\n for (var i = 1; i < this.options.ticks_positions.length; i++) {\n if (percentage <= this.options.ticks_positions[i]) {\n minv = this.options.ticks[i - 1];\n minp = this.options.ticks_positions[i - 1];\n maxv = this.options.ticks[i];\n maxp = this.options.ticks_positions[i];\n break;\n }\n }\n var partialPercentage = (percentage - minp) / (maxp - minp);\n rawValue = minv + partialPercentage * (maxv - minv);\n shouldAdjustWithBase = false;\n }\n var adjustment = shouldAdjustWithBase ? this.options.min : 0;\n var value = adjustment + Math.round(rawValue / this.options.step) * this.options.step;\n return SliderScale.linear.getValue(value, this.options);\n },\n toPercentage: function toPercentage(value) {\n if (this.options.max === this.options.min) {\n return 0;\n }\n if (this.options.ticks_positions.length > 0) {\n var minv,\n maxv,\n minp,\n maxp = 0;\n for (var i = 0; i < this.options.ticks.length; i++) {\n if (value <= this.options.ticks[i]) {\n minv = i > 0 ? this.options.ticks[i - 1] : 0;\n minp = i > 0 ? this.options.ticks_positions[i - 1] : 0;\n maxv = this.options.ticks[i];\n maxp = this.options.ticks_positions[i];\n break;\n }\n }\n if (i > 0) {\n var partialPercentage = (value - minv) / (maxv - minv);\n return minp + partialPercentage * (maxp - minp);\n }\n }\n return 100 * (value - this.options.min) / (this.options.max - this.options.min);\n }\n },\n logarithmic: {\n /* Based on http://stackoverflow.com/questions/846221/logarithmic-slider */\n toValue: function toValue(percentage) {\n var offset = 1 - this.options.min;\n var min = Math.log(this.options.min + offset);\n var max = Math.log(this.options.max + offset);\n var value = Math.exp(min + (max - min) * percentage / 100) - offset;\n if (Math.round(value) === max) {\n return max;\n }\n value = this.options.min + Math.round((value - this.options.min) / this.options.step) * this.options.step;\n /* Rounding to the nearest step could exceed the min or\n * max, so clip to those values. */\n return SliderScale.linear.getValue(value, this.options);\n },\n toPercentage: function toPercentage(value) {\n if (this.options.max === this.options.min) {\n return 0;\n } else {\n var offset = 1 - this.options.min;\n var max = Math.log(this.options.max + offset);\n var min = Math.log(this.options.min + offset);\n var v = Math.log(value + offset);\n return 100 * (v - min) / (max - min);\n }\n }\n }\n };\n\n /*************************************************\n \t\t\t\t\t\tCONSTRUCTOR\n \t**************************************************/\n Slider = function Slider(element, options) {\n createNewSlider.call(this, element, options);\n return this;\n };\n function createNewSlider(element, options) {\n /*\n \tThe internal state object is used to store data about the current 'state' of slider.\n \tThis includes values such as the `value`, `enabled`, etc...\n */\n this._state = {\n value: null,\n enabled: null,\n offset: null,\n size: null,\n percentage: null,\n inDrag: false,\n over: false,\n tickIndex: null\n };\n\n // The objects used to store the reference to the tick methods if ticks_tooltip is on\n this.ticksCallbackMap = {};\n this.handleCallbackMap = {};\n if (typeof element === \"string\") {\n this.element = document.querySelector(element);\n } else if (element instanceof HTMLElement) {\n this.element = element;\n }\n\n /*************************************************\n \t\t\t\t\tProcess Options\n \t**************************************************/\n options = options ? options : {};\n var optionTypes = Object.keys(this.defaultOptions);\n var isMinSet = options.hasOwnProperty('min');\n var isMaxSet = options.hasOwnProperty('max');\n for (var i = 0; i < optionTypes.length; i++) {\n var optName = optionTypes[i];\n\n // First check if an option was passed in via the constructor\n var val = options[optName];\n // If no data attrib, then check data atrributes\n val = typeof val !== 'undefined' ? val : getDataAttrib(this.element, optName);\n // Finally, if nothing was specified, use the defaults\n val = val !== null ? val : this.defaultOptions[optName];\n\n // Set all options on the instance of the Slider\n if (!this.options) {\n this.options = {};\n }\n this.options[optName] = val;\n }\n this.ticksAreValid = Array.isArray(this.options.ticks) && this.options.ticks.length > 0;\n\n // Lock to ticks only when ticks[] is defined and set\n if (!this.ticksAreValid) {\n this.options.lock_to_ticks = false;\n }\n\n // Check options.rtl\n if (this.options.rtl === 'auto') {\n var computedStyle = window.getComputedStyle(this.element);\n if (computedStyle != null) {\n this.options.rtl = computedStyle.direction === 'rtl';\n } else {\n // Fix for Firefox bug in versions less than 62:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1467722\n this.options.rtl = this.element.style.direction === 'rtl';\n }\n }\n\n /*\n \tValidate `tooltip_position` against 'orientation`\n \t- if `tooltip_position` is incompatible with orientation, switch it to a default compatible with specified `orientation`\n \t\t-- default for \"vertical\" -> \"right\", \"left\" if rtl\n \t\t-- default for \"horizontal\" -> \"top\"\n */\n if (this.options.orientation === \"vertical\" && (this.options.tooltip_position === \"top\" || this.options.tooltip_position === \"bottom\")) {\n if (this.options.rtl) {\n this.options.tooltip_position = \"left\";\n } else {\n this.options.tooltip_position = \"right\";\n }\n } else if (this.options.orientation === \"horizontal\" && (this.options.tooltip_position === \"left\" || this.options.tooltip_position === \"right\")) {\n this.options.tooltip_position = \"top\";\n }\n function getDataAttrib(element, optName) {\n var dataName = \"data-slider-\" + optName.replace(/_/g, '-');\n var dataValString = element.getAttribute(dataName);\n try {\n return JSON.parse(dataValString);\n } catch (err) {\n return dataValString;\n }\n }\n\n /*************************************************\n \t\t\t\t\tCreate Markup\n \t**************************************************/\n\n var origWidth = this.element.style.width;\n var updateSlider = false;\n var parent = this.element.parentNode;\n var sliderTrackSelection;\n var sliderTrackLow, sliderTrackHigh;\n var sliderMinHandle;\n var sliderMaxHandle;\n if (this.sliderElem) {\n updateSlider = true;\n } else {\n /* Create elements needed for slider */\n this.sliderElem = document.createElement(\"div\");\n this.sliderElem.className = \"slider\";\n\n /* Create slider track elements */\n var sliderTrack = document.createElement(\"div\");\n sliderTrack.className = \"slider-track\";\n sliderTrackLow = document.createElement(\"div\");\n sliderTrackLow.className = \"slider-track-low\";\n sliderTrackSelection = document.createElement(\"div\");\n sliderTrackSelection.className = \"slider-selection\";\n sliderTrackHigh = document.createElement(\"div\");\n sliderTrackHigh.className = \"slider-track-high\";\n sliderMinHandle = document.createElement(\"div\");\n sliderMinHandle.className = \"slider-handle min-slider-handle\";\n sliderMinHandle.setAttribute('role', 'slider');\n sliderMinHandle.setAttribute('aria-valuemin', this.options.min);\n sliderMinHandle.setAttribute('aria-valuemax', this.options.max);\n sliderMaxHandle = document.createElement(\"div\");\n sliderMaxHandle.className = \"slider-handle max-slider-handle\";\n sliderMaxHandle.setAttribute('role', 'slider');\n sliderMaxHandle.setAttribute('aria-valuemin', this.options.min);\n sliderMaxHandle.setAttribute('aria-valuemax', this.options.max);\n sliderTrack.appendChild(sliderTrackLow);\n sliderTrack.appendChild(sliderTrackSelection);\n sliderTrack.appendChild(sliderTrackHigh);\n\n /* Create highlight range elements */\n this.rangeHighlightElements = [];\n var rangeHighlightsOpts = this.options.rangeHighlights;\n if (Array.isArray(rangeHighlightsOpts) && rangeHighlightsOpts.length > 0) {\n for (var j = 0; j < rangeHighlightsOpts.length; j++) {\n var rangeHighlightElement = document.createElement(\"div\");\n var customClassString = rangeHighlightsOpts[j].class || \"\";\n rangeHighlightElement.className = \"slider-rangeHighlight slider-selection \" + customClassString;\n this.rangeHighlightElements.push(rangeHighlightElement);\n sliderTrack.appendChild(rangeHighlightElement);\n }\n }\n\n /* Add aria-labelledby to handle's */\n var isLabelledbyArray = Array.isArray(this.options.labelledby);\n if (isLabelledbyArray && this.options.labelledby[0]) {\n sliderMinHandle.setAttribute('aria-labelledby', this.options.labelledby[0]);\n }\n if (isLabelledbyArray && this.options.labelledby[1]) {\n sliderMaxHandle.setAttribute('aria-labelledby', this.options.labelledby[1]);\n }\n if (!isLabelledbyArray && this.options.labelledby) {\n sliderMinHandle.setAttribute('aria-labelledby', this.options.labelledby);\n sliderMaxHandle.setAttribute('aria-labelledby', this.options.labelledby);\n }\n\n /* Create ticks */\n this.ticks = [];\n if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) {\n this.ticksContainer = document.createElement('div');\n this.ticksContainer.className = 'slider-tick-container';\n for (i = 0; i < this.options.ticks.length; i++) {\n var tick = document.createElement('div');\n tick.className = 'slider-tick';\n if (this.options.ticks_tooltip) {\n var tickListenerReference = this._addTickListener();\n var enterCallback = tickListenerReference.addMouseEnter(this, tick, i);\n var leaveCallback = tickListenerReference.addMouseLeave(this, tick);\n this.ticksCallbackMap[i] = {\n mouseEnter: enterCallback,\n mouseLeave: leaveCallback\n };\n }\n this.ticks.push(tick);\n this.ticksContainer.appendChild(tick);\n }\n sliderTrackSelection.className += \" tick-slider-selection\";\n }\n this.tickLabels = [];\n if (Array.isArray(this.options.ticks_labels) && this.options.ticks_labels.length > 0) {\n this.tickLabelContainer = document.createElement('div');\n this.tickLabelContainer.className = 'slider-tick-label-container';\n for (i = 0; i < this.options.ticks_labels.length; i++) {\n var label = document.createElement('div');\n var noTickPositionsSpecified = this.options.ticks_positions.length === 0;\n var tickLabelsIndex = this.options.reversed && noTickPositionsSpecified ? this.options.ticks_labels.length - (i + 1) : i;\n label.className = 'slider-tick-label';\n label.innerHTML = this.options.ticks_labels[tickLabelsIndex];\n this.tickLabels.push(label);\n this.tickLabelContainer.appendChild(label);\n }\n }\n var createAndAppendTooltipSubElements = function createAndAppendTooltipSubElements(tooltipElem) {\n var arrow = document.createElement(\"div\");\n arrow.className = \"arrow\";\n var inner = document.createElement(\"div\");\n inner.className = \"tooltip-inner\";\n tooltipElem.appendChild(arrow);\n tooltipElem.appendChild(inner);\n };\n\n /* Create tooltip elements */\n var sliderTooltip = document.createElement(\"div\");\n sliderTooltip.className = \"tooltip tooltip-main\";\n sliderTooltip.setAttribute('role', 'presentation');\n createAndAppendTooltipSubElements(sliderTooltip);\n var sliderTooltipMin = document.createElement(\"div\");\n sliderTooltipMin.className = \"tooltip tooltip-min\";\n sliderTooltipMin.setAttribute('role', 'presentation');\n createAndAppendTooltipSubElements(sliderTooltipMin);\n var sliderTooltipMax = document.createElement(\"div\");\n sliderTooltipMax.className = \"tooltip tooltip-max\";\n sliderTooltipMax.setAttribute('role', 'presentation');\n createAndAppendTooltipSubElements(sliderTooltipMax);\n\n /* Append components to sliderElem */\n this.sliderElem.appendChild(sliderTrack);\n this.sliderElem.appendChild(sliderTooltip);\n this.sliderElem.appendChild(sliderTooltipMin);\n this.sliderElem.appendChild(sliderTooltipMax);\n if (this.tickLabelContainer) {\n this.sliderElem.appendChild(this.tickLabelContainer);\n }\n if (this.ticksContainer) {\n this.sliderElem.appendChild(this.ticksContainer);\n }\n this.sliderElem.appendChild(sliderMinHandle);\n this.sliderElem.appendChild(sliderMaxHandle);\n\n /* Append slider element to parent container, right before the original <input> element */\n parent.insertBefore(this.sliderElem, this.element);\n\n /* Hide original <input> element */\n this.element.style.display = \"none\";\n }\n /* If JQuery exists, cache JQ references */\n if ($) {\n this.$element = $(this.element);\n this.$sliderElem = $(this.sliderElem);\n }\n\n /*************************************************\n \t\t\t\t\t\tSetup\n \t**************************************************/\n this.eventToCallbackMap = {};\n this.sliderElem.id = this.options.id;\n this.touchCapable = 'ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch;\n this.touchX = 0;\n this.touchY = 0;\n this.tooltip = this.sliderElem.querySelector('.tooltip-main');\n this.tooltipInner = this.tooltip.querySelector('.tooltip-inner');\n this.tooltip_min = this.sliderElem.querySelector('.tooltip-min');\n this.tooltipInner_min = this.tooltip_min.querySelector('.tooltip-inner');\n this.tooltip_max = this.sliderElem.querySelector('.tooltip-max');\n this.tooltipInner_max = this.tooltip_max.querySelector('.tooltip-inner');\n if (SliderScale[this.options.scale]) {\n this.options.scale = SliderScale[this.options.scale];\n }\n if (updateSlider === true) {\n // Reset classes\n this._removeClass(this.sliderElem, 'slider-horizontal');\n this._removeClass(this.sliderElem, 'slider-vertical');\n this._removeClass(this.sliderElem, 'slider-rtl');\n this._removeClass(this.tooltip, 'hide');\n this._removeClass(this.tooltip_min, 'hide');\n this._removeClass(this.tooltip_max, 'hide');\n\n // Undo existing inline styles for track\n [\"left\", \"right\", \"top\", \"width\", \"height\"].forEach(function (prop) {\n this._removeProperty(this.trackLow, prop);\n this._removeProperty(this.trackSelection, prop);\n this._removeProperty(this.trackHigh, prop);\n }, this);\n\n // Undo inline styles on handles\n [this.handle1, this.handle2].forEach(function (handle) {\n this._removeProperty(handle, 'left');\n this._removeProperty(handle, 'right');\n this._removeProperty(handle, 'top');\n }, this);\n\n // Undo inline styles and classes on tooltips\n [this.tooltip, this.tooltip_min, this.tooltip_max].forEach(function (tooltip) {\n this._removeProperty(tooltip, 'bs-tooltip-left');\n this._removeProperty(tooltip, 'bs-tooltip-right');\n this._removeProperty(tooltip, 'bs-tooltip-top');\n this._removeClass(tooltip, 'bs-tooltip-right');\n this._removeClass(tooltip, 'bs-tooltip-left');\n this._removeClass(tooltip, 'bs-tooltip-top');\n }, this);\n }\n if (this.options.orientation === 'vertical') {\n this._addClass(this.sliderElem, 'slider-vertical');\n this.stylePos = 'top';\n this.mousePos = 'pageY';\n this.sizePos = 'offsetHeight';\n } else {\n this._addClass(this.sliderElem, 'slider-horizontal');\n this.sliderElem.style.width = origWidth;\n this.options.orientation = 'horizontal';\n if (this.options.rtl) {\n this.stylePos = 'right';\n } else {\n this.stylePos = 'left';\n }\n this.mousePos = 'clientX';\n this.sizePos = 'offsetWidth';\n }\n // specific rtl class\n if (this.options.rtl) {\n this._addClass(this.sliderElem, 'slider-rtl');\n }\n this._setTooltipPosition();\n /* In case ticks are specified, overwrite the min and max bounds */\n if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) {\n if (!isMaxSet) {\n this.options.max = Math.max.apply(Math, this.options.ticks);\n }\n if (!isMinSet) {\n this.options.min = Math.min.apply(Math, this.options.ticks);\n }\n }\n if (Array.isArray(this.options.value)) {\n this.options.range = true;\n this._state.value = this.options.value;\n } else if (this.options.range) {\n // User wants a range, but value is not an array\n this._state.value = [this.options.value, this.options.max];\n } else {\n this._state.value = this.options.value;\n }\n this.trackLow = sliderTrackLow || this.trackLow;\n this.trackSelection = sliderTrackSelection || this.trackSelection;\n this.trackHigh = sliderTrackHigh || this.trackHigh;\n if (this.options.selection === 'none') {\n this._addClass(this.trackLow, 'hide');\n this._addClass(this.trackSelection, 'hide');\n this._addClass(this.trackHigh, 'hide');\n } else if (this.options.selection === 'after' || this.options.selection === 'before') {\n this._removeClass(this.trackLow, 'hide');\n this._removeClass(this.trackSelection, 'hide');\n this._removeClass(this.trackHigh, 'hide');\n }\n this.handle1 = sliderMinHandle || this.handle1;\n this.handle2 = sliderMaxHandle || this.handle2;\n if (updateSlider === true) {\n // Reset classes\n this._removeClass(this.handle1, 'round triangle');\n this._removeClass(this.handle2, 'round triangle hide');\n for (i = 0; i < this.ticks.length; i++) {\n this._removeClass(this.ticks[i], 'round triangle hide');\n }\n }\n var availableHandleModifiers = ['round', 'triangle', 'custom'];\n var isValidHandleType = availableHandleModifiers.indexOf(this.options.handle) !== -1;\n if (isValidHandleType) {\n this._addClass(this.handle1, this.options.handle);\n this._addClass(this.handle2, this.options.handle);\n for (i = 0; i < this.ticks.length; i++) {\n this._addClass(this.ticks[i], this.options.handle);\n }\n }\n this._state.offset = this._offset(this.sliderElem);\n this._state.size = this.sliderElem[this.sizePos];\n this.setValue(this._state.value);\n\n /******************************************\n \t\t\t\tBind Event Listeners\n \t******************************************/\n\n // Bind keyboard handlers\n this.handle1Keydown = this._keydown.bind(this, 0);\n this.handle1.addEventListener(\"keydown\", this.handle1Keydown, false);\n this.handle2Keydown = this._keydown.bind(this, 1);\n this.handle2.addEventListener(\"keydown\", this.handle2Keydown, false);\n this.mousedown = this._mousedown.bind(this);\n this.touchstart = this._touchstart.bind(this);\n this.touchmove = this._touchmove.bind(this);\n if (this.touchCapable) {\n this.sliderElem.addEventListener(\"touchstart\", this.touchstart, false);\n this.sliderElem.addEventListener(\"touchmove\", this.touchmove, false);\n }\n this.sliderElem.addEventListener(\"mousedown\", this.mousedown, false);\n\n // Bind window handlers\n this.resize = this._resize.bind(this);\n window.addEventListener(\"resize\", this.resize, false);\n\n // Bind tooltip-related handlers\n if (this.options.tooltip === 'hide') {\n this._addClass(this.tooltip, 'hide');\n this._addClass(this.tooltip_min, 'hide');\n this._addClass(this.tooltip_max, 'hide');\n } else if (this.options.tooltip === 'always') {\n this._showTooltip();\n this._alwaysShowTooltip = true;\n } else {\n this.showTooltip = this._showTooltip.bind(this);\n this.hideTooltip = this._hideTooltip.bind(this);\n if (this.options.ticks_tooltip) {\n var callbackHandle = this._addTickListener();\n //create handle1 listeners and store references in map\n var mouseEnter = callbackHandle.addMouseEnter(this, this.handle1);\n var mouseLeave = callbackHandle.addMouseLeave(this, this.handle1);\n this.handleCallbackMap.handle1 = {\n mouseEnter: mouseEnter,\n mouseLeave: mouseLeave\n };\n //create handle2 listeners and store references in map\n mouseEnter = callbackHandle.addMouseEnter(this, this.handle2);\n mouseLeave = callbackHandle.addMouseLeave(this, this.handle2);\n this.handleCallbackMap.handle2 = {\n mouseEnter: mouseEnter,\n mouseLeave: mouseLeave\n };\n } else {\n this.sliderElem.addEventListener(\"mouseenter\", this.showTooltip, false);\n this.sliderElem.addEventListener(\"mouseleave\", this.hideTooltip, false);\n if (this.touchCapable) {\n this.sliderElem.addEventListener(\"touchstart\", this.showTooltip, false);\n this.sliderElem.addEventListener(\"touchmove\", this.showTooltip, false);\n this.sliderElem.addEventListener(\"touchend\", this.hideTooltip, false);\n }\n }\n this.handle1.addEventListener(\"focus\", this.showTooltip, false);\n this.handle1.addEventListener(\"blur\", this.hideTooltip, false);\n this.handle2.addEventListener(\"focus\", this.showTooltip, false);\n this.handle2.addEventListener(\"blur\", this.hideTooltip, false);\n if (this.touchCapable) {\n this.handle1.addEventListener(\"touchstart\", this.showTooltip, false);\n this.handle1.addEventListener(\"touchmove\", this.showTooltip, false);\n this.handle1.addEventListener(\"touchend\", this.hideTooltip, false);\n this.handle2.addEventListener(\"touchstart\", this.showTooltip, false);\n this.handle2.addEventListener(\"touchmove\", this.showTooltip, false);\n this.handle2.addEventListener(\"touchend\", this.hideTooltip, false);\n }\n }\n if (this.options.enabled) {\n this.enable();\n } else {\n this.disable();\n }\n }\n\n /*************************************************\n \t\t\t\tINSTANCE PROPERTIES/METHODS\n \t- Any methods bound to the prototype are considered\n part of the plugin's `public` interface\n \t**************************************************/\n Slider.prototype = {\n _init: function _init() {},\n // NOTE: Must exist to support bridget\n\n constructor: Slider,\n defaultOptions: {\n id: \"\",\n min: 0,\n max: 10,\n step: 1,\n precision: 0,\n orientation: 'horizontal',\n value: 5,\n range: false,\n selection: 'before',\n tooltip: 'show',\n tooltip_split: false,\n lock_to_ticks: false,\n handle: 'round',\n reversed: false,\n rtl: 'auto',\n enabled: true,\n formatter: function formatter(val) {\n if (Array.isArray(val)) {\n return val[0] + \" : \" + val[1];\n } else {\n return val;\n }\n },\n natural_arrow_keys: false,\n ticks: [],\n ticks_positions: [],\n ticks_labels: [],\n ticks_snap_bounds: 0,\n ticks_tooltip: false,\n scale: 'linear',\n focus: false,\n tooltip_position: null,\n labelledby: null,\n rangeHighlights: []\n },\n getElement: function getElement() {\n return this.sliderElem;\n },\n getValue: function getValue() {\n if (this.options.range) {\n return this._state.value;\n } else {\n return this._state.value[0];\n }\n },\n setValue: function setValue(val, triggerSlideEvent, triggerChangeEvent) {\n if (!val) {\n val = 0;\n }\n var oldValue = this.getValue();\n this._state.value = this._validateInputValue(val);\n var applyPrecision = this._applyPrecision.bind(this);\n if (this.options.range) {\n this._state.value[0] = applyPrecision(this._state.value[0]);\n this._state.value[1] = applyPrecision(this._state.value[1]);\n if (this.ticksAreValid && this.options.lock_to_ticks) {\n this._state.value[0] = this.options.ticks[this._getClosestTickIndex(this._state.value[0])];\n this._state.value[1] = this.options.ticks[this._getClosestTickIndex(this._state.value[1])];\n }\n this._state.value[0] = Math.max(this.options.min, Math.min(this.options.max, this._state.value[0]));\n this._state.value[1] = Math.max(this.options.min, Math.min(this.options.max, this._state.value[1]));\n } else {\n this._state.value = applyPrecision(this._state.value);\n if (this.ticksAreValid && this.options.lock_to_ticks) {\n this._state.value = this.options.ticks[this._getClosestTickIndex(this._state.value)];\n }\n this._state.value = [Math.max(this.options.min, Math.min(this.options.max, this._state.value))];\n this._addClass(this.handle2, 'hide');\n if (this.options.selection === 'after') {\n this._state.value[1] = this.options.max;\n } else {\n this._state.value[1] = this.options.min;\n }\n }\n\n // Determine which ticks the handle(s) are set at (if applicable)\n this._setTickIndex();\n if (this.options.max > this.options.min) {\n this._state.percentage = [this._toPercentage(this._state.value[0]), this._toPercentage(this._state.value[1]), this.options.step * 100 / (this.options.max - this.options.min)];\n } else {\n this._state.percentage = [0, 0, 100];\n }\n this._layout();\n var newValue = this.options.range ? this._state.value : this._state.value[0];\n this._setDataVal(newValue);\n if (triggerSlideEvent === true) {\n this._trigger('slide', newValue);\n }\n var hasChanged = false;\n if (Array.isArray(newValue)) {\n hasChanged = oldValue[0] !== newValue[0] || oldValue[1] !== newValue[1];\n } else {\n hasChanged = oldValue !== newValue;\n }\n if (hasChanged && triggerChangeEvent === true) {\n this._trigger('change', {\n oldValue: oldValue,\n newValue: newValue\n });\n }\n return this;\n },\n destroy: function destroy() {\n // Remove event handlers on slider elements\n this._removeSliderEventHandlers();\n\n // Remove the slider from the DOM\n this.sliderElem.parentNode.removeChild(this.sliderElem);\n /* Show original <input> element */\n this.element.style.display = \"\";\n\n // Clear out custom event bindings\n this._cleanUpEventCallbacksMap();\n\n // Remove data values\n this.element.removeAttribute(\"data\");\n\n // Remove JQuery handlers/data\n if ($) {\n this._unbindJQueryEventHandlers();\n if (autoRegisterNamespace === NAMESPACE_MAIN) {\n this.$element.removeData(autoRegisterNamespace);\n }\n this.$element.removeData(NAMESPACE_ALTERNATE);\n }\n },\n disable: function disable() {\n this._state.enabled = false;\n this.handle1.removeAttribute(\"tabindex\");\n this.handle2.removeAttribute(\"tabindex\");\n this._addClass(this.sliderElem, 'slider-disabled');\n this._trigger('slideDisabled');\n return this;\n },\n enable: function enable() {\n this._state.enabled = true;\n this.handle1.setAttribute(\"tabindex\", 0);\n this.handle2.setAttribute(\"tabindex\", 0);\n this._removeClass(this.sliderElem, 'slider-disabled');\n this._trigger('slideEnabled');\n return this;\n },\n toggle: function toggle() {\n if (this._state.enabled) {\n this.disable();\n } else {\n this.enable();\n }\n return this;\n },\n isEnabled: function isEnabled() {\n return this._state.enabled;\n },\n on: function on(evt, callback) {\n this._bindNonQueryEventHandler(evt, callback);\n return this;\n },\n off: function off(evt, callback) {\n if ($) {\n this.$element.off(evt, callback);\n this.$sliderElem.off(evt, callback);\n } else {\n this._unbindNonQueryEventHandler(evt, callback);\n }\n },\n getAttribute: function getAttribute(attribute) {\n if (attribute) {\n return this.options[attribute];\n } else {\n return this.options;\n }\n },\n setAttribute: function setAttribute(attribute, value) {\n this.options[attribute] = value;\n return this;\n },\n refresh: function refresh(options) {\n var currentValue = this.getValue();\n this._removeSliderEventHandlers();\n createNewSlider.call(this, this.element, this.options);\n // Don't reset slider's value on refresh if `useCurrentValue` is true\n if (options && options.useCurrentValue === true) {\n this.setValue(currentValue);\n }\n if ($) {\n // Bind new instance of slider to the element\n if (autoRegisterNamespace === NAMESPACE_MAIN) {\n $.data(this.element, NAMESPACE_MAIN, this);\n $.data(this.element, NAMESPACE_ALTERNATE, this);\n } else {\n $.data(this.element, NAMESPACE_ALTERNATE, this);\n }\n }\n return this;\n },\n relayout: function relayout() {\n this._resize();\n return this;\n },\n /******************************+\n \t\t\t\tHELPERS\n \t- Any method that is not part of the public interface.\n - Place it underneath this comment block and write its signature like so:\n \t\t_fnName : function() {...}\n \t********************************/\n _removeTooltipListener: function _removeTooltipListener(event, handler) {\n this.handle1.removeEventListener(event, handler, false);\n this.handle2.removeEventListener(event, handler, false);\n },\n _removeSliderEventHandlers: function _removeSliderEventHandlers() {\n // Remove keydown event listeners\n this.handle1.removeEventListener(\"keydown\", this.handle1Keydown, false);\n this.handle2.removeEventListener(\"keydown\", this.handle2Keydown, false);\n\n //remove the listeners from the ticks and handles if they had their own listeners\n if (this.options.ticks_tooltip) {\n var ticks = this.ticksContainer.getElementsByClassName('slider-tick');\n for (var i = 0; i < ticks.length; i++) {\n ticks[i].removeEventListener('mouseenter', this.ticksCallbackMap[i].mouseEnter, false);\n ticks[i].removeEventListener('mouseleave', this.ticksCallbackMap[i].mouseLeave, false);\n }\n if (this.handleCallbackMap.handle1 && this.handleCallbackMap.handle2) {\n this.handle1.removeEventListener('mouseenter', this.handleCallbackMap.handle1.mouseEnter, false);\n this.handle2.removeEventListener('mouseenter', this.handleCallbackMap.handle2.mouseEnter, false);\n this.handle1.removeEventListener('mouseleave', this.handleCallbackMap.handle1.mouseLeave, false);\n this.handle2.removeEventListener('mouseleave', this.handleCallbackMap.handle2.mouseLeave, false);\n }\n }\n this.handleCallbackMap = null;\n this.ticksCallbackMap = null;\n if (this.showTooltip) {\n this._removeTooltipListener(\"focus\", this.showTooltip);\n }\n if (this.hideTooltip) {\n this._removeTooltipListener(\"blur\", this.hideTooltip);\n }\n\n // Remove event listeners from sliderElem\n if (this.showTooltip) {\n this.sliderElem.removeEventListener(\"mouseenter\", this.showTooltip, false);\n }\n if (this.hideTooltip) {\n this.sliderElem.removeEventListener(\"mouseleave\", this.hideTooltip, false);\n }\n this.sliderElem.removeEventListener(\"mousedown\", this.mousedown, false);\n if (this.touchCapable) {\n // Remove touch event listeners from handles\n if (this.showTooltip) {\n this.handle1.removeEventListener(\"touchstart\", this.showTooltip, false);\n this.handle1.removeEventListener(\"touchmove\", this.showTooltip, false);\n this.handle2.removeEventListener(\"touchstart\", this.showTooltip, false);\n this.handle2.removeEventListener(\"touchmove\", this.showTooltip, false);\n }\n if (this.hideTooltip) {\n this.handle1.removeEventListener(\"touchend\", this.hideTooltip, false);\n this.handle2.removeEventListener(\"touchend\", this.hideTooltip, false);\n }\n\n // Remove event listeners from sliderElem\n if (this.showTooltip) {\n this.sliderElem.removeEventListener(\"touchstart\", this.showTooltip, false);\n this.sliderElem.removeEventListener(\"touchmove\", this.showTooltip, false);\n }\n if (this.hideTooltip) {\n this.sliderElem.removeEventListener(\"touchend\", this.hideTooltip, false);\n }\n this.sliderElem.removeEventListener(\"touchstart\", this.touchstart, false);\n this.sliderElem.removeEventListener(\"touchmove\", this.touchmove, false);\n }\n\n // Remove window event listener\n window.removeEventListener(\"resize\", this.resize, false);\n },\n _bindNonQueryEventHandler: function _bindNonQueryEventHandler(evt, callback) {\n if (this.eventToCallbackMap[evt] === undefined) {\n this.eventToCallbackMap[evt] = [];\n }\n this.eventToCallbackMap[evt].push(callback);\n },\n _unbindNonQueryEventHandler: function _unbindNonQueryEventHandler(evt, callback) {\n var callbacks = this.eventToCallbackMap[evt];\n if (callbacks !== undefined) {\n for (var i = 0; i < callbacks.length; i++) {\n if (callbacks[i] === callback) {\n callbacks.splice(i, 1);\n break;\n }\n }\n }\n },\n _cleanUpEventCallbacksMap: function _cleanUpEventCallbacksMap() {\n var eventNames = Object.keys(this.eventToCallbackMap);\n for (var i = 0; i < eventNames.length; i++) {\n var eventName = eventNames[i];\n delete this.eventToCallbackMap[eventName];\n }\n },\n _showTooltip: function _showTooltip() {\n if (this.options.tooltip_split === false) {\n this._addClass(this.tooltip, 'show');\n this.tooltip_min.style.display = 'none';\n this.tooltip_max.style.display = 'none';\n } else {\n this._addClass(this.tooltip_min, 'show');\n this._addClass(this.tooltip_max, 'show');\n this.tooltip.style.display = 'none';\n }\n this._state.over = true;\n },\n _hideTooltip: function _hideTooltip() {\n if (this._state.inDrag === false && this._alwaysShowTooltip !== true) {\n this._removeClass(this.tooltip, 'show');\n this._removeClass(this.tooltip_min, 'show');\n this._removeClass(this.tooltip_max, 'show');\n }\n this._state.over = false;\n },\n _setToolTipOnMouseOver: function _setToolTipOnMouseOver(tempState) {\n var self = this;\n var formattedTooltipVal = this.options.formatter(!tempState ? this._state.value[0] : tempState.value[0]);\n var positionPercentages = !tempState ? getPositionPercentages(this._state, this.options.reversed) : getPositionPercentages(tempState, this.options.reversed);\n this._setText(this.tooltipInner, formattedTooltipVal);\n this.tooltip.style[this.stylePos] = positionPercentages[0] + \"%\";\n function getPositionPercentages(state, reversed) {\n if (reversed) {\n return [100 - state.percentage[0], self.options.range ? 100 - state.percentage[1] : state.percentage[1]];\n }\n return [state.percentage[0], state.percentage[1]];\n }\n },\n _copyState: function _copyState() {\n return {\n value: [this._state.value[0], this._state.value[1]],\n enabled: this._state.enabled,\n offset: this._state.offset,\n size: this._state.size,\n percentage: [this._state.percentage[0], this._state.percentage[1], this._state.percentage[2]],\n inDrag: this._state.inDrag,\n over: this._state.over,\n // deleted or null'd keys\n dragged: this._state.dragged,\n keyCtrl: this._state.keyCtrl\n };\n },\n _addTickListener: function _addTickListener() {\n return {\n addMouseEnter: function addMouseEnter(reference, element, index) {\n var enter = function enter() {\n var tempState = reference._copyState();\n // Which handle is being hovered over?\n var val = element === reference.handle1 ? tempState.value[0] : tempState.value[1];\n var per = void 0;\n\n // Setup value and percentage for tick's 'mouseenter'\n if (index !== undefined) {\n val = reference.options.ticks[index];\n per = reference.options.ticks_positions.length > 0 && reference.options.ticks_positions[index] || reference._toPercentage(reference.options.ticks[index]);\n } else {\n per = reference._toPercentage(val);\n }\n tempState.value[0] = val;\n tempState.percentage[0] = per;\n reference._setToolTipOnMouseOver(tempState);\n reference._showTooltip();\n };\n element.addEventListener(\"mouseenter\", enter, false);\n return enter;\n },\n addMouseLeave: function addMouseLeave(reference, element) {\n var leave = function leave() {\n reference._hideTooltip();\n };\n element.addEventListener(\"mouseleave\", leave, false);\n return leave;\n }\n };\n },\n _layout: function _layout() {\n var positionPercentages;\n var formattedValue;\n if (this.options.reversed) {\n positionPercentages = [100 - this._state.percentage[0], this.options.range ? 100 - this._state.percentage[1] : this._state.percentage[1]];\n } else {\n positionPercentages = [this._state.percentage[0], this._state.percentage[1]];\n }\n this.handle1.style[this.stylePos] = positionPercentages[0] + \"%\";\n this.handle1.setAttribute('aria-valuenow', this._state.value[0]);\n formattedValue = this.options.formatter(this._state.value[0]);\n if (isNaN(formattedValue)) {\n this.handle1.setAttribute('aria-valuetext', formattedValue);\n } else {\n this.handle1.removeAttribute('aria-valuetext');\n }\n this.handle2.style[this.stylePos] = positionPercentages[1] + \"%\";\n this.handle2.setAttribute('aria-valuenow', this._state.value[1]);\n formattedValue = this.options.formatter(this._state.value[1]);\n if (isNaN(formattedValue)) {\n this.handle2.setAttribute('aria-valuetext', formattedValue);\n } else {\n this.handle2.removeAttribute('aria-valuetext');\n }\n\n /* Position highlight range elements */\n if (this.rangeHighlightElements.length > 0 && Array.isArray(this.options.rangeHighlights) && this.options.rangeHighlights.length > 0) {\n for (var _i = 0; _i < this.options.rangeHighlights.length; _i++) {\n var startPercent = this._toPercentage(this.options.rangeHighlights[_i].start);\n var endPercent = this._toPercentage(this.options.rangeHighlights[_i].end);\n if (this.options.reversed) {\n var sp = 100 - endPercent;\n endPercent = 100 - startPercent;\n startPercent = sp;\n }\n var currentRange = this._createHighlightRange(startPercent, endPercent);\n if (currentRange) {\n if (this.options.orientation === 'vertical') {\n this.rangeHighlightElements[_i].style.top = currentRange.start + \"%\";\n this.rangeHighlightElements[_i].style.height = currentRange.size + \"%\";\n } else {\n if (this.options.rtl) {\n this.rangeHighlightElements[_i].style.right = currentRange.start + \"%\";\n } else {\n this.rangeHighlightElements[_i].style.left = currentRange.start + \"%\";\n }\n this.rangeHighlightElements[_i].style.width = currentRange.size + \"%\";\n }\n } else {\n this.rangeHighlightElements[_i].style.display = \"none\";\n }\n }\n }\n\n /* Position ticks and labels */\n if (Array.isArray(this.options.ticks) && this.options.ticks.length > 0) {\n var styleSize = this.options.orientation === 'vertical' ? 'height' : 'width';\n var styleMargin;\n if (this.options.orientation === 'vertical') {\n styleMargin = 'marginTop';\n } else {\n if (this.options.rtl) {\n styleMargin = 'marginRight';\n } else {\n styleMargin = 'marginLeft';\n }\n }\n var labelSize = this._state.size / (this.options.ticks.length - 1);\n if (this.tickLabelContainer) {\n var extraMargin = 0;\n if (this.options.ticks_positions.length === 0) {\n if (this.options.orientation !== 'vertical') {\n this.tickLabelContainer.style[styleMargin] = -labelSize / 2 + \"px\";\n }\n extraMargin = this.tickLabelContainer.offsetHeight;\n } else {\n /* Chidren are position absolute, calculate height by finding the max offsetHeight of a child */\n for (i = 0; i < this.tickLabelContainer.childNodes.length; i++) {\n if (this.tickLabelContainer.childNodes[i].offsetHeight > extraMargin) {\n extraMargin = this.tickLabelContainer.childNodes[i].offsetHeight;\n }\n }\n }\n if (this.options.orientation === 'horizontal') {\n this.sliderElem.style.marginBottom = extraMargin + \"px\";\n }\n }\n for (var i = 0; i < this.options.ticks.length; i++) {\n var percentage = this.options.ticks_positions[i] || this._toPercentage(this.options.ticks[i]);\n if (this.options.reversed) {\n percentage = 100 - percentage;\n }\n this.ticks[i].style[this.stylePos] = percentage + \"%\";\n\n /* Set class labels to denote whether ticks are in the selection */\n this._removeClass(this.ticks[i], 'in-selection');\n if (!this.options.range) {\n if (this.options.selection === 'after' && percentage >= positionPercentages[0]) {\n this._addClass(this.ticks[i], 'in-selection');\n } else if (this.options.selection === 'before' && percentage <= positionPercentages[0]) {\n this._addClass(this.ticks[i], 'in-selection');\n }\n } else if (percentage >= positionPercentages[0] && percentage <= positionPercentages[1]) {\n this._addClass(this.ticks[i], 'in-selection');\n }\n if (this.tickLabels[i]) {\n this.tickLabels[i].style[styleSize] = labelSize + \"px\";\n if (this.options.orientation !== 'vertical' && this.options.ticks_positions[i] !== undefined) {\n this.tickLabels[i].style.position = 'absolute';\n this.tickLabels[i].style[this.stylePos] = percentage + \"%\";\n this.tickLabels[i].style[styleMargin] = -labelSize / 2 + 'px';\n } else if (this.options.orientation === 'vertical') {\n if (this.options.rtl) {\n this.tickLabels[i].style['marginRight'] = this.sliderElem.offsetWidth + \"px\";\n } else {\n this.tickLabels[i].style['marginLeft'] = this.sliderElem.offsetWidth + \"px\";\n }\n this.tickLabelContainer.style[styleMargin] = this.sliderElem.offsetWidth / 2 * -1 + 'px';\n }\n\n /* Set class labels to indicate tick labels are in the selection or selected */\n this._removeClass(this.tickLabels[i], 'label-in-selection label-is-selection');\n if (!this.options.range) {\n if (this.options.selection === 'after' && percentage >= positionPercentages[0]) {\n this._addClass(this.tickLabels[i], 'label-in-selection');\n } else if (this.options.selection === 'before' && percentage <= positionPercentages[0]) {\n this._addClass(this.tickLabels[i], 'label-in-selection');\n }\n if (percentage === positionPercentages[0]) {\n this._addClass(this.tickLabels[i], 'label-is-selection');\n }\n } else if (percentage >= positionPercentages[0] && percentage <= positionPercentages[1]) {\n this._addClass(this.tickLabels[i], 'label-in-selection');\n if (percentage === positionPercentages[0] || positionPercentages[1]) {\n this._addClass(this.tickLabels[i], 'label-is-selection');\n }\n }\n }\n }\n }\n var formattedTooltipVal;\n if (this.options.range) {\n formattedTooltipVal = this.options.formatter(this._state.value);\n this._setText(this.tooltipInner, formattedTooltipVal);\n this.tooltip.style[this.stylePos] = (positionPercentages[1] + positionPercentages[0]) / 2 + \"%\";\n var innerTooltipMinText = this.options.formatter(this._state.value[0]);\n this._setText(this.tooltipInner_min, innerTooltipMinText);\n var innerTooltipMaxText = this.options.formatter(this._state.value[1]);\n this._setText(this.tooltipInner_max, innerTooltipMaxText);\n this.tooltip_min.style[this.stylePos] = positionPercentages[0] + \"%\";\n this.tooltip_max.style[this.stylePos] = positionPercentages[1] + \"%\";\n } else {\n formattedTooltipVal = this.options.formatter(this._state.value[0]);\n this._setText(this.tooltipInner, formattedTooltipVal);\n this.tooltip.style[this.stylePos] = positionPercentages[0] + \"%\";\n }\n if (this.options.orientation === 'vertical') {\n this.trackLow.style.top = '0';\n this.trackLow.style.height = Math.min(positionPercentages[0], positionPercentages[1]) + '%';\n this.trackSelection.style.top = Math.min(positionPercentages[0], positionPercentages[1]) + '%';\n this.trackSelection.style.height = Math.abs(positionPercentages[0] - positionPercentages[1]) + '%';\n this.trackHigh.style.bottom = '0';\n this.trackHigh.style.height = 100 - Math.min(positionPercentages[0], positionPercentages[1]) - Math.abs(positionPercentages[0] - positionPercentages[1]) + '%';\n } else {\n if (this.stylePos === 'right') {\n this.trackLow.style.right = '0';\n } else {\n this.trackLow.style.left = '0';\n }\n this.trackLow.style.width = Math.min(positionPercentages[0], positionPercentages[1]) + '%';\n if (this.stylePos === 'right') {\n this.trackSelection.style.right = Math.min(positionPercentages[0], positionPercentages[1]) + '%';\n } else {\n this.trackSelection.style.left = Math.min(positionPercentages[0], positionPercentages[1]) + '%';\n }\n this.trackSelection.style.width = Math.abs(positionPercentages[0] - positionPercentages[1]) + '%';\n if (this.stylePos === 'right') {\n this.trackHigh.style.left = '0';\n } else {\n this.trackHigh.style.right = '0';\n }\n this.trackHigh.style.width = 100 - Math.min(positionPercentages[0], positionPercentages[1]) - Math.abs(positionPercentages[0] - positionPercentages[1]) + '%';\n var offset_min = this.tooltip_min.getBoundingClientRect();\n var offset_max = this.tooltip_max.getBoundingClientRect();\n if (this.options.tooltip_position === 'bottom') {\n if (offset_min.right > offset_max.left) {\n this._removeClass(this.tooltip_max, 'bs-tooltip-bottom');\n this._addClass(this.tooltip_max, 'bs-tooltip-top');\n this.tooltip_max.style.top = '';\n this.tooltip_max.style.bottom = 22 + 'px';\n } else {\n this._removeClass(this.tooltip_max, 'bs-tooltip-top');\n this._addClass(this.tooltip_max, 'bs-tooltip-bottom');\n this.tooltip_max.style.top = this.tooltip_min.style.top;\n this.tooltip_max.style.bottom = '';\n }\n } else {\n if (offset_min.right > offset_max.left) {\n this._removeClass(this.tooltip_max, 'bs-tooltip-top');\n this._addClass(this.tooltip_max, 'bs-tooltip-bottom');\n this.tooltip_max.style.top = 18 + 'px';\n } else {\n this._removeClass(this.tooltip_max, 'bs-tooltip-bottom');\n this._addClass(this.tooltip_max, 'bs-tooltip-top');\n this.tooltip_max.style.top = this.tooltip_min.style.top;\n }\n }\n }\n },\n _createHighlightRange: function _createHighlightRange(start, end) {\n if (this._isHighlightRange(start, end)) {\n if (start > end) {\n return {\n 'start': end,\n 'size': start - end\n };\n }\n return {\n 'start': start,\n 'size': end - start\n };\n }\n return null;\n },\n _isHighlightRange: function _isHighlightRange(start, end) {\n if (0 <= start && start <= 100 && 0 <= end && end <= 100) {\n return true;\n } else {\n return false;\n }\n },\n _resize: function _resize(ev) {\n /*jshint unused:false*/\n this._state.offset = this._offset(this.sliderElem);\n this._state.size = this.sliderElem[this.sizePos];\n this._layout();\n },\n _removeProperty: function _removeProperty(element, prop) {\n if (element.style.removeProperty) {\n element.style.removeProperty(prop);\n } else {\n element.style.removeAttribute(prop);\n }\n },\n _mousedown: function _mousedown(ev) {\n if (!this._state.enabled) {\n return false;\n }\n if (ev.preventDefault) {\n ev.preventDefault();\n }\n this._state.offset = this._offset(this.sliderElem);\n this._state.size = this.sliderElem[this.sizePos];\n var percentage = this._getPercentage(ev);\n if (this.options.range) {\n var diff1 = Math.abs(this._state.percentage[0] - percentage);\n var diff2 = Math.abs(this._state.percentage[1] - percentage);\n this._state.dragged = diff1 < diff2 ? 0 : 1;\n this._adjustPercentageForRangeSliders(percentage);\n } else {\n this._state.dragged = 0;\n }\n this._state.percentage[this._state.dragged] = percentage;\n if (this.touchCapable) {\n document.removeEventListener(\"touchmove\", this.mousemove, false);\n document.removeEventListener(\"touchend\", this.mouseup, false);\n }\n if (this.mousemove) {\n document.removeEventListener(\"mousemove\", this.mousemove, false);\n }\n if (this.mouseup) {\n document.removeEventListener(\"mouseup\", this.mouseup, false);\n }\n this.mousemove = this._mousemove.bind(this);\n this.mouseup = this._mouseup.bind(this);\n if (this.touchCapable) {\n // Touch: Bind touch events:\n document.addEventListener(\"touchmove\", this.mousemove, false);\n document.addEventListener(\"touchend\", this.mouseup, false);\n }\n // Bind mouse events:\n document.addEventListener(\"mousemove\", this.mousemove, false);\n document.addEventListener(\"mouseup\", this.mouseup, false);\n this._state.inDrag = true;\n var newValue = this._calculateValue();\n this._trigger('slideStart', newValue);\n this.setValue(newValue, false, true);\n ev.returnValue = false;\n if (this.options.focus) {\n this._triggerFocusOnHandle(this._state.dragged);\n }\n return true;\n },\n _touchstart: function _touchstart(ev) {\n this._mousedown(ev);\n },\n _triggerFocusOnHandle: function _triggerFocusOnHandle(handleIdx) {\n if (handleIdx === 0) {\n this.handle1.focus();\n }\n if (handleIdx === 1) {\n this.handle2.focus();\n }\n },\n _keydown: function _keydown(handleIdx, ev) {\n if (!this._state.enabled) {\n return false;\n }\n var dir;\n switch (ev.keyCode) {\n case 37: // left\n case 40:\n // down\n dir = -1;\n break;\n case 39: // right\n case 38:\n // up\n dir = 1;\n break;\n }\n if (!dir) {\n return;\n }\n\n // use natural arrow keys instead of from min to max\n if (this.options.natural_arrow_keys) {\n var isHorizontal = this.options.orientation === 'horizontal';\n var isVertical = this.options.orientation === 'vertical';\n var isRTL = this.options.rtl;\n var isReversed = this.options.reversed;\n if (isHorizontal) {\n if (isRTL) {\n if (!isReversed) {\n dir = -dir;\n }\n } else {\n if (isReversed) {\n dir = -dir;\n }\n }\n } else if (isVertical) {\n if (!isReversed) {\n dir = -dir;\n }\n }\n }\n var val;\n if (this.ticksAreValid && this.options.lock_to_ticks) {\n var index = void 0;\n // Find tick index that handle 1/2 is currently on\n index = this.options.ticks.indexOf(this._state.value[handleIdx]);\n if (index === -1) {\n // Set default to first tick\n index = 0;\n window.console.warn('(lock_to_ticks) _keydown: index should not be -1');\n }\n index += dir;\n index = Math.max(0, Math.min(this.options.ticks.length - 1, index));\n val = this.options.ticks[index];\n } else {\n val = this._state.value[handleIdx] + dir * this.options.step;\n }\n var percentage = this._toPercentage(val);\n this._state.keyCtrl = handleIdx;\n if (this.options.range) {\n this._adjustPercentageForRangeSliders(percentage);\n var val1 = !this._state.keyCtrl ? val : this._state.value[0];\n var val2 = this._state.keyCtrl ? val : this._state.value[1];\n // Restrict values within limits\n val = [Math.max(this.options.min, Math.min(this.options.max, val1)), Math.max(this.options.min, Math.min(this.options.max, val2))];\n } else {\n val = Math.max(this.options.min, Math.min(this.options.max, val));\n }\n this._trigger('slideStart', val);\n this.setValue(val, true, true);\n this._trigger('slideStop', val);\n this._pauseEvent(ev);\n delete this._state.keyCtrl;\n return false;\n },\n _pauseEvent: function _pauseEvent(ev) {\n if (ev.stopPropagation) {\n ev.stopPropagation();\n }\n if (ev.preventDefault) {\n ev.preventDefault();\n }\n ev.cancelBubble = true;\n ev.returnValue = false;\n },\n _mousemove: function _mousemove(ev) {\n if (!this._state.enabled) {\n return false;\n }\n var percentage = this._getPercentage(ev);\n this._adjustPercentageForRangeSliders(percentage);\n this._state.percentage[this._state.dragged] = percentage;\n var val = this._calculateValue(true);\n this.setValue(val, true, true);\n return false;\n },\n _touchmove: function _touchmove(ev) {\n if (ev.changedTouches === undefined) {\n return;\n }\n\n // Prevent page from scrolling and only drag the slider\n if (ev.preventDefault) {\n ev.preventDefault();\n }\n },\n _adjustPercentageForRangeSliders: function _adjustPercentageForRangeSliders(percentage) {\n if (this.options.range) {\n var precision = this._getNumDigitsAfterDecimalPlace(percentage);\n precision = precision ? precision - 1 : 0;\n var percentageWithAdjustedPrecision = this._applyToFixedAndParseFloat(percentage, precision);\n if (this._state.dragged === 0 && this._applyToFixedAndParseFloat(this._state.percentage[1], precision) < percentageWithAdjustedPrecision) {\n this._state.percentage[0] = this._state.percentage[1];\n this._state.dragged = 1;\n } else if (this._state.dragged === 1 && this._applyToFixedAndParseFloat(this._state.percentage[0], precision) > percentageWithAdjustedPrecision) {\n this._state.percentage[1] = this._state.percentage[0];\n this._state.dragged = 0;\n } else if (this._state.keyCtrl === 0 && this._toPercentage(this._state.value[1]) < percentage) {\n this._state.percentage[0] = this._state.percentage[1];\n this._state.keyCtrl = 1;\n this.handle2.focus();\n } else if (this._state.keyCtrl === 1 && this._toPercentage(this._state.value[0]) > percentage) {\n this._state.percentage[1] = this._state.percentage[0];\n this._state.keyCtrl = 0;\n this.handle1.focus();\n }\n }\n },\n _mouseup: function _mouseup(ev) {\n if (!this._state.enabled) {\n return false;\n }\n var percentage = this._getPercentage(ev);\n this._adjustPercentageForRangeSliders(percentage);\n this._state.percentage[this._state.dragged] = percentage;\n if (this.touchCapable) {\n // Touch: Unbind touch event handlers:\n document.removeEventListener(\"touchmove\", this.mousemove, false);\n document.removeEventListener(\"touchend\", this.mouseup, false);\n }\n // Unbind mouse event handlers:\n document.removeEventListener(\"mousemove\", this.mousemove, false);\n document.removeEventListener(\"mouseup\", this.mouseup, false);\n this._state.inDrag = false;\n if (this._state.over === false) {\n this._hideTooltip();\n }\n var val = this._calculateValue(true);\n this.setValue(val, false, true);\n this._trigger('slideStop', val);\n\n // No longer need 'dragged' after mouse up\n this._state.dragged = null;\n return false;\n },\n _setValues: function _setValues(index, val) {\n var comp = 0 === index ? 0 : 100;\n if (this._state.percentage[index] !== comp) {\n val.data[index] = this._toValue(this._state.percentage[index]);\n val.data[index] = this._applyPrecision(val.data[index]);\n }\n },\n _calculateValue: function _calculateValue(snapToClosestTick) {\n var val = {};\n if (this.options.range) {\n val.data = [this.options.min, this.options.max];\n this._setValues(0, val);\n this._setValues(1, val);\n if (snapToClosestTick) {\n val.data[0] = this._snapToClosestTick(val.data[0]);\n val.data[1] = this._snapToClosestTick(val.data[1]);\n }\n } else {\n val.data = this._toValue(this._state.percentage[0]);\n val.data = parseFloat(val.data);\n val.data = this._applyPrecision(val.data);\n if (snapToClosestTick) {\n val.data = this._snapToClosestTick(val.data);\n }\n }\n return val.data;\n },\n _snapToClosestTick: function _snapToClosestTick(val) {\n var min = [val, Infinity];\n for (var i = 0; i < this.options.ticks.length; i++) {\n var diff = Math.abs(this.options.ticks[i] - val);\n if (diff <= min[1]) {\n min = [this.options.ticks[i], diff];\n }\n }\n if (min[1] <= this.options.ticks_snap_bounds) {\n return min[0];\n }\n return val;\n },\n _applyPrecision: function _applyPrecision(val) {\n var precision = this.options.precision || this._getNumDigitsAfterDecimalPlace(this.options.step);\n return this._applyToFixedAndParseFloat(val, precision);\n },\n _getNumDigitsAfterDecimalPlace: function _getNumDigitsAfterDecimalPlace(num) {\n var match = ('' + num).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n if (!match) {\n return 0;\n }\n return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0));\n },\n _applyToFixedAndParseFloat: function _applyToFixedAndParseFloat(num, toFixedInput) {\n var truncatedNum = num.toFixed(toFixedInput);\n return parseFloat(truncatedNum);\n },\n /*\n \tCredits to Mike Samuel for the following method!\n \tSource: http://stackoverflow.com/questions/10454518/javascript-how-to-retrieve-the-number-of-decimals-of-a-string-number\n */\n _getPercentage: function _getPercentage(ev) {\n if (this.touchCapable && (ev.type === 'touchstart' || ev.type === 'touchmove' || ev.type === 'touchend')) {\n ev = ev.changedTouches[0];\n }\n var eventPosition = ev[this.mousePos];\n var sliderOffset = this._state.offset[this.stylePos];\n var distanceToSlide = eventPosition - sliderOffset;\n if (this.stylePos === 'right') {\n distanceToSlide = -distanceToSlide;\n }\n // Calculate what percent of the length the slider handle has slid\n var percentage = distanceToSlide / this._state.size * 100;\n percentage = Math.round(percentage / this._state.percentage[2]) * this._state.percentage[2];\n if (this.options.reversed) {\n percentage = 100 - percentage;\n }\n\n // Make sure the percent is within the bounds of the slider.\n // 0% corresponds to the 'min' value of the slide\n // 100% corresponds to the 'max' value of the slide\n return Math.max(0, Math.min(100, percentage));\n },\n _validateInputValue: function _validateInputValue(val) {\n if (!isNaN(+val)) {\n return +val;\n } else if (Array.isArray(val)) {\n this._validateArray(val);\n return val;\n } else {\n throw new Error(ErrorMsgs.formatInvalidInputErrorMsg(val));\n }\n },\n _validateArray: function _validateArray(val) {\n for (var i = 0; i < val.length; i++) {\n var input = val[i];\n if (typeof input !== 'number') {\n throw new Error(ErrorMsgs.formatInvalidInputErrorMsg(input));\n }\n }\n },\n _setDataVal: function _setDataVal(val) {\n this.element.setAttribute('data-value', val);\n this.element.setAttribute('value', val);\n this.element.value = val;\n },\n _trigger: function _trigger(evt, val) {\n val = val || val === 0 ? val : undefined;\n var callbackFnArray = this.eventToCallbackMap[evt];\n if (callbackFnArray && callbackFnArray.length) {\n for (var i = 0; i < callbackFnArray.length; i++) {\n var callbackFn = callbackFnArray[i];\n callbackFn(val);\n }\n }\n\n /* If JQuery exists, trigger JQuery events */\n if ($) {\n this._triggerJQueryEvent(evt, val);\n }\n },\n _triggerJQueryEvent: function _triggerJQueryEvent(evt, val) {\n var eventData = {\n type: evt,\n value: val\n };\n this.$element.trigger(eventData);\n this.$sliderElem.trigger(eventData);\n },\n _unbindJQueryEventHandlers: function _unbindJQueryEventHandlers() {\n this.$element.off();\n this.$sliderElem.off();\n },\n _setText: function _setText(element, text) {\n if (typeof element.textContent !== \"undefined\") {\n element.textContent = text;\n } else if (typeof element.innerText !== \"undefined\") {\n element.innerText = text;\n }\n },\n _removeClass: function _removeClass(element, classString) {\n var classes = classString.split(\" \");\n var newClasses = element.className;\n for (var i = 0; i < classes.length; i++) {\n var classTag = classes[i];\n var regex = new RegExp(\"(?:\\\\s|^)\" + classTag + \"(?:\\\\s|$)\");\n newClasses = newClasses.replace(regex, \" \");\n }\n element.className = newClasses.trim();\n },\n _addClass: function _addClass(element, classString) {\n var classes = classString.split(\" \");\n var newClasses = element.className;\n for (var i = 0; i < classes.length; i++) {\n var classTag = classes[i];\n var regex = new RegExp(\"(?:\\\\s|^)\" + classTag + \"(?:\\\\s|$)\");\n var ifClassExists = regex.test(newClasses);\n if (!ifClassExists) {\n newClasses += \" \" + classTag;\n }\n }\n element.className = newClasses.trim();\n },\n _offsetLeft: function _offsetLeft(obj) {\n return obj.getBoundingClientRect().left;\n },\n _offsetRight: function _offsetRight(obj) {\n return obj.getBoundingClientRect().right;\n },\n _offsetTop: function _offsetTop(obj) {\n var offsetTop = obj.offsetTop;\n while ((obj = obj.offsetParent) && !isNaN(obj.offsetTop)) {\n offsetTop += obj.offsetTop;\n if (obj.tagName !== 'BODY') {\n offsetTop -= obj.scrollTop;\n }\n }\n return offsetTop;\n },\n _offset: function _offset(obj) {\n return {\n left: this._offsetLeft(obj),\n right: this._offsetRight(obj),\n top: this._offsetTop(obj)\n };\n },\n _css: function _css(elementRef, styleName, value) {\n if ($) {\n $.style(elementRef, styleName, value);\n } else {\n var style = styleName.replace(/^-ms-/, \"ms-\").replace(/-([\\da-z])/gi, function (all, letter) {\n return letter.toUpperCase();\n });\n elementRef.style[style] = value;\n }\n },\n _toValue: function _toValue(percentage) {\n return this.options.scale.toValue.apply(this, [percentage]);\n },\n _toPercentage: function _toPercentage(value) {\n return this.options.scale.toPercentage.apply(this, [value]);\n },\n _setTooltipPosition: function _setTooltipPosition() {\n var tooltips = [this.tooltip, this.tooltip_min, this.tooltip_max];\n if (this.options.orientation === 'vertical') {\n var tooltipPos;\n if (this.options.tooltip_position) {\n tooltipPos = this.options.tooltip_position;\n } else {\n if (this.options.rtl) {\n tooltipPos = 'left';\n } else {\n tooltipPos = 'right';\n }\n }\n var oppositeSide = tooltipPos === 'left' ? 'right' : 'left';\n tooltips.forEach(function (tooltip) {\n this._addClass(tooltip, 'bs-tooltip-' + tooltipPos);\n tooltip.style[oppositeSide] = '100%';\n }.bind(this));\n } else if (this.options.tooltip_position === 'bottom') {\n tooltips.forEach(function (tooltip) {\n this._addClass(tooltip, 'bs-tooltip-bottom');\n tooltip.style.top = 22 + 'px';\n }.bind(this));\n } else {\n tooltips.forEach(function (tooltip) {\n this._addClass(tooltip, 'bs-tooltip-top');\n tooltip.style.top = -this.tooltip.outerHeight - 14 + 'px';\n }.bind(this));\n }\n },\n _getClosestTickIndex: function _getClosestTickIndex(val) {\n var difference = Math.abs(val - this.options.ticks[0]);\n var index = 0;\n for (var i = 0; i < this.options.ticks.length; ++i) {\n var d = Math.abs(val - this.options.ticks[i]);\n if (d < difference) {\n difference = d;\n index = i;\n }\n }\n return index;\n },\n /**\n * Attempts to find the index in `ticks[]` the slider values are set at.\n * The indexes can be -1 to indicate the slider value is not set at a value in `ticks[]`.\n */\n _setTickIndex: function _setTickIndex() {\n if (this.ticksAreValid) {\n this._state.tickIndex = [this.options.ticks.indexOf(this._state.value[0]), this.options.ticks.indexOf(this._state.value[1])];\n }\n }\n };\n\n /*********************************\n \t\tAttach to global namespace\n \t*********************************/\n if ($ && $.fn) {\n if (!$.fn.slider) {\n $.bridget(NAMESPACE_MAIN, Slider);\n autoRegisterNamespace = NAMESPACE_MAIN;\n } else {\n if (windowIsDefined) {\n window.console.warn(\"bootstrap-slider.js - WARNING: $.fn.slider namespace is already bound. Use the $.fn.bootstrapSlider namespace instead.\");\n }\n autoRegisterNamespace = NAMESPACE_ALTERNATE;\n }\n $.bridget(NAMESPACE_ALTERNATE, Slider);\n\n // Auto-Register data-provide=\"slider\" Elements\n $(function () {\n $(\"input[data-provide=slider]\")[autoRegisterNamespace]();\n });\n }\n })($);\n return Slider;\n});","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n module.paths = [];\n // module.parent = undefined by default\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function () {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function () {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n return module;\n};","var map = {\n\t\"./af\": 10,\n\t\"./af.js\": 10,\n\t\"./ar\": 11,\n\t\"./ar-dz\": 12,\n\t\"./ar-dz.js\": 12,\n\t\"./ar-kw\": 13,\n\t\"./ar-kw.js\": 13,\n\t\"./ar-ly\": 14,\n\t\"./ar-ly.js\": 14,\n\t\"./ar-ma\": 15,\n\t\"./ar-ma.js\": 15,\n\t\"./ar-ps\": 16,\n\t\"./ar-ps.js\": 16,\n\t\"./ar-sa\": 17,\n\t\"./ar-sa.js\": 17,\n\t\"./ar-tn\": 18,\n\t\"./ar-tn.js\": 18,\n\t\"./ar.js\": 11,\n\t\"./az\": 19,\n\t\"./az.js\": 19,\n\t\"./be\": 20,\n\t\"./be.js\": 20,\n\t\"./bg\": 21,\n\t\"./bg.js\": 21,\n\t\"./bm\": 22,\n\t\"./bm.js\": 22,\n\t\"./bn\": 23,\n\t\"./bn-bd\": 24,\n\t\"./bn-bd.js\": 24,\n\t\"./bn.js\": 23,\n\t\"./bo\": 25,\n\t\"./bo.js\": 25,\n\t\"./br\": 26,\n\t\"./br.js\": 26,\n\t\"./bs\": 27,\n\t\"./bs.js\": 27,\n\t\"./ca\": 28,\n\t\"./ca.js\": 28,\n\t\"./cs\": 29,\n\t\"./cs.js\": 29,\n\t\"./cv\": 30,\n\t\"./cv.js\": 30,\n\t\"./cy\": 31,\n\t\"./cy.js\": 31,\n\t\"./da\": 32,\n\t\"./da.js\": 32,\n\t\"./de\": 33,\n\t\"./de-at\": 34,\n\t\"./de-at.js\": 34,\n\t\"./de-ch\": 35,\n\t\"./de-ch.js\": 35,\n\t\"./de.js\": 33,\n\t\"./dv\": 36,\n\t\"./dv.js\": 36,\n\t\"./el\": 37,\n\t\"./el.js\": 37,\n\t\"./en-au\": 38,\n\t\"./en-au.js\": 38,\n\t\"./en-ca\": 39,\n\t\"./en-ca.js\": 39,\n\t\"./en-gb\": 40,\n\t\"./en-gb.js\": 40,\n\t\"./en-ie\": 41,\n\t\"./en-ie.js\": 41,\n\t\"./en-il\": 42,\n\t\"./en-il.js\": 42,\n\t\"./en-in\": 43,\n\t\"./en-in.js\": 43,\n\t\"./en-nz\": 44,\n\t\"./en-nz.js\": 44,\n\t\"./en-sg\": 45,\n\t\"./en-sg.js\": 45,\n\t\"./eo\": 46,\n\t\"./eo.js\": 46,\n\t\"./es\": 47,\n\t\"./es-do\": 48,\n\t\"./es-do.js\": 48,\n\t\"./es-mx\": 49,\n\t\"./es-mx.js\": 49,\n\t\"./es-us\": 50,\n\t\"./es-us.js\": 50,\n\t\"./es.js\": 47,\n\t\"./et\": 51,\n\t\"./et.js\": 51,\n\t\"./eu\": 52,\n\t\"./eu.js\": 52,\n\t\"./fa\": 53,\n\t\"./fa.js\": 53,\n\t\"./fi\": 54,\n\t\"./fi.js\": 54,\n\t\"./fil\": 55,\n\t\"./fil.js\": 55,\n\t\"./fo\": 56,\n\t\"./fo.js\": 56,\n\t\"./fr\": 57,\n\t\"./fr-ca\": 58,\n\t\"./fr-ca.js\": 58,\n\t\"./fr-ch\": 59,\n\t\"./fr-ch.js\": 59,\n\t\"./fr.js\": 57,\n\t\"./fy\": 60,\n\t\"./fy.js\": 60,\n\t\"./ga\": 61,\n\t\"./ga.js\": 61,\n\t\"./gd\": 62,\n\t\"./gd.js\": 62,\n\t\"./gl\": 63,\n\t\"./gl.js\": 63,\n\t\"./gom-deva\": 64,\n\t\"./gom-deva.js\": 64,\n\t\"./gom-latn\": 65,\n\t\"./gom-latn.js\": 65,\n\t\"./gu\": 66,\n\t\"./gu.js\": 66,\n\t\"./he\": 67,\n\t\"./he.js\": 67,\n\t\"./hi\": 68,\n\t\"./hi.js\": 68,\n\t\"./hr\": 69,\n\t\"./hr.js\": 69,\n\t\"./hu\": 70,\n\t\"./hu.js\": 70,\n\t\"./hy-am\": 71,\n\t\"./hy-am.js\": 71,\n\t\"./id\": 72,\n\t\"./id.js\": 72,\n\t\"./is\": 73,\n\t\"./is.js\": 73,\n\t\"./it\": 74,\n\t\"./it-ch\": 75,\n\t\"./it-ch.js\": 75,\n\t\"./it.js\": 74,\n\t\"./ja\": 76,\n\t\"./ja.js\": 76,\n\t\"./jv\": 77,\n\t\"./jv.js\": 77,\n\t\"./ka\": 78,\n\t\"./ka.js\": 78,\n\t\"./kk\": 79,\n\t\"./kk.js\": 79,\n\t\"./km\": 80,\n\t\"./km.js\": 80,\n\t\"./kn\": 81,\n\t\"./kn.js\": 81,\n\t\"./ko\": 82,\n\t\"./ko.js\": 82,\n\t\"./ku\": 83,\n\t\"./ku-kmr\": 84,\n\t\"./ku-kmr.js\": 84,\n\t\"./ku.js\": 83,\n\t\"./ky\": 85,\n\t\"./ky.js\": 85,\n\t\"./lb\": 86,\n\t\"./lb.js\": 86,\n\t\"./lo\": 87,\n\t\"./lo.js\": 87,\n\t\"./lt\": 88,\n\t\"./lt.js\": 88,\n\t\"./lv\": 89,\n\t\"./lv.js\": 89,\n\t\"./me\": 90,\n\t\"./me.js\": 90,\n\t\"./mi\": 91,\n\t\"./mi.js\": 91,\n\t\"./mk\": 92,\n\t\"./mk.js\": 92,\n\t\"./ml\": 93,\n\t\"./ml.js\": 93,\n\t\"./mn\": 94,\n\t\"./mn.js\": 94,\n\t\"./mr\": 95,\n\t\"./mr.js\": 95,\n\t\"./ms\": 96,\n\t\"./ms-my\": 97,\n\t\"./ms-my.js\": 97,\n\t\"./ms.js\": 96,\n\t\"./mt\": 98,\n\t\"./mt.js\": 98,\n\t\"./my\": 99,\n\t\"./my.js\": 99,\n\t\"./nb\": 100,\n\t\"./nb.js\": 100,\n\t\"./ne\": 101,\n\t\"./ne.js\": 101,\n\t\"./nl\": 102,\n\t\"./nl-be\": 103,\n\t\"./nl-be.js\": 103,\n\t\"./nl.js\": 102,\n\t\"./nn\": 104,\n\t\"./nn.js\": 104,\n\t\"./oc-lnc\": 105,\n\t\"./oc-lnc.js\": 105,\n\t\"./pa-in\": 106,\n\t\"./pa-in.js\": 106,\n\t\"./pl\": 107,\n\t\"./pl.js\": 107,\n\t\"./pt\": 108,\n\t\"./pt-br\": 109,\n\t\"./pt-br.js\": 109,\n\t\"./pt.js\": 108,\n\t\"./ro\": 110,\n\t\"./ro.js\": 110,\n\t\"./ru\": 111,\n\t\"./ru.js\": 111,\n\t\"./sd\": 112,\n\t\"./sd.js\": 112,\n\t\"./se\": 113,\n\t\"./se.js\": 113,\n\t\"./si\": 114,\n\t\"./si.js\": 114,\n\t\"./sk\": 115,\n\t\"./sk.js\": 115,\n\t\"./sl\": 116,\n\t\"./sl.js\": 116,\n\t\"./sq\": 117,\n\t\"./sq.js\": 117,\n\t\"./sr\": 118,\n\t\"./sr-cyrl\": 119,\n\t\"./sr-cyrl.js\": 119,\n\t\"./sr.js\": 118,\n\t\"./ss\": 120,\n\t\"./ss.js\": 120,\n\t\"./sv\": 121,\n\t\"./sv.js\": 121,\n\t\"./sw\": 122,\n\t\"./sw.js\": 122,\n\t\"./ta\": 123,\n\t\"./ta.js\": 123,\n\t\"./te\": 124,\n\t\"./te.js\": 124,\n\t\"./tet\": 125,\n\t\"./tet.js\": 125,\n\t\"./tg\": 126,\n\t\"./tg.js\": 126,\n\t\"./th\": 127,\n\t\"./th.js\": 127,\n\t\"./tk\": 128,\n\t\"./tk.js\": 128,\n\t\"./tl-ph\": 129,\n\t\"./tl-ph.js\": 129,\n\t\"./tlh\": 130,\n\t\"./tlh.js\": 130,\n\t\"./tr\": 131,\n\t\"./tr.js\": 131,\n\t\"./tzl\": 132,\n\t\"./tzl.js\": 132,\n\t\"./tzm\": 133,\n\t\"./tzm-latn\": 134,\n\t\"./tzm-latn.js\": 134,\n\t\"./tzm.js\": 133,\n\t\"./ug-cn\": 135,\n\t\"./ug-cn.js\": 135,\n\t\"./uk\": 136,\n\t\"./uk.js\": 136,\n\t\"./ur\": 137,\n\t\"./ur.js\": 137,\n\t\"./uz\": 138,\n\t\"./uz-latn\": 139,\n\t\"./uz-latn.js\": 139,\n\t\"./uz.js\": 138,\n\t\"./vi\": 140,\n\t\"./vi.js\": 140,\n\t\"./x-pseudo\": 141,\n\t\"./x-pseudo.js\": 141,\n\t\"./yo\": 142,\n\t\"./yo.js\": 142,\n\t\"./zh-cn\": 143,\n\t\"./zh-cn.js\": 143,\n\t\"./zh-hk\": 144,\n\t\"./zh-hk.js\": 144,\n\t\"./zh-mo\": 145,\n\t\"./zh-mo.js\": 145,\n\t\"./zh-tw\": 146,\n\t\"./zh-tw.js\": 146\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 158;","(function ($) {\n var cocoon_element_counter = 0;\n var create_new_id = function () {\n return new Date().getTime() + cocoon_element_counter++;\n };\n var newcontent_braced = function (id) {\n return '[' + id + ']$1';\n };\n var newcontent_underscord = function (id) {\n return '_' + id + '_$1';\n };\n var getInsertionNodeElem = function (insertionNode, insertionTraversal, $this) {\n if (!insertionNode) {\n return $this.parent();\n }\n if (typeof insertionNode == 'function') {\n if (insertionTraversal) {\n console.warn('association-insertion-traversal is ignored, because association-insertion-node is given as a function.');\n }\n return insertionNode($this);\n }\n if (typeof insertionNode == 'string') {\n if (insertionTraversal) {\n return $this[insertionTraversal](insertionNode);\n } else {\n return insertionNode == \"this\" ? $this : $(insertionNode);\n }\n }\n };\n $(document).on('click', '.add_fields', function (e) {\n e.preventDefault();\n e.stopPropagation();\n var $this = $(this),\n assoc = $this.data('association'),\n assocs = $this.data('associations'),\n content = $this.data('association-insertion-template'),\n insertionMethod = $this.data('association-insertion-method') || $this.data('association-insertion-position') || 'before',\n insertionNode = $this.data('association-insertion-node'),\n insertionTraversal = $this.data('association-insertion-traversal'),\n count = parseInt($this.data('count'), 10),\n regexp_braced = new RegExp('\\\\[new_' + assoc + '\\\\](.*?\\\\s)', 'g'),\n regexp_underscord = new RegExp('_new_' + assoc + '_(\\\\w*)', 'g'),\n new_id = create_new_id(),\n new_content = content.replace(regexp_braced, newcontent_braced(new_id)),\n new_contents = [],\n originalEvent = e;\n if (new_content == content) {\n regexp_braced = new RegExp('\\\\[new_' + assocs + '\\\\](.*?\\\\s)', 'g');\n regexp_underscord = new RegExp('_new_' + assocs + '_(\\\\w*)', 'g');\n new_content = content.replace(regexp_braced, newcontent_braced(new_id));\n }\n new_content = new_content.replace(regexp_underscord, newcontent_underscord(new_id));\n new_contents = [new_content];\n count = isNaN(count) ? 1 : Math.max(count, 1);\n count -= 1;\n while (count) {\n new_id = create_new_id();\n new_content = content.replace(regexp_braced, newcontent_braced(new_id));\n new_content = new_content.replace(regexp_underscord, newcontent_underscord(new_id));\n new_contents.push(new_content);\n count -= 1;\n }\n var insertionNodeElem = getInsertionNodeElem(insertionNode, insertionTraversal, $this);\n if (!insertionNodeElem || insertionNodeElem.length == 0) {\n console.warn(\"Couldn't find the element to insert the template. Make sure your `data-association-insertion-*` on `link_to_add_association` is correct.\");\n }\n $.each(new_contents, function (i, node) {\n var contentNode = $(node);\n var before_insert = jQuery.Event('cocoon:before-insert');\n insertionNodeElem.trigger(before_insert, [contentNode, originalEvent]);\n if (!before_insert.isDefaultPrevented()) {\n // allow any of the jquery dom manipulation methods (after, before, append, prepend, etc)\n // to be called on the node. allows the insertion node to be the parent of the inserted\n // code and doesn't force it to be a sibling like after/before does. default: 'before'\n var addedContent = insertionNodeElem[insertionMethod](contentNode);\n insertionNodeElem.trigger('cocoon:after-insert', [contentNode, originalEvent]);\n }\n });\n });\n $(document).on('click', '.remove_fields.dynamic, .remove_fields.existing', function (e) {\n var $this = $(this),\n wrapper_class = $this.data('wrapper-class') || 'nested-fields',\n node_to_delete = $this.closest('.' + wrapper_class),\n trigger_node = node_to_delete.parent(),\n originalEvent = e;\n e.preventDefault();\n e.stopPropagation();\n var before_remove = jQuery.Event('cocoon:before-remove');\n trigger_node.trigger(before_remove, [node_to_delete, originalEvent]);\n if (!before_remove.isDefaultPrevented()) {\n var timeout = trigger_node.data('remove-timeout') || 0;\n setTimeout(function () {\n if ($this.hasClass('dynamic')) {\n node_to_delete.detach();\n } else {\n $this.prev(\"input[type=hidden]\").val(\"1\");\n node_to_delete.hide();\n }\n trigger_node.trigger('cocoon:after-remove', [node_to_delete, originalEvent]);\n }, timeout);\n }\n });\n $(document).on(\"ready page:load turbolinks:load\", function () {\n $('.remove_fields.existing.destroyed').each(function (i, obj) {\n var $this = $(this),\n wrapper_class = $this.data('wrapper-class') || 'nested-fields';\n $this.closest('.' + wrapper_class).hide();\n });\n });\n})(jQuery);","var $ = require('jquery');\nvar EnjoyHint = function (_options) {\n var that = this;\n // Some options\n var defaults = {\n onStart: function () {},\n onEnd: function () {},\n onSkip: function () {}\n };\n var options = $.extend(defaults, _options);\n var data = [];\n var current_step = 0;\n $body = $('body');\n\n /********************* PRIVATE METHODS ***************************************/\n var init = function () {\n if ($('.enjoyhint')) $('.enjoyhint').remove();\n $('body').css({\n 'overflow': 'hidden'\n });\n $(document).on(\"touchmove\", lockTouch);\n $body.enjoyhint({\n onNextClick: function () {\n nextStep();\n },\n onSkipClick: function () {\n skipAll();\n }\n });\n };\n var lockTouch = function (e) {\n e.preventDefault();\n };\n var destroyEnjoy = function () {\n $body = $('body');\n $('.enjoyhint').remove();\n $(\"body\").css({\n 'overflow': 'auto'\n });\n $(document).off(\"touchmove\", lockTouch);\n };\n that.clear = function () {\n //(Remove userClass and set default text)\n $(\".enjoyhint_next_btn\").removeClass(that.nextUserClass);\n $(\".enjoyhint_next_btn\").text(\"Next\");\n $(\".enjoyhint_skip_btn\").removeClass(that.skipUserClass);\n $(\".enjoyhint_skip_btn\").text(\"Skip\");\n };\n var $body = $('body');\n var stepAction = function () {\n if (data && data[current_step]) {\n $(\".enjoyhint\").removeClass(\"enjoyhint-step-\" + current_step);\n $(\".enjoyhint\").addClass(\"enjoyhint-step-\" + (current_step + 1));\n var step_data = data[current_step];\n if (step_data.onBeforeStart && typeof step_data.onBeforeStart === 'function') {\n step_data.onBeforeStart();\n }\n var timeout = step_data.timeout || 0;\n setTimeout(function () {\n if (!step_data.selector) {\n for (var prop in step_data) {\n if (step_data.hasOwnProperty(prop) && prop.split(\" \")[1]) {\n var space_index = prop.indexOf(\" \");\n step_data.event = prop.slice(0, space_index);\n step_data.selector = prop.slice(space_index + 1);\n if (step_data.event == 'next' || step_data.event == 'auto' || step_data.event == 'custom') {\n step_data.event_type = step_data.event;\n }\n step_data.description = step_data[prop];\n }\n }\n }\n setTimeout(function () {\n that.clear();\n }, 250);\n $(document.body).scrollTo(step_data.selector, step_data.scrollAnimationSpeed || 250, {\n offset: -100\n });\n setTimeout(function () {\n var $element = $(step_data.selector);\n var event = makeEventName(step_data.event);\n $body.enjoyhint('show');\n $body.enjoyhint('hide_next');\n var $event_element = $element;\n if (step_data.event_selector) {\n $event_element = $(step_data.event_selector);\n }\n if (!step_data.event_type && step_data.event == \"key\") {\n $element.keydown(function (event) {\n if (event.which == step_data.keyCode) {\n current_step++;\n stepAction();\n }\n });\n }\n if (step_data.showNext == true) {\n $body.enjoyhint('show_next');\n }\n if (step_data.showSkip == false) {\n $body.enjoyhint('hide_skip');\n } else {\n $body.enjoyhint('show_skip');\n }\n if (step_data.showSkip == true) {}\n if (step_data.nextButton) {\n $(\".enjoyhint_next_btn\").addClass(step_data.nextButton.className || \"\");\n $(\".enjoyhint_next_btn\").text(step_data.nextButton.text || \"Next\");\n that.nextUserClass = step_data.nextButton.className;\n }\n if (step_data.skipButton) {\n $(\".enjoyhint_skip_btn\").addClass(step_data.skipButton.className || \"\");\n $(\".enjoyhint_skip_btn\").text(step_data.skipButton.text || \"Skip\");\n that.skipUserClass = step_data.skipButton.className;\n }\n if (step_data.event_type) {\n switch (step_data.event_type) {\n case 'auto':\n $element[step_data.event]();\n switch (step_data.event) {\n case 'click':\n break;\n }\n current_step++;\n stepAction();\n return;\n case 'custom':\n on(step_data.event, function () {\n current_step++;\n off(step_data.event);\n stepAction();\n });\n break;\n case 'next':\n $body.enjoyhint('show_next');\n break;\n }\n } else {\n $event_element.on(event, function (e) {\n if (step_data.keyCode && e.keyCode != step_data.keyCode) {\n return;\n }\n current_step++;\n $(this).off(event);\n stepAction();\n });\n }\n var max_habarites = Math.max($element.outerWidth(), $element.outerHeight());\n var radius = step_data.radius || Math.round(max_habarites / 2) + 5;\n var offset = $element.offset();\n var w = $element.outerWidth();\n var h = $element.outerHeight();\n var shape_margin = step_data.margin !== undefined ? step_data.margin : 10;\n var coords = {\n x: offset.left + Math.round(w / 2),\n y: offset.top + Math.round(h / 2) - $(document).scrollTop()\n };\n var shape_data = {\n center_x: coords.x,\n center_y: coords.y,\n text: step_data.description,\n top: step_data.top,\n bottom: step_data.bottom,\n left: step_data.left,\n right: step_data.right,\n margin: step_data.margin,\n scroll: step_data.scroll\n };\n if (step_data.shape && step_data.shape == 'circle') {\n shape_data.shape = 'circle';\n shape_data.radius = radius;\n } else {\n shape_data.radius = 0;\n shape_data.width = w + shape_margin;\n shape_data.height = h + shape_margin;\n }\n $body.enjoyhint('render_label_with_shape', shape_data);\n }, step_data.scrollAnimationSpeed + 20 || 270);\n }, timeout);\n } else {\n $body.enjoyhint('hide');\n options.onEnd();\n destroyEnjoy();\n }\n };\n var nextStep = function () {\n current_step++;\n stepAction();\n };\n var skipAll = function () {\n var step_data = data[current_step];\n var $element = $(step_data.selector);\n off(step_data.event);\n $element.off(makeEventName(step_data.event));\n options.onSkip();\n destroyEnjoy();\n };\n var makeEventName = function (name, is_custom) {\n return name + (is_custom ? 'custom' : '') + '.enjoy_hint';\n };\n var on = function (event_name, callback) {\n $body.on(makeEventName(event_name, true), callback);\n };\n var off = function (event_name) {\n $body.off(makeEventName(event_name, true));\n };\n\n /********************* PUBLIC METHODS ***************************************/\n that.runScript = function () {\n current_step = 0;\n options.onStart();\n stepAction();\n };\n that.resumeScript = function () {\n stepAction();\n };\n that.getCurrentStep = function () {\n return current_step;\n };\n that.trigger = function (event_name) {\n switch (event_name) {\n case 'next':\n nextStep();\n break;\n case 'skip':\n skipAll();\n break;\n default:\n nextStep();\n break;\n }\n };\n that.setScript = function (_data) {\n if (_data) {\n data = _data;\n }\n };\n\n //support deprecated API methods\n that.set = function (_data) {\n that.setScript(_data);\n };\n that.setSteps = function (_data) {\n that.setScript(_data);\n };\n that.run = function () {\n that.runScript();\n };\n that.resume = function () {\n that.resumeScript();\n };\n init();\n};\nmodule.exports = EnjoyHint;","/*!\n * jQuery JavaScript Library v3.1.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2016-09-22T22:30Z\n */\n(function (global, factory) {\n \"use strict\";\n\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\n // For CommonJS and CommonJS-like environments where a proper `window`\n // is present, execute the factory and get jQuery.\n // For environments that do not have a `window` with a `document`\n // (such as Node.js), expose a factory as module.exports.\n // This accentuates the need for the creation of a real `window`.\n // e.g. var jQuery = require(\"jquery\")(window);\n // See ticket #14549 for more info.\n module.exports = global.document ? factory(global, true) : function (w) {\n if (!w.document) {\n throw new Error(\"jQuery requires a window with a document\");\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n\n // Pass this if window is not defined yet\n})(typeof window !== \"undefined\" ? window : this, function (window, noGlobal) {\n // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n // enough that all such attempts are guarded in a try block.\n \"use strict\";\n\n var arr = [];\n var document = window.document;\n var getProto = Object.getPrototypeOf;\n var slice = arr.slice;\n var concat = arr.concat;\n var push = arr.push;\n var indexOf = arr.indexOf;\n var class2type = {};\n var toString = class2type.toString;\n var hasOwn = class2type.hasOwnProperty;\n var fnToString = hasOwn.toString;\n var ObjectFunctionString = fnToString.call(Object);\n var support = {};\n function DOMEval(code, doc) {\n doc = doc || document;\n var script = doc.createElement(\"script\");\n script.text = code;\n doc.head.appendChild(script).parentNode.removeChild(script);\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 var version = \"3.1.1\",\n // Define a local copy of jQuery\n jQuery = function (selector, context) {\n // The jQuery object is actually just the init constructor 'enhanced'\n // Need init if jQuery is called (just allow error to be thrown if not included)\n return new jQuery.fn.init(selector, context);\n },\n // Support: Android <=4.0 only\n // Make sure we trim BOM and NBSP\n rtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n // Matches dashed string for camelizing\n rmsPrefix = /^-ms-/,\n rdashAlpha = /-([a-z])/g,\n // Used by jQuery.camelCase as callback to replace()\n fcamelCase = function (all, letter) {\n return letter.toUpperCase();\n };\n jQuery.fn = jQuery.prototype = {\n // The current version of jQuery being used\n jquery: version,\n constructor: jQuery,\n // The default length of a jQuery object is 0\n length: 0,\n toArray: function () {\n return slice.call(this);\n },\n // Get the Nth element in the matched element set OR\n // Get the whole matched element set as a clean array\n get: function (num) {\n // Return all the elements in a clean array\n if (num == null) {\n return slice.call(this);\n }\n\n // Return just the one element from the set\n return num < 0 ? this[num + this.length] : this[num];\n },\n // Take an array of elements and push it onto the stack\n // (returning the new matched element set)\n pushStack: function (elems) {\n // Build a new jQuery matched element set\n var ret = jQuery.merge(this.constructor(), elems);\n\n // Add the old object onto the stack (as a reference)\n ret.prevObject = this;\n\n // Return the newly-formed element set\n return ret;\n },\n // Execute a callback for every element in the matched set.\n each: function (callback) {\n return jQuery.each(this, callback);\n },\n map: function (callback) {\n return this.pushStack(jQuery.map(this, function (elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n slice: function () {\n return this.pushStack(slice.apply(this, arguments));\n },\n first: function () {\n return this.eq(0);\n },\n last: function () {\n return this.eq(-1);\n },\n eq: function (i) {\n var len = this.length,\n j = +i + (i < 0 ? len : 0);\n return this.pushStack(j >= 0 && j < len ? [this[j]] : []);\n },\n end: function () {\n return this.prevObject || this.constructor();\n },\n // For internal use only.\n // Behaves like an Array's method, not like a jQuery method.\n push: push,\n sort: arr.sort,\n splice: arr.splice\n };\n jQuery.extend = jQuery.fn.extend = function () {\n var options,\n name,\n src,\n copy,\n copyIsArray,\n clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false;\n\n // Handle a deep copy situation\n if (typeof target === \"boolean\") {\n deep = target;\n\n // Skip the boolean and the target\n target = arguments[i] || {};\n i++;\n }\n\n // Handle case when target is a string or something (possible in deep copy)\n if (typeof target !== \"object\" && !jQuery.isFunction(target)) {\n target = {};\n }\n\n // Extend jQuery itself if only one argument is passed\n if (i === length) {\n target = this;\n i--;\n }\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n src = target[name];\n copy = options[name];\n\n // Prevent never-ending loop\n if (target === copy) {\n continue;\n }\n\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && jQuery.isArray(src) ? src : [];\n } else {\n clone = src && jQuery.isPlainObject(src) ? src : {};\n }\n\n // Never move original objects, clone them\n target[name] = jQuery.extend(deep, clone, copy);\n\n // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n\n // Return the modified object\n return target;\n };\n jQuery.extend({\n // Unique for each copy of jQuery on the page\n expando: \"jQuery\" + (version + Math.random()).replace(/\\D/g, \"\"),\n // Assume jQuery is ready without the ready module\n isReady: true,\n error: function (msg) {\n throw new Error(msg);\n },\n noop: function () {},\n isFunction: function (obj) {\n return jQuery.type(obj) === \"function\";\n },\n isArray: Array.isArray,\n isWindow: function (obj) {\n return obj != null && obj === obj.window;\n },\n isNumeric: function (obj) {\n // As of jQuery 3.0, isNumeric is limited to\n // strings and numbers (primitives or objects)\n // that can be coerced to finite numbers (gh-2662)\n var type = jQuery.type(obj);\n return (type === \"number\" || type === \"string\") &&\n // parseFloat NaNs numeric-cast false positives (\"\")\n // ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n // subtraction forces infinities to NaN\n !isNaN(obj - parseFloat(obj));\n },\n isPlainObject: function (obj) {\n var proto, Ctor;\n\n // Detect obvious negatives\n // Use toString instead of jQuery.type to catch host objects\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n proto = getProto(obj);\n\n // Objects with no prototype (e.g., `Object.create( null )`) are plain\n if (!proto) {\n return true;\n }\n\n // Objects with prototype are plain iff they were constructed by a global Object function\n Ctor = hasOwn.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && fnToString.call(Ctor) === ObjectFunctionString;\n },\n isEmptyObject: function (obj) {\n /* eslint-disable no-unused-vars */\n // See https://github.com/eslint/eslint/issues/6125\n var name;\n for (name in obj) {\n return false;\n }\n return true;\n },\n type: function (obj) {\n if (obj == null) {\n return obj + \"\";\n }\n\n // Support: Android <=2.3 only (functionish RegExp)\n return typeof obj === \"object\" || typeof obj === \"function\" ? class2type[toString.call(obj)] || \"object\" : typeof obj;\n },\n // Evaluates a script in a global context\n globalEval: function (code) {\n DOMEval(code);\n },\n // Convert dashed to camelCase; used by the css and data modules\n // Support: IE <=9 - 11, Edge 12 - 13\n // Microsoft forgot to hump their vendor prefix (#9572)\n camelCase: function (string) {\n return string.replace(rmsPrefix, \"ms-\").replace(rdashAlpha, fcamelCase);\n },\n nodeName: function (elem, name) {\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n },\n each: function (obj, callback) {\n var length,\n i = 0;\n if (isArrayLike(obj)) {\n length = obj.length;\n for (; i < length; i++) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n }\n return obj;\n },\n // Support: Android <=4.0 only\n trim: function (text) {\n return text == null ? \"\" : (text + \"\").replace(rtrim, \"\");\n },\n // results is for internal usage only\n makeArray: function (arr, results) {\n var ret = results || [];\n if (arr != null) {\n if (isArrayLike(Object(arr))) {\n jQuery.merge(ret, typeof arr === \"string\" ? [arr] : arr);\n } else {\n push.call(ret, arr);\n }\n }\n return ret;\n },\n inArray: function (elem, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, elem, i);\n },\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n merge: function (first, second) {\n var len = +second.length,\n j = 0,\n i = first.length;\n for (; j < len; j++) {\n first[i++] = second[j];\n }\n first.length = i;\n return first;\n },\n grep: function (elems, callback, invert) {\n var callbackInverse,\n matches = [],\n i = 0,\n length = elems.length,\n callbackExpect = !invert;\n\n // Go through the array, only saving the items\n // that pass the validator function\n for (; i < length; i++) {\n callbackInverse = !callback(elems[i], i);\n if (callbackInverse !== callbackExpect) {\n matches.push(elems[i]);\n }\n }\n return matches;\n },\n // arg is for internal usage only\n map: function (elems, callback, arg) {\n var length,\n value,\n i = 0,\n ret = [];\n\n // Go through the array, translating each of the items to their new values\n if (isArrayLike(elems)) {\n length = elems.length;\n for (; i < length; i++) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret.push(value);\n }\n }\n\n // Go through every key on the object,\n } else {\n for (i in elems) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret.push(value);\n }\n }\n }\n\n // Flatten any nested arrays\n return concat.apply([], ret);\n },\n // A global GUID counter for objects\n guid: 1,\n // Bind a function to a context, optionally partially applying any\n // arguments.\n proxy: function (fn, context) {\n var tmp, args, proxy;\n if (typeof context === \"string\") {\n tmp = fn[context];\n context = fn;\n fn = tmp;\n }\n\n // Quick check to determine if target is callable, in the spec\n // this throws a TypeError, but we will just return undefined.\n if (!jQuery.isFunction(fn)) {\n return undefined;\n }\n\n // Simulated bind\n args = slice.call(arguments, 2);\n proxy = function () {\n return fn.apply(context || this, args.concat(slice.call(arguments)));\n };\n\n // Set the guid of unique handler to the same of original handler, so it can be removed\n proxy.guid = fn.guid = fn.guid || jQuery.guid++;\n return proxy;\n },\n now: Date.now,\n // jQuery.support is not used in Core but other projects attach their\n // properties to it so it needs to exist.\n support: support\n });\n if (typeof Symbol === \"function\") {\n jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];\n }\n\n // Populate the class2type map\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n function isArrayLike(obj) {\n // Support: real iOS 8.2 only (not reproducible in simulator)\n // `in` check used to prevent JIT error (gh-2145)\n // hasOwn isn't used here due to false negatives\n // regarding Nodelist length in IE\n var length = !!obj && \"length\" in obj && obj.length,\n type = jQuery.type(obj);\n if (type === \"function\" || jQuery.isWindow(obj)) {\n return false;\n }\n return type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n }\n var Sizzle =\n /*!\n * Sizzle CSS Selector Engine v2.3.3\n * https://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-08-08\n */\n function (window) {\n var i,\n support,\n Expr,\n getText,\n isXML,\n tokenize,\n compile,\n select,\n outermostContext,\n sortInput,\n hasDuplicate,\n // Local document vars\n setDocument,\n document,\n docElem,\n documentIsHTML,\n rbuggyQSA,\n rbuggyMatches,\n matches,\n contains,\n // Instance-specific data\n expando = \"sizzle\" + 1 * new Date(),\n preferredDoc = window.document,\n dirruns = 0,\n done = 0,\n classCache = createCache(),\n tokenCache = createCache(),\n compilerCache = createCache(),\n sortOrder = function (a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n return 0;\n },\n // Instance methods\n hasOwn = {}.hasOwnProperty,\n arr = [],\n pop = arr.pop,\n push_native = arr.push,\n push = arr.push,\n slice = arr.slice,\n // Use a stripped-down indexOf as it's faster than native\n // https://jsperf.com/thor-indexof-vs-for/5\n indexOf = function (list, elem) {\n var i = 0,\n len = list.length;\n for (; i < len; i++) {\n if (list[i] === elem) {\n return i;\n }\n }\n return -1;\n },\n booleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n // Regular expressions\n\n // http://www.w3.org/TR/css3-selectors/#whitespace\n whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n identifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n // Operator (capture 2)\n \"*([*^$|!~]?=)\" + whitespace +\n // \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n \"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace + \"*\\\\]\",\n pseudos = \":(\" + identifier + \")(?:\\\\((\" +\n // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n // 1. quoted (capture 3; capture 4 or capture 5)\n \"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n // 2. simple (capture 6)\n \"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n // 3. anything else (capture 2)\n \".*\" + \")\\\\)|)\",\n // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n rwhitespace = new RegExp(whitespace + \"+\", \"g\"),\n rtrim = new RegExp(\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\"),\n rcomma = new RegExp(\"^\" + whitespace + \"*,\" + whitespace + \"*\"),\n rcombinators = new RegExp(\"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\"),\n rattributeQuotes = new RegExp(\"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\"),\n rpseudo = new RegExp(pseudos),\n ridentifier = new RegExp(\"^\" + identifier + \"$\"),\n matchExpr = {\n \"ID\": new RegExp(\"^#(\" + identifier + \")\"),\n \"CLASS\": new RegExp(\"^\\\\.(\" + identifier + \")\"),\n \"TAG\": new RegExp(\"^(\" + identifier + \"|[*])\"),\n \"ATTR\": new RegExp(\"^\" + attributes),\n \"PSEUDO\": new RegExp(\"^\" + pseudos),\n \"CHILD\": new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\"),\n \"bool\": new RegExp(\"^(?:\" + booleans + \")$\", \"i\"),\n // For use in libraries implementing .is()\n // We use this for POS matching in `select`\n \"needsContext\": new RegExp(\"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\")\n },\n rinputs = /^(?:input|select|textarea|button)$/i,\n rheader = /^h\\d$/i,\n rnative = /^[^{]+\\{\\s*\\[native \\w/,\n // Easily-parseable/retrievable ID or TAG or CLASS selectors\n rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n rsibling = /[+~]/,\n // CSS escapes\n // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n runescape = new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\"),\n funescape = function (_, escaped, escapedWhitespace) {\n var high = \"0x\" + escaped - 0x10000;\n // NaN means non-codepoint\n // Support: Firefox<24\n // Workaround erroneous numeric interpretation of +\"0x\"\n return high !== high || escapedWhitespace ? escaped : high < 0 ?\n // BMP codepoint\n String.fromCharCode(high + 0x10000) :\n // Supplemental Plane codepoint (surrogate pair)\n String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);\n },\n // CSS string/identifier serialization\n // https://drafts.csswg.org/cssom/#common-serializing-idioms\n rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n fcssescape = function (ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === \"\\0\") {\n return \"\\uFFFD\";\n }\n\n // Control characters and (dependent upon position) numbers get escaped as code points\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\n }\n\n // Other potentially-special ASCII characters get backslash-escaped\n return \"\\\\\" + ch;\n },\n // Used for iframes\n // See setDocument()\n // Removing the function wrapper causes a \"Permission Denied\"\n // error in IE\n unloadHandler = function () {\n setDocument();\n },\n disabledAncestor = addCombinator(function (elem) {\n return elem.disabled === true && (\"form\" in elem || \"label\" in elem);\n }, {\n dir: \"parentNode\",\n next: \"legend\"\n });\n\n // Optimize for push.apply( _, NodeList )\n try {\n push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes);\n // Support: Android<4.0\n // Detect silently failing push.apply\n arr[preferredDoc.childNodes.length].nodeType;\n } catch (e) {\n push = {\n apply: arr.length ?\n // Leverage slice if possible\n function (target, els) {\n push_native.apply(target, slice.call(els));\n } :\n // Support: IE<9\n // Otherwise append directly\n function (target, els) {\n var j = target.length,\n i = 0;\n // Can't trust NodeList.length\n while (target[j++] = els[i++]) {}\n target.length = j - 1;\n }\n };\n }\n function Sizzle(selector, context, results, seed) {\n var m,\n i,\n elem,\n nid,\n match,\n groups,\n newSelector,\n newContext = context && context.ownerDocument,\n // nodeType defaults to 9, since context defaults to document\n nodeType = context ? context.nodeType : 9;\n results = results || [];\n\n // Return early from calls with invalid selector or context\n if (typeof selector !== \"string\" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {\n return results;\n }\n\n // Try to shortcut find operations (as opposed to filters) in HTML documents\n if (!seed) {\n if ((context ? context.ownerDocument || context : preferredDoc) !== document) {\n setDocument(context);\n }\n context = context || document;\n if (documentIsHTML) {\n // If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n // (excepting DocumentFragment context, where the methods don't exist)\n if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {\n // ID selector\n if (m = match[1]) {\n // Document context\n if (nodeType === 9) {\n if (elem = context.getElementById(m)) {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (elem.id === m) {\n results.push(elem);\n return results;\n }\n } else {\n return results;\n }\n\n // Element context\n } else {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) {\n results.push(elem);\n return results;\n }\n }\n\n // Type selector\n } else if (match[2]) {\n push.apply(results, context.getElementsByTagName(selector));\n return results;\n\n // Class selector\n } else if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) {\n push.apply(results, context.getElementsByClassName(m));\n return results;\n }\n }\n\n // Take advantage of querySelectorAll\n if (support.qsa && !compilerCache[selector + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(selector))) {\n if (nodeType !== 1) {\n newContext = context;\n newSelector = selector;\n\n // qSA looks outside Element context, which is not what we want\n // Thanks to Andrew Dupont for this workaround technique\n // Support: IE <=8\n // Exclude object elements\n } else if (context.nodeName.toLowerCase() !== \"object\") {\n // Capture the context ID, setting it first if necessary\n if (nid = context.getAttribute(\"id\")) {\n nid = nid.replace(rcssescape, fcssescape);\n } else {\n context.setAttribute(\"id\", nid = expando);\n }\n\n // Prefix every selector in the list\n groups = tokenize(selector);\n i = groups.length;\n while (i--) {\n groups[i] = \"#\" + nid + \" \" + toSelector(groups[i]);\n }\n newSelector = groups.join(\",\");\n\n // Expand context for sibling selectors\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context;\n }\n if (newSelector) {\n try {\n push.apply(results, newContext.querySelectorAll(newSelector));\n return results;\n } catch (qsaError) {} finally {\n if (nid === expando) {\n context.removeAttribute(\"id\");\n }\n }\n }\n }\n }\n }\n\n // All others\n return 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 */\n function createCache() {\n var keys = [];\n function cache(key, value) {\n // Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n if (keys.push(key + \" \") > Expr.cacheLength) {\n // Only keep the most recent entries\n delete cache[keys.shift()];\n }\n return cache[key + \" \"] = value;\n }\n return cache;\n }\n\n /**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\n function markFunction(fn) {\n fn[expando] = true;\n return fn;\n }\n\n /**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\n function assert(fn) {\n var el = document.createElement(\"fieldset\");\n try {\n return !!fn(el);\n } catch (e) {\n return false;\n } finally {\n // Remove from its parent by default\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n // release memory in IE\n el = null;\n }\n }\n\n /**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\n function addHandle(attrs, handler) {\n var arr = attrs.split(\"|\"),\n i = arr.length;\n while (i--) {\n Expr.attrHandle[arr[i]] = handler;\n }\n }\n\n /**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\n function siblingCheck(a, b) {\n var cur = b && a,\n diff = cur && a.nodeType === 1 && b.nodeType === 1 && a.sourceIndex - b.sourceIndex;\n\n // Use IE sourceIndex if available on both nodes\n if (diff) {\n return diff;\n }\n\n // Check if b follows a\n if (cur) {\n while (cur = cur.nextSibling) {\n if (cur === b) {\n return -1;\n }\n }\n }\n return a ? 1 : -1;\n }\n\n /**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\n function createInputPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return name === \"input\" && elem.type === type;\n };\n }\n\n /**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\n function createButtonPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return (name === \"input\" || name === \"button\") && elem.type === type;\n };\n }\n\n /**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\n function createDisabledPseudo(disabled) {\n // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n return function (elem) {\n // Only certain elements can match :enabled or :disabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n if (\"form\" in elem) {\n // Check for inherited disabledness on relevant non-disabled elements:\n // * listed form-associated elements in a disabled fieldset\n // https://html.spec.whatwg.org/multipage/forms.html#category-listed\n // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n // * option elements in a disabled optgroup\n // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n // All such elements have a \"form\" property.\n if (elem.parentNode && elem.disabled === false) {\n // Option elements defer to a parent optgroup if present\n if (\"label\" in elem) {\n if (\"label\" in elem.parentNode) {\n return elem.parentNode.disabled === disabled;\n } else {\n return elem.disabled === disabled;\n }\n }\n\n // Support: IE 6 - 11\n // Use the isDisabled shortcut property to check for disabled fieldset ancestors\n return elem.isDisabled === disabled ||\n // Where there is no isDisabled, check manually\n /* jshint -W018 */\n elem.isDisabled !== !disabled && disabledAncestor(elem) === disabled;\n }\n return elem.disabled === disabled;\n\n // Try to winnow out elements that can't be disabled before trusting the disabled property.\n // Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n // even exist on them, let alone have a boolean value.\n } else if (\"label\" in elem) {\n return elem.disabled === disabled;\n }\n\n // Remaining elements are neither :enabled nor :disabled\n return false;\n };\n }\n\n /**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\n function createPositionalPseudo(fn) {\n return markFunction(function (argument) {\n argument = +argument;\n return markFunction(function (seed, matches) {\n var j,\n matchIndexes = fn([], seed.length, argument),\n i = matchIndexes.length;\n\n // Match elements found at the specified indexes\n while (i--) {\n if (seed[j = matchIndexes[i]]) {\n seed[j] = !(matches[j] = seed[j]);\n }\n }\n });\n });\n }\n\n /**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\n function testContext(context) {\n return context && typeof context.getElementsByTagName !== \"undefined\" && context;\n }\n\n // Expose support vars for convenience\n support = 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 */\n isXML = Sizzle.isXML = function (elem) {\n // documentElement is verified for cases where it doesn't yet exist\n // (such as loading iframes in IE - #4833)\n var documentElement = elem && (elem.ownerDocument || elem).documentElement;\n return documentElement ? documentElement.nodeName !== \"HTML\" : false;\n };\n\n /**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\n setDocument = Sizzle.setDocument = function (node) {\n var hasCompare,\n subWindow,\n doc = node ? node.ownerDocument || node : preferredDoc;\n\n // Return early if doc is invalid or already selected\n if (doc === document || doc.nodeType !== 9 || !doc.documentElement) {\n return document;\n }\n\n // Update global variables\n document = doc;\n docElem = document.documentElement;\n documentIsHTML = !isXML(document);\n\n // Support: IE 9-11, Edge\n // Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n if (preferredDoc !== document && (subWindow = document.defaultView) && subWindow.top !== subWindow) {\n // Support: IE 11, Edge\n if (subWindow.addEventListener) {\n subWindow.addEventListener(\"unload\", unloadHandler, false);\n\n // Support: IE 9 - 10 only\n } else if (subWindow.attachEvent) {\n subWindow.attachEvent(\"onunload\", unloadHandler);\n }\n }\n\n /* Attributes\n ---------------------------------------------------------------------- */\n\n // Support: IE<8\n // Verify that getAttribute really returns attributes and not properties\n // (excepting IE8 booleans)\n support.attributes = assert(function (el) {\n el.className = \"i\";\n return !el.getAttribute(\"className\");\n });\n\n /* getElement(s)By*\n ---------------------------------------------------------------------- */\n\n // Check if getElementsByTagName(\"*\") returns only elements\n support.getElementsByTagName = assert(function (el) {\n el.appendChild(document.createComment(\"\"));\n return !el.getElementsByTagName(\"*\").length;\n });\n\n // Support: IE<9\n support.getElementsByClassName = rnative.test(document.getElementsByClassName);\n\n // Support: IE<10\n // Check if getElementById returns elements by name\n // The broken getElementById methods don't pick up programmatically-set names,\n // so use a roundabout getElementsByName test\n support.getById = assert(function (el) {\n docElem.appendChild(el).id = expando;\n return !document.getElementsByName || !document.getElementsByName(expando).length;\n });\n\n // ID filter and find\n if (support.getById) {\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n return elem.getAttribute(\"id\") === attrId;\n };\n };\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var elem = context.getElementById(id);\n return elem ? [elem] : [];\n }\n };\n } else {\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n var node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n return node && node.value === attrId;\n };\n };\n\n // Support: IE 6 - 7 only\n // getElementById is not reliable as a find shortcut\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var node,\n i,\n elems,\n elem = context.getElementById(id);\n if (elem) {\n // Verify the id attribute\n node = elem.getAttributeNode(\"id\");\n if (node && node.value === id) {\n return [elem];\n }\n\n // Fall back on getElementsByName\n elems = context.getElementsByName(id);\n i = 0;\n while (elem = elems[i++]) {\n node = elem.getAttributeNode(\"id\");\n if (node && node.value === id) {\n return [elem];\n }\n }\n }\n return [];\n }\n };\n }\n\n // Tag\n Expr.find[\"TAG\"] = support.getElementsByTagName ? function (tag, context) {\n if (typeof context.getElementsByTagName !== \"undefined\") {\n return context.getElementsByTagName(tag);\n\n // DocumentFragment nodes don't have gEBTN\n } else if (support.qsa) {\n return context.querySelectorAll(tag);\n }\n } : function (tag, context) {\n var elem,\n tmp = [],\n i = 0,\n // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n results = context.getElementsByTagName(tag);\n\n // Filter out possible comments\n if (tag === \"*\") {\n while (elem = results[i++]) {\n if (elem.nodeType === 1) {\n tmp.push(elem);\n }\n }\n return tmp;\n }\n return results;\n };\n\n // Class\n Expr.find[\"CLASS\"] = support.getElementsByClassName && function (className, context) {\n if (typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML) {\n return context.getElementsByClassName(className);\n }\n };\n\n /* QSA/matchesSelector\n ---------------------------------------------------------------------- */\n\n // QSA and matchesSelector support\n\n // matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n rbuggyMatches = [];\n\n // qSa(:focus) reports false when true (Chrome 21)\n // We allow this because of a bug in IE8/9 that throws an error\n // whenever `document.activeElement` is accessed on an iframe\n // So, we allow :focus to pass through QSA all the time to avoid the IE error\n // See https://bugs.jquery.com/ticket/13378\n rbuggyQSA = [];\n if (support.qsa = rnative.test(document.querySelectorAll)) {\n // Build QSA regex\n // Regex strategy adopted from Diego Perini\n assert(function (el) {\n // Select is set to empty string on purpose\n // This is to test IE's treatment of not explicitly\n // setting a boolean content attribute,\n // since its presence should be enough\n // https://bugs.jquery.com/ticket/12359\n docElem.appendChild(el).innerHTML = \"<a id='\" + expando + \"'></a>\" + \"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" + \"<option selected=''></option></select>\";\n\n // Support: IE8, Opera 11-12.16\n // Nothing should be selected when empty strings follow ^= or $= or *=\n // The test attribute must be unknown in Opera but \"safe\" for WinRT\n // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n if (el.querySelectorAll(\"[msallowcapture^='']\").length) {\n rbuggyQSA.push(\"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\");\n }\n\n // Support: IE8\n // Boolean attributes and \"value\" are not treated correctly\n if (!el.querySelectorAll(\"[selected]\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\");\n }\n\n // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n if (!el.querySelectorAll(\"[id~=\" + expando + \"-]\").length) {\n rbuggyQSA.push(\"~=\");\n }\n\n // Webkit/Opera - :checked should return selected option elements\n // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n // IE8 throws error here and will not see later tests\n if (!el.querySelectorAll(\":checked\").length) {\n rbuggyQSA.push(\":checked\");\n }\n\n // Support: Safari 8+, iOS 8+\n // https://bugs.webkit.org/show_bug.cgi?id=136851\n // In-page `selector#id sibling-combinator selector` fails\n if (!el.querySelectorAll(\"a#\" + expando + \"+*\").length) {\n rbuggyQSA.push(\".#.+[+~]\");\n }\n });\n assert(function (el) {\n el.innerHTML = \"<a href='' disabled='disabled'></a>\" + \"<select disabled='disabled'><option/></select>\";\n\n // Support: Windows 8 Native Apps\n // The type and name attributes are restricted during .innerHTML assignment\n var input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n el.appendChild(input).setAttribute(\"name\", \"D\");\n\n // Support: IE8\n // Enforce case-sensitivity of name attribute\n if (el.querySelectorAll(\"[name=d]\").length) {\n rbuggyQSA.push(\"name\" + whitespace + \"*[*^$|!~]?=\");\n }\n\n // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n // IE8 throws error here and will not see later tests\n if (el.querySelectorAll(\":enabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n }\n\n // Support: IE9-11+\n // IE's :disabled selector does not pick up the children of disabled fieldsets\n docElem.appendChild(el).disabled = true;\n if (el.querySelectorAll(\":disabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n }\n\n // Opera 10-11 does not throw on post-comma invalid pseudos\n el.querySelectorAll(\"*,:x\");\n rbuggyQSA.push(\",.*:\");\n });\n }\n if (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) {\n assert(function (el) {\n // Check to see if it's possible to do matchesSelector\n // on a disconnected node (IE 9)\n support.disconnectedMatch = matches.call(el, \"*\");\n\n // This should fail with an exception\n // Gecko does not error, returns false instead\n matches.call(el, \"[s!='']:x\");\n rbuggyMatches.push(\"!=\", pseudos);\n });\n }\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join(\"|\"));\n rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join(\"|\"));\n\n /* Contains\n ---------------------------------------------------------------------- */\n hasCompare = rnative.test(docElem.compareDocumentPosition);\n\n // Element contains another\n // Purposefully self-exclusive\n // As in, an element does not contain itself\n contains = hasCompare || rnative.test(docElem.contains) ? function (a, b) {\n var adown = a.nodeType === 9 ? a.documentElement : a,\n bup = b && b.parentNode;\n return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));\n } : function (a, b) {\n if (b) {\n while (b = b.parentNode) {\n if (b === a) {\n return true;\n }\n }\n }\n return false;\n };\n\n /* Sorting\n ---------------------------------------------------------------------- */\n\n // Document order sorting\n sortOrder = hasCompare ? function (a, b) {\n // Flag for duplicate removal\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n\n // Sort on method existence if only one input has compareDocumentPosition\n var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n if (compare) {\n return compare;\n }\n\n // Calculate position if both inputs belong to the same document\n compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) :\n // Otherwise we know they are disconnected\n 1;\n\n // Disconnected nodes\n if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {\n // Choose the first element that is related to our preferred document\n if (a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a)) {\n return -1;\n }\n if (b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b)) {\n return 1;\n }\n\n // Maintain original order\n return sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;\n }\n return compare & 4 ? -1 : 1;\n } : function (a, b) {\n // Exit early if the nodes are identical\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n var cur,\n i = 0,\n aup = a.parentNode,\n bup = b.parentNode,\n ap = [a],\n bp = [b];\n\n // Parentless nodes are either documents or disconnected\n if (!aup || !bup) {\n return a === document ? -1 : b === document ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;\n\n // If the nodes are siblings, we can do a quick check\n } else if (aup === bup) {\n return siblingCheck(a, b);\n }\n\n // Otherwise we need full lists of their ancestors for comparison\n cur = a;\n while (cur = cur.parentNode) {\n ap.unshift(cur);\n }\n cur = b;\n while (cur = cur.parentNode) {\n bp.unshift(cur);\n }\n\n // Walk down the tree looking for a discrepancy\n while (ap[i] === bp[i]) {\n i++;\n }\n return i ?\n // Do a sibling check if the nodes have a common ancestor\n siblingCheck(ap[i], bp[i]) :\n // Otherwise nodes in our document sort first\n ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0;\n };\n return document;\n };\n Sizzle.matches = function (expr, elements) {\n return Sizzle(expr, null, null, elements);\n };\n Sizzle.matchesSelector = function (elem, expr) {\n // Set document vars if needed\n if ((elem.ownerDocument || elem) !== document) {\n setDocument(elem);\n }\n\n // Make sure that attribute selectors are quoted\n expr = expr.replace(rattributeQuotes, \"='$1']\");\n if (support.matchesSelector && documentIsHTML && !compilerCache[expr + \" \"] && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {\n try {\n var ret = matches.call(elem, expr);\n\n // IE 9's matchesSelector returns false on disconnected nodes\n if (ret || support.disconnectedMatch ||\n // As well, disconnected nodes are said to be in a document\n // fragment in IE 9\n elem.document && elem.document.nodeType !== 11) {\n return ret;\n }\n } catch (e) {}\n }\n return Sizzle(expr, document, null, [elem]).length > 0;\n };\n Sizzle.contains = function (context, elem) {\n // Set document vars if needed\n if ((context.ownerDocument || context) !== document) {\n setDocument(context);\n }\n return contains(context, elem);\n };\n Sizzle.attr = function (elem, name) {\n // Set document vars if needed\n if ((elem.ownerDocument || elem) !== document) {\n setDocument(elem);\n }\n var fn = Expr.attrHandle[name.toLowerCase()],\n // Don't get fooled by Object.prototype properties (jQuery #13807)\n val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;\n return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;\n };\n Sizzle.escape = function (sel) {\n return (sel + \"\").replace(rcssescape, fcssescape);\n };\n Sizzle.error = function (msg) {\n throw new Error(\"Syntax error, unrecognized expression: \" + msg);\n };\n\n /**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\n Sizzle.uniqueSort = function (results) {\n var elem,\n duplicates = [],\n j = 0,\n i = 0;\n\n // Unless we *know* we can detect duplicates, assume their presence\n hasDuplicate = !support.detectDuplicates;\n sortInput = !support.sortStable && results.slice(0);\n results.sort(sortOrder);\n if (hasDuplicate) {\n while (elem = results[i++]) {\n if (elem === results[i]) {\n j = duplicates.push(i);\n }\n }\n while (j--) {\n results.splice(duplicates[j], 1);\n }\n }\n\n // Clear input after sorting to release objects\n // See https://github.com/jquery/sizzle/pull/225\n sortInput = null;\n return results;\n };\n\n /**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\n getText = Sizzle.getText = function (elem) {\n var node,\n ret = \"\",\n i = 0,\n nodeType = elem.nodeType;\n if (!nodeType) {\n // If no nodeType, this is expected to be an array\n while (node = elem[i++]) {\n // Do not traverse comment nodes\n ret += getText(node);\n }\n } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {\n // Use textContent for elements\n // innerText usage removed for consistency of new lines (jQuery #11153)\n if (typeof elem.textContent === \"string\") {\n return elem.textContent;\n } else {\n // Traverse its children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n ret += getText(elem);\n }\n }\n } else if (nodeType === 3 || nodeType === 4) {\n return elem.nodeValue;\n }\n // Do not include comment or processing instruction nodes\n\n return ret;\n };\n Expr = Sizzle.selectors = {\n // Can be adjusted by the user\n cacheLength: 50,\n createPseudo: markFunction,\n match: matchExpr,\n attrHandle: {},\n find: {},\n relative: {\n \">\": {\n dir: \"parentNode\",\n first: true\n },\n \" \": {\n dir: \"parentNode\"\n },\n \"+\": {\n dir: \"previousSibling\",\n first: true\n },\n \"~\": {\n dir: \"previousSibling\"\n }\n },\n preFilter: {\n \"ATTR\": function (match) {\n match[1] = match[1].replace(runescape, funescape);\n\n // Move the given value to match[3] whether quoted or unquoted\n match[3] = (match[3] || match[4] || match[5] || \"\").replace(runescape, funescape);\n if (match[2] === \"~=\") {\n match[3] = \" \" + match[3] + \" \";\n }\n return match.slice(0, 4);\n },\n \"CHILD\": function (match) {\n /* matches from matchExpr[\"CHILD\"]\n \t1 type (only|nth|...)\n \t2 what (child|of-type)\n \t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n \t4 xn-component of xn+y argument ([+-]?\\d*n|)\n \t5 sign of xn-component\n \t6 x of xn-component\n \t7 sign of y-component\n \t8 y of y-component\n */\n match[1] = match[1].toLowerCase();\n if (match[1].slice(0, 3) === \"nth\") {\n // nth-* requires argument\n if (!match[3]) {\n Sizzle.error(match[0]);\n }\n\n // numeric x and y parameters for Expr.filter.CHILD\n // remember that false/true cast respectively to 0/1\n match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === \"even\" || match[3] === \"odd\"));\n match[5] = +(match[7] + match[8] || match[3] === \"odd\");\n\n // other types prohibit arguments\n } else if (match[3]) {\n Sizzle.error(match[0]);\n }\n return match;\n },\n \"PSEUDO\": function (match) {\n var excess,\n unquoted = !match[6] && match[2];\n if (matchExpr[\"CHILD\"].test(match[0])) {\n return null;\n }\n\n // Accept quoted arguments as-is\n if (match[3]) {\n match[2] = match[4] || match[5] || \"\";\n\n // Strip excess characters from unquoted arguments\n } else if (unquoted && rpseudo.test(unquoted) && (\n // Get excess from tokenize (recursively)\n excess = tokenize(unquoted, true)) && (\n // advance to the next closing parenthesis\n excess = unquoted.indexOf(\")\", unquoted.length - excess) - unquoted.length)) {\n // excess is a negative index\n match[0] = match[0].slice(0, excess);\n match[2] = unquoted.slice(0, excess);\n }\n\n // Return only captures needed by the pseudo filter method (type and argument)\n return match.slice(0, 3);\n }\n },\n filter: {\n \"TAG\": function (nodeNameSelector) {\n var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();\n return nodeNameSelector === \"*\" ? function () {\n return true;\n } : function (elem) {\n return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n };\n },\n \"CLASS\": function (className) {\n var pattern = classCache[className + \" \"];\n return pattern || (pattern = new RegExp(\"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\")) && classCache(className, function (elem) {\n return pattern.test(typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\");\n });\n },\n \"ATTR\": function (name, operator, check) {\n return function (elem) {\n var result = Sizzle.attr(elem, name);\n if (result == null) {\n return operator === \"!=\";\n }\n if (!operator) {\n return true;\n }\n result += \"\";\n return operator === \"=\" ? result === check : operator === \"!=\" ? result !== check : operator === \"^=\" ? check && result.indexOf(check) === 0 : operator === \"*=\" ? check && result.indexOf(check) > -1 : operator === \"$=\" ? check && result.slice(-check.length) === check : operator === \"~=\" ? (\" \" + result.replace(rwhitespace, \" \") + \" \").indexOf(check) > -1 : operator === \"|=\" ? result === check || result.slice(0, check.length + 1) === check + \"-\" : false;\n };\n },\n \"CHILD\": function (type, what, argument, first, last) {\n var simple = type.slice(0, 3) !== \"nth\",\n forward = type.slice(-4) !== \"last\",\n ofType = what === \"of-type\";\n return first === 1 && last === 0 ?\n // Shortcut for :nth-*(n)\n function (elem) {\n return !!elem.parentNode;\n } : function (elem, context, xml) {\n var cache,\n uniqueCache,\n outerCache,\n node,\n nodeIndex,\n start,\n dir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n parent = elem.parentNode,\n name = ofType && elem.nodeName.toLowerCase(),\n useCache = !xml && !ofType,\n diff = false;\n if (parent) {\n // :(first|last|only)-(child|of-type)\n if (simple) {\n while (dir) {\n node = elem;\n while (node = node[dir]) {\n if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) {\n return false;\n }\n }\n // Reverse direction for :only-* (if we haven't yet done so)\n start = dir = type === \"only\" && !start && \"nextSibling\";\n }\n return true;\n }\n start = [forward ? parent.firstChild : parent.lastChild];\n\n // non-xml :nth-child(...) stores cache data on `parent`\n if (forward && useCache) {\n // Seek `elem` from a previously-cached index\n\n // ...in a gzip-friendly way\n node = parent;\n outerCache = node[expando] || (node[expando] = {});\n\n // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n cache = uniqueCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex && cache[2];\n node = nodeIndex && parent.childNodes[nodeIndex];\n while (node = ++nodeIndex && node && node[dir] || (\n // Fallback to seeking `elem` from the start\n diff = nodeIndex = 0) || start.pop()) {\n // When found, cache indexes on `parent` and break\n if (node.nodeType === 1 && ++diff && node === elem) {\n uniqueCache[type] = [dirruns, nodeIndex, diff];\n break;\n }\n }\n } else {\n // Use previously-cached element index if available\n if (useCache) {\n // ...in a gzip-friendly way\n node = elem;\n outerCache = node[expando] || (node[expando] = {});\n\n // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n cache = uniqueCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex;\n }\n\n // xml :nth-child(...)\n // or :nth-last-child(...) or :nth(-last)?-of-type(...)\n if (diff === false) {\n // Use the same loop as above to seek `elem` from the start\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) {\n // Cache the index of each encountered element\n if (useCache) {\n outerCache = node[expando] || (node[expando] = {});\n\n // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n uniqueCache[type] = [dirruns, diff];\n }\n if (node === elem) {\n break;\n }\n }\n }\n }\n }\n\n // Incorporate the offset, then check against cycle size\n diff -= last;\n return diff === first || diff % first === 0 && diff / first >= 0;\n }\n };\n },\n \"PSEUDO\": function (pseudo, argument) {\n // pseudo-class names are case-insensitive\n // http://www.w3.org/TR/selectors/#pseudo-classes\n // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n // Remember that setFilters inherits from pseudos\n var args,\n fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error(\"unsupported pseudo: \" + pseudo);\n\n // The user may use createPseudo to indicate that\n // arguments are needed to create the filter function\n // just as Sizzle does\n if (fn[expando]) {\n return fn(argument);\n }\n\n // But maintain support for old signatures\n if (fn.length > 1) {\n args = [pseudo, pseudo, \"\", argument];\n return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {\n var idx,\n matched = fn(seed, argument),\n i = matched.length;\n while (i--) {\n idx = indexOf(seed, matched[i]);\n seed[idx] = !(matches[idx] = matched[i]);\n }\n }) : function (elem) {\n return fn(elem, 0, args);\n };\n }\n return fn;\n }\n },\n pseudos: {\n // Potentially complex pseudos\n \"not\": markFunction(function (selector) {\n // Trim the selector passed to compile\n // to avoid treating leading and trailing\n // spaces as combinators\n var input = [],\n results = [],\n matcher = compile(selector.replace(rtrim, \"$1\"));\n return matcher[expando] ? markFunction(function (seed, matches, context, xml) {\n var elem,\n unmatched = matcher(seed, null, xml, []),\n i = seed.length;\n\n // Match elements unmatched by `matcher`\n while (i--) {\n if (elem = unmatched[i]) {\n seed[i] = !(matches[i] = elem);\n }\n }\n }) : function (elem, context, xml) {\n input[0] = elem;\n matcher(input, null, xml, results);\n // Don't keep the element (issue #299)\n input[0] = null;\n return !results.pop();\n };\n }),\n \"has\": markFunction(function (selector) {\n return function (elem) {\n return Sizzle(selector, elem).length > 0;\n };\n }),\n \"contains\": markFunction(function (text) {\n text = text.replace(runescape, funescape);\n return function (elem) {\n return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1;\n };\n }),\n // \"Whether an element is represented by a :lang() selector\n // is based solely on the element's language value\n // being equal to the identifier C,\n // or beginning with the identifier C immediately followed by \"-\".\n // The matching of C against the element's language value is performed case-insensitively.\n // The identifier C does not have to be a valid language name.\"\n // http://www.w3.org/TR/selectors/#lang-pseudo\n \"lang\": markFunction(function (lang) {\n // lang value must be a valid identifier\n if (!ridentifier.test(lang || \"\")) {\n Sizzle.error(\"unsupported lang: \" + lang);\n }\n lang = lang.replace(runescape, funescape).toLowerCase();\n return function (elem) {\n var elemLang;\n do {\n if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) {\n elemLang = elemLang.toLowerCase();\n return elemLang === lang || elemLang.indexOf(lang + \"-\") === 0;\n }\n } while ((elem = elem.parentNode) && elem.nodeType === 1);\n return false;\n };\n }),\n // Miscellaneous\n \"target\": function (elem) {\n var hash = window.location && window.location.hash;\n return hash && hash.slice(1) === elem.id;\n },\n \"root\": function (elem) {\n return elem === docElem;\n },\n \"focus\": function (elem) {\n return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n },\n // Boolean properties\n \"enabled\": createDisabledPseudo(false),\n \"disabled\": createDisabledPseudo(true),\n \"checked\": function (elem) {\n // In CSS3, :checked should return both checked and selected elements\n // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n var nodeName = elem.nodeName.toLowerCase();\n return nodeName === \"input\" && !!elem.checked || nodeName === \"option\" && !!elem.selected;\n },\n \"selected\": function (elem) {\n // Accessing this property makes selected-by-default\n // options in Safari work properly\n if (elem.parentNode) {\n elem.parentNode.selectedIndex;\n }\n return elem.selected === true;\n },\n // Contents\n \"empty\": function (elem) {\n // http://www.w3.org/TR/selectors/#empty-pseudo\n // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n // but not by others (comment: 8; processing instruction: 7; etc.)\n // nodeType < 6 works because attributes (2) do not appear as children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n if (elem.nodeType < 6) {\n return false;\n }\n }\n return true;\n },\n \"parent\": function (elem) {\n return !Expr.pseudos[\"empty\"](elem);\n },\n // Element/input types\n \"header\": function (elem) {\n return rheader.test(elem.nodeName);\n },\n \"input\": function (elem) {\n return rinputs.test(elem.nodeName);\n },\n \"button\": function (elem) {\n var name = elem.nodeName.toLowerCase();\n return name === \"input\" && elem.type === \"button\" || name === \"button\";\n },\n \"text\": function (elem) {\n var attr;\n return elem.nodeName.toLowerCase() === \"input\" && elem.type === \"text\" && (\n // Support: IE<8\n // New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\");\n },\n // Position-in-collection\n \"first\": createPositionalPseudo(function () {\n return [0];\n }),\n \"last\": createPositionalPseudo(function (matchIndexes, length) {\n return [length - 1];\n }),\n \"eq\": createPositionalPseudo(function (matchIndexes, length, argument) {\n return [argument < 0 ? argument + length : argument];\n }),\n \"even\": createPositionalPseudo(function (matchIndexes, length) {\n var i = 0;\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n \"odd\": createPositionalPseudo(function (matchIndexes, length) {\n var i = 1;\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n \"lt\": createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument;\n for (; --i >= 0;) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n \"gt\": createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument;\n for (; ++i < length;) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n })\n }\n };\n Expr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n // Add button/input type pseudos\n for (i in {\n radio: true,\n checkbox: true,\n file: true,\n password: true,\n image: true\n }) {\n Expr.pseudos[i] = createInputPseudo(i);\n }\n for (i in {\n submit: true,\n reset: true\n }) {\n Expr.pseudos[i] = createButtonPseudo(i);\n }\n\n // Easy API for creating new setFilters\n function setFilters() {}\n setFilters.prototype = Expr.filters = Expr.pseudos;\n Expr.setFilters = new setFilters();\n tokenize = Sizzle.tokenize = function (selector, parseOnly) {\n var matched,\n match,\n tokens,\n type,\n soFar,\n groups,\n preFilters,\n cached = tokenCache[selector + \" \"];\n if (cached) {\n return parseOnly ? 0 : cached.slice(0);\n }\n soFar = selector;\n groups = [];\n preFilters = Expr.preFilter;\n while (soFar) {\n // Comma and first run\n if (!matched || (match = rcomma.exec(soFar))) {\n if (match) {\n // Don't consume trailing commas as valid\n soFar = soFar.slice(match[0].length) || soFar;\n }\n groups.push(tokens = []);\n }\n matched = false;\n\n // Combinators\n if (match = rcombinators.exec(soFar)) {\n matched = match.shift();\n tokens.push({\n value: matched,\n // Cast descendant combinators to space\n type: match[0].replace(rtrim, \" \")\n });\n soFar = soFar.slice(matched.length);\n }\n\n // Filters\n for (type in Expr.filter) {\n if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {\n matched = match.shift();\n tokens.push({\n value: matched,\n type: type,\n matches: match\n });\n soFar = soFar.slice(matched.length);\n }\n }\n if (!matched) {\n break;\n }\n }\n\n // Return the length of the invalid excess\n // if we're just parsing\n // Otherwise, throw an error or return tokens\n return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) :\n // Cache the tokens\n tokenCache(selector, groups).slice(0);\n };\n function toSelector(tokens) {\n var i = 0,\n len = tokens.length,\n selector = \"\";\n for (; i < len; i++) {\n selector += tokens[i].value;\n }\n return selector;\n }\n function addCombinator(matcher, combinator, base) {\n var dir = combinator.dir,\n skip = combinator.next,\n key = skip || dir,\n checkNonElements = base && key === \"parentNode\",\n doneName = done++;\n return combinator.first ?\n // Check against closest ancestor/preceding element\n function (elem, context, xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n return matcher(elem, context, xml);\n }\n }\n return false;\n } :\n // Check against all ancestor/preceding elements\n function (elem, context, xml) {\n var oldCache,\n uniqueCache,\n outerCache,\n newCache = [dirruns, doneName];\n\n // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n if (xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n if (matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n } else {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n outerCache = elem[expando] || (elem[expando] = {});\n\n // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {});\n if (skip && skip === elem.nodeName.toLowerCase()) {\n elem = elem[dir] || elem;\n } else if ((oldCache = uniqueCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {\n // Assign to newCache so results back-propagate to previous elements\n return newCache[2] = oldCache[2];\n } else {\n // Reuse newcache so results back-propagate to previous elements\n uniqueCache[key] = newCache;\n\n // A match means we're done; a fail means we have to keep checking\n if (newCache[2] = matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n }\n }\n return false;\n };\n }\n function elementMatcher(matchers) {\n return matchers.length > 1 ? function (elem, context, xml) {\n var i = matchers.length;\n while (i--) {\n if (!matchers[i](elem, context, xml)) {\n return false;\n }\n }\n return true;\n } : matchers[0];\n }\n function multipleContexts(selector, contexts, results) {\n var i = 0,\n len = contexts.length;\n for (; i < len; i++) {\n Sizzle(selector, contexts[i], results);\n }\n return results;\n }\n function condense(unmatched, map, filter, context, xml) {\n var elem,\n newUnmatched = [],\n i = 0,\n len = unmatched.length,\n mapped = map != null;\n for (; i < len; i++) {\n if (elem = unmatched[i]) {\n if (!filter || filter(elem, context, xml)) {\n newUnmatched.push(elem);\n if (mapped) {\n map.push(i);\n }\n }\n }\n }\n return newUnmatched;\n }\n function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {\n if (postFilter && !postFilter[expando]) {\n postFilter = setMatcher(postFilter);\n }\n if (postFinder && !postFinder[expando]) {\n postFinder = setMatcher(postFinder, postSelector);\n }\n return markFunction(function (seed, results, context, xml) {\n var temp,\n i,\n elem,\n preMap = [],\n postMap = [],\n preexisting = results.length,\n // Get initial elements from seed or context\n elems = seed || multipleContexts(selector || \"*\", context.nodeType ? [context] : context, []),\n // Prefilter to get matcher input, preserving a map for seed-results synchronization\n matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems,\n matcherOut = matcher ?\n // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n postFinder || (seed ? preFilter : preexisting || postFilter) ?\n // ...intermediate processing is necessary\n [] :\n // ...otherwise use results directly\n results : matcherIn;\n\n // Find primary matches\n if (matcher) {\n matcher(matcherIn, matcherOut, context, xml);\n }\n\n // Apply postFilter\n if (postFilter) {\n temp = condense(matcherOut, postMap);\n postFilter(temp, [], context, xml);\n\n // Un-match failing elements by moving them back to matcherIn\n i = temp.length;\n while (i--) {\n if (elem = temp[i]) {\n matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);\n }\n }\n }\n if (seed) {\n if (postFinder || preFilter) {\n if (postFinder) {\n // Get the final matcherOut by condensing this intermediate into postFinder contexts\n temp = [];\n i = matcherOut.length;\n while (i--) {\n if (elem = matcherOut[i]) {\n // Restore matcherIn since elem is not yet a final match\n temp.push(matcherIn[i] = elem);\n }\n }\n postFinder(null, matcherOut = [], temp, xml);\n }\n\n // Move matched elements from seed to results to keep them synchronized\n i = matcherOut.length;\n while (i--) {\n if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1) {\n seed[temp] = !(results[temp] = elem);\n }\n }\n }\n\n // Add elements to results, through postFinder if defined\n } else {\n matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);\n if (postFinder) {\n postFinder(null, results, matcherOut, xml);\n } else {\n push.apply(results, matcherOut);\n }\n }\n });\n }\n function matcherFromTokens(tokens) {\n var checkContext,\n matcher,\n j,\n len = tokens.length,\n leadingRelative = Expr.relative[tokens[0].type],\n implicitRelative = leadingRelative || Expr.relative[\" \"],\n i = leadingRelative ? 1 : 0,\n // The foundational matcher ensures that elements are reachable from top-level context(s)\n matchContext = addCombinator(function (elem) {\n return elem === checkContext;\n }, implicitRelative, true),\n matchAnyContext = addCombinator(function (elem) {\n return indexOf(checkContext, elem) > -1;\n }, implicitRelative, true),\n matchers = [function (elem, context, xml) {\n var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));\n // Avoid hanging onto element (issue #299)\n checkContext = null;\n return ret;\n }];\n for (; i < len; i++) {\n if (matcher = Expr.relative[tokens[i].type]) {\n matchers = [addCombinator(elementMatcher(matchers), matcher)];\n } else {\n matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches);\n\n // Return special upon seeing a positional matcher\n if (matcher[expando]) {\n // Find the next relative operator (if any) for proper handling\n j = ++i;\n for (; j < len; j++) {\n if (Expr.relative[tokens[j].type]) {\n break;\n }\n }\n return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(\n // If the preceding token was a descendant combinator, insert an implicit any-element `*`\n tokens.slice(0, i - 1).concat({\n value: tokens[i - 2].type === \" \" ? \"*\" : \"\"\n })).replace(rtrim, \"$1\"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));\n }\n matchers.push(matcher);\n }\n }\n return elementMatcher(matchers);\n }\n function matcherFromGroupMatchers(elementMatchers, setMatchers) {\n var bySet = setMatchers.length > 0,\n byElement = elementMatchers.length > 0,\n superMatcher = function (seed, context, xml, results, outermost) {\n var elem,\n j,\n matcher,\n matchedCount = 0,\n i = \"0\",\n unmatched = seed && [],\n setMatched = [],\n contextBackup = outermostContext,\n // We must always have either seed elements or outermost context\n elems = seed || byElement && Expr.find[\"TAG\"](\"*\", outermost),\n // Use integer dirruns iff this is the outermost matcher\n dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1,\n len = elems.length;\n if (outermost) {\n outermostContext = context === document || context || outermost;\n }\n\n // Add elements passing elementMatchers directly to results\n // Support: IE<9, Safari\n // Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n for (; i !== len && (elem = elems[i]) != null; i++) {\n if (byElement && elem) {\n j = 0;\n if (!context && elem.ownerDocument !== document) {\n setDocument(elem);\n xml = !documentIsHTML;\n }\n while (matcher = elementMatchers[j++]) {\n if (matcher(elem, context || document, xml)) {\n results.push(elem);\n break;\n }\n }\n if (outermost) {\n dirruns = dirrunsUnique;\n }\n }\n\n // Track unmatched elements for set filters\n if (bySet) {\n // They will have gone through all possible matchers\n if (elem = !matcher && elem) {\n matchedCount--;\n }\n\n // Lengthen the array for every element, matched or not\n if (seed) {\n unmatched.push(elem);\n }\n }\n }\n\n // `i` is now the count of elements visited above, and adding it to `matchedCount`\n // makes the latter nonnegative.\n matchedCount += i;\n\n // Apply set filters to unmatched elements\n // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n // equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n // no element matchers and no seed.\n // Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n // case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n // numerically zero.\n if (bySet && i !== matchedCount) {\n j = 0;\n while (matcher = setMatchers[j++]) {\n matcher(unmatched, setMatched, context, xml);\n }\n if (seed) {\n // Reintegrate element matches to eliminate the need for sorting\n if (matchedCount > 0) {\n while (i--) {\n if (!(unmatched[i] || setMatched[i])) {\n setMatched[i] = pop.call(results);\n }\n }\n }\n\n // Discard index placeholder values to get only actual matches\n setMatched = condense(setMatched);\n }\n\n // Add matches to results\n push.apply(results, setMatched);\n\n // Seedless set matches succeeding multiple successful matchers stipulate sorting\n if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {\n Sizzle.uniqueSort(results);\n }\n }\n\n // Override manipulation of globals by nested matchers\n if (outermost) {\n dirruns = dirrunsUnique;\n outermostContext = contextBackup;\n }\n return unmatched;\n };\n return bySet ? markFunction(superMatcher) : superMatcher;\n }\n compile = Sizzle.compile = function (selector, match /* Internal Use Only */) {\n var i,\n setMatchers = [],\n elementMatchers = [],\n cached = compilerCache[selector + \" \"];\n if (!cached) {\n // Generate a function of recursive functions that can be used to check each element\n if (!match) {\n match = tokenize(selector);\n }\n i = match.length;\n while (i--) {\n cached = matcherFromTokens(match[i]);\n if (cached[expando]) {\n setMatchers.push(cached);\n } else {\n elementMatchers.push(cached);\n }\n }\n\n // Cache the compiled function\n cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));\n\n // Save selector and tokenization\n cached.selector = selector;\n }\n return 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 */\n select = Sizzle.select = function (selector, context, results, seed) {\n var i,\n tokens,\n token,\n type,\n find,\n compiled = typeof selector === \"function\" && selector,\n match = !seed && tokenize(selector = compiled.selector || selector);\n results = results || [];\n\n // Try to minimize operations if there is only one selector in the list and no seed\n // (the latter of which guarantees us context)\n if (match.length === 1) {\n // Reduce context if the leading compound selector is an ID\n tokens = match[0] = match[0].slice(0);\n if (tokens.length > 2 && (token = tokens[0]).type === \"ID\" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {\n context = (Expr.find[\"ID\"](token.matches[0].replace(runescape, funescape), context) || [])[0];\n if (!context) {\n return results;\n\n // Precompiled matchers will still verify ancestry, so step up a level\n } else if (compiled) {\n context = context.parentNode;\n }\n selector = selector.slice(tokens.shift().value.length);\n }\n\n // Fetch a seed set for right-to-left matching\n i = matchExpr[\"needsContext\"].test(selector) ? 0 : tokens.length;\n while (i--) {\n token = tokens[i];\n\n // Abort if we hit a combinator\n if (Expr.relative[type = token.type]) {\n break;\n }\n if (find = Expr.find[type]) {\n // Search, expanding context for leading sibling combinators\n if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {\n // If seed is empty or no tokens remain, we can return early\n tokens.splice(i, 1);\n selector = seed.length && toSelector(tokens);\n if (!selector) {\n push.apply(results, seed);\n return results;\n }\n break;\n }\n }\n }\n }\n\n // Compile and execute a filtering function if one is not provided\n // Provide `match` to avoid retokenization if we modified the selector above\n (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);\n return results;\n };\n\n // One-time assignments\n\n // Sort stability\n support.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\n support.detectDuplicates = !!hasDuplicate;\n\n // Initialize against the default document\n setDocument();\n\n // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n // Detached nodes confoundingly follow *each other*\n support.sortDetached = assert(function (el) {\n // Should return 1, but returns 4 (following)\n return 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\n if (!assert(function (el) {\n el.innerHTML = \"<a href='#'></a>\";\n return el.firstChild.getAttribute(\"href\") === \"#\";\n })) {\n addHandle(\"type|href|height|width\", function (elem, name, isXML) {\n if (!isXML) {\n return elem.getAttribute(name, name.toLowerCase() === \"type\" ? 1 : 2);\n }\n });\n }\n\n // Support: IE<9\n // Use defaultValue in place of getAttribute(\"value\")\n if (!support.attributes || !assert(function (el) {\n el.innerHTML = \"<input/>\";\n el.firstChild.setAttribute(\"value\", \"\");\n return el.firstChild.getAttribute(\"value\") === \"\";\n })) {\n addHandle(\"value\", function (elem, name, isXML) {\n if (!isXML && elem.nodeName.toLowerCase() === \"input\") {\n return elem.defaultValue;\n }\n });\n }\n\n // Support: IE<9\n // Use getAttributeNode to fetch booleans when getAttribute lies\n if (!assert(function (el) {\n return el.getAttribute(\"disabled\") == null;\n })) {\n addHandle(booleans, function (elem, name, isXML) {\n var val;\n if (!isXML) {\n return elem[name] === true ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;\n }\n });\n }\n return Sizzle;\n }(window);\n jQuery.find = Sizzle;\n jQuery.expr = Sizzle.selectors;\n\n // Deprecated\n jQuery.expr[\":\"] = jQuery.expr.pseudos;\n jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\n jQuery.text = Sizzle.getText;\n jQuery.isXMLDoc = Sizzle.isXML;\n jQuery.contains = Sizzle.contains;\n jQuery.escapeSelector = Sizzle.escape;\n var dir = function (elem, dir, until) {\n var matched = [],\n truncate = until !== undefined;\n while ((elem = elem[dir]) && elem.nodeType !== 9) {\n if (elem.nodeType === 1) {\n if (truncate && jQuery(elem).is(until)) {\n break;\n }\n matched.push(elem);\n }\n }\n return matched;\n };\n var siblings = function (n, elem) {\n var matched = [];\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== elem) {\n matched.push(n);\n }\n }\n return matched;\n };\n var rneedsContext = jQuery.expr.match.needsContext;\n var rsingleTag = /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;\n var risSimple = /^.[^:#\\[\\.,]*$/;\n\n // Implement the identical functionality for filter and not\n function winnow(elements, qualifier, not) {\n if (jQuery.isFunction(qualifier)) {\n return jQuery.grep(elements, function (elem, i) {\n return !!qualifier.call(elem, i, elem) !== not;\n });\n }\n\n // Single element\n if (qualifier.nodeType) {\n return jQuery.grep(elements, function (elem) {\n return elem === qualifier !== not;\n });\n }\n\n // Arraylike of elements (jQuery, arguments, Array)\n if (typeof qualifier !== \"string\") {\n return jQuery.grep(elements, function (elem) {\n return indexOf.call(qualifier, elem) > -1 !== not;\n });\n }\n\n // Simple selector that can be filtered directly, removing non-Elements\n if (risSimple.test(qualifier)) {\n return jQuery.filter(qualifier, elements, not);\n }\n\n // Complex selector, compare the two sets, removing non-Elements\n qualifier = jQuery.filter(qualifier, elements);\n return jQuery.grep(elements, function (elem) {\n return indexOf.call(qualifier, elem) > -1 !== not && elem.nodeType === 1;\n });\n }\n jQuery.filter = function (expr, elems, not) {\n var elem = elems[0];\n if (not) {\n expr = \":not(\" + expr + \")\";\n }\n if (elems.length === 1 && elem.nodeType === 1) {\n return jQuery.find.matchesSelector(elem, expr) ? [elem] : [];\n }\n return jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {\n return elem.nodeType === 1;\n }));\n };\n jQuery.fn.extend({\n find: function (selector) {\n var i,\n ret,\n len = this.length,\n self = this;\n if (typeof selector !== \"string\") {\n return this.pushStack(jQuery(selector).filter(function () {\n for (i = 0; i < len; i++) {\n if (jQuery.contains(self[i], this)) {\n return true;\n }\n }\n }));\n }\n ret = this.pushStack([]);\n for (i = 0; i < len; i++) {\n jQuery.find(selector, self[i], ret);\n }\n return len > 1 ? jQuery.uniqueSort(ret) : ret;\n },\n filter: function (selector) {\n return this.pushStack(winnow(this, selector || [], false));\n },\n not: function (selector) {\n return this.pushStack(winnow(this, selector || [], true));\n },\n is: function (selector) {\n return !!winnow(this,\n // If this is a positional/relative selector, check membership in the returned set\n // so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n typeof selector === \"string\" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;\n }\n });\n\n // Initialize a jQuery object\n\n // A central reference to the root jQuery(document)\n var rootjQuery,\n // A simple way to check for HTML strings\n // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n // Strict HTML recognition (#11290: must start with <)\n // Shortcut simple #id case for speed\n rquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n init = jQuery.fn.init = function (selector, context, root) {\n var match, elem;\n\n // HANDLE: $(\"\"), $(null), $(undefined), $(false)\n if (!selector) {\n return this;\n }\n\n // Method init() accepts an alternate rootjQuery\n // so migrate can support jQuery.sub (gh-2101)\n root = root || rootjQuery;\n\n // Handle HTML strings\n if (typeof selector === \"string\") {\n if (selector[0] === \"<\" && selector[selector.length - 1] === \">\" && selector.length >= 3) {\n // Assume that strings that start and end with <> are HTML and skip the regex check\n match = [null, selector, null];\n } else {\n match = rquickExpr.exec(selector);\n }\n\n // Match html or make sure no context is specified for #id\n if (match && (match[1] || !context)) {\n // HANDLE: $(html) -> $(array)\n if (match[1]) {\n context = context instanceof jQuery ? context[0] : context;\n\n // Option to run scripts is true for back-compat\n // Intentionally let the error be thrown if parseHTML is not present\n jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true));\n\n // HANDLE: $(html, props)\n if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {\n for (match in context) {\n // Properties of context are called as methods if possible\n if (jQuery.isFunction(this[match])) {\n this[match](context[match]);\n\n // ...and otherwise set as attributes\n } else {\n this.attr(match, context[match]);\n }\n }\n }\n return this;\n\n // HANDLE: $(#id)\n } else {\n elem = document.getElementById(match[2]);\n if (elem) {\n // Inject the element directly into the jQuery object\n this[0] = elem;\n this.length = 1;\n }\n return this;\n }\n\n // HANDLE: $(expr, $(...))\n } else if (!context || context.jquery) {\n return (context || root).find(selector);\n\n // HANDLE: $(expr, context)\n // (which is just equivalent to: $(context).find(expr)\n } else {\n return this.constructor(context).find(selector);\n }\n\n // HANDLE: $(DOMElement)\n } else if (selector.nodeType) {\n this[0] = selector;\n this.length = 1;\n return this;\n\n // HANDLE: $(function)\n // Shortcut for document ready\n } else if (jQuery.isFunction(selector)) {\n return root.ready !== undefined ? root.ready(selector) :\n // Execute immediately if ready is not present\n selector(jQuery);\n }\n return jQuery.makeArray(selector, this);\n };\n\n // Give the init function the jQuery prototype for later instantiation\n init.prototype = jQuery.fn;\n\n // Initialize central reference\n rootjQuery = jQuery(document);\n var rparentsprev = /^(?:parents|prev(?:Until|All))/,\n // Methods guaranteed to produce a unique set when starting from a unique set\n guaranteedUnique = {\n children: true,\n contents: true,\n next: true,\n prev: true\n };\n jQuery.fn.extend({\n has: function (target) {\n var targets = jQuery(target, this),\n l = targets.length;\n return this.filter(function () {\n var i = 0;\n for (; i < l; i++) {\n if (jQuery.contains(this, targets[i])) {\n return true;\n }\n }\n });\n },\n closest: function (selectors, context) {\n var cur,\n i = 0,\n l = this.length,\n matched = [],\n targets = typeof selectors !== \"string\" && jQuery(selectors);\n\n // Positional selectors never match, since there's no _selection_ context\n if (!rneedsContext.test(selectors)) {\n for (; i < l; i++) {\n for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {\n // Always skip document fragments\n if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 :\n // Don't pass non-elements to Sizzle\n cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {\n matched.push(cur);\n break;\n }\n }\n }\n }\n return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);\n },\n // Determine the position of an element within the set\n index: function (elem) {\n // No argument, return index in parent\n if (!elem) {\n return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;\n }\n\n // Index in selector\n if (typeof elem === \"string\") {\n return indexOf.call(jQuery(elem), this[0]);\n }\n\n // Locate the position of the desired element\n return indexOf.call(this,\n // If it receives a jQuery object, the first element is used\n elem.jquery ? elem[0] : elem);\n },\n add: function (selector, context) {\n return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context))));\n },\n addBack: function (selector) {\n return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));\n }\n });\n function sibling(cur, dir) {\n while ((cur = cur[dir]) && cur.nodeType !== 1) {}\n return cur;\n }\n jQuery.each({\n parent: function (elem) {\n var parent = elem.parentNode;\n return parent && parent.nodeType !== 11 ? parent : null;\n },\n parents: function (elem) {\n return dir(elem, \"parentNode\");\n },\n parentsUntil: function (elem, i, until) {\n return dir(elem, \"parentNode\", until);\n },\n next: function (elem) {\n return sibling(elem, \"nextSibling\");\n },\n prev: function (elem) {\n return sibling(elem, \"previousSibling\");\n },\n nextAll: function (elem) {\n return dir(elem, \"nextSibling\");\n },\n prevAll: function (elem) {\n return dir(elem, \"previousSibling\");\n },\n nextUntil: function (elem, i, until) {\n return dir(elem, \"nextSibling\", until);\n },\n prevUntil: function (elem, i, until) {\n return dir(elem, \"previousSibling\", until);\n },\n siblings: function (elem) {\n return siblings((elem.parentNode || {}).firstChild, elem);\n },\n children: function (elem) {\n return siblings(elem.firstChild);\n },\n contents: function (elem) {\n return elem.contentDocument || jQuery.merge([], elem.childNodes);\n }\n }, function (name, fn) {\n jQuery.fn[name] = function (until, selector) {\n var matched = jQuery.map(this, fn, until);\n if (name.slice(-5) !== \"Until\") {\n selector = until;\n }\n if (selector && typeof selector === \"string\") {\n matched = jQuery.filter(selector, matched);\n }\n if (this.length > 1) {\n // Remove duplicates\n if (!guaranteedUnique[name]) {\n jQuery.uniqueSort(matched);\n }\n\n // Reverse order for parents* and prev-derivatives\n if (rparentsprev.test(name)) {\n matched.reverse();\n }\n }\n return this.pushStack(matched);\n };\n });\n var rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g;\n\n // Convert String-formatted options into Object-formatted ones\n function createOptions(options) {\n var object = {};\n jQuery.each(options.match(rnothtmlwhite) || [], function (_, flag) {\n object[flag] = true;\n });\n return object;\n }\n\n /*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\n jQuery.Callbacks = function (options) {\n // Convert options from String-formatted to Object-formatted if needed\n // (we check in cache first)\n options = typeof options === \"string\" ? createOptions(options) : jQuery.extend({}, options);\n var\n // Flag to know if list is currently firing\n firing,\n // Last fire value for non-forgettable lists\n memory,\n // Flag to know if list was already fired\n fired,\n // Flag to prevent firing\n locked,\n // Actual callback list\n list = [],\n // Queue of execution data for repeatable lists\n queue = [],\n // Index of currently firing callback (modified by add/remove as needed)\n firingIndex = -1,\n // Fire callbacks\n fire = function () {\n // Enforce single-firing\n locked = options.once;\n\n // Execute callbacks for all pending executions,\n // respecting firingIndex overrides and runtime changes\n fired = firing = true;\n for (; queue.length; firingIndex = -1) {\n memory = queue.shift();\n while (++firingIndex < list.length) {\n // Run callback and check for early termination\n if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {\n // Jump to end and forget the data so .add doesn't re-fire\n firingIndex = list.length;\n memory = false;\n }\n }\n }\n\n // Forget the data if we're done with it\n if (!options.memory) {\n memory = false;\n }\n firing = false;\n\n // Clean up if we're done firing for good\n if (locked) {\n // Keep an empty list if we have data for future add calls\n if (memory) {\n list = [];\n\n // Otherwise, this object is spent\n } else {\n list = \"\";\n }\n }\n },\n // Actual Callbacks object\n self = {\n // Add a callback or a collection of callbacks to the list\n add: function () {\n if (list) {\n // If we have memory from a past run, we should fire after adding\n if (memory && !firing) {\n firingIndex = list.length - 1;\n queue.push(memory);\n }\n (function add(args) {\n jQuery.each(args, function (_, arg) {\n if (jQuery.isFunction(arg)) {\n if (!options.unique || !self.has(arg)) {\n list.push(arg);\n }\n } else if (arg && arg.length && jQuery.type(arg) !== \"string\") {\n // Inspect recursively\n add(arg);\n }\n });\n })(arguments);\n if (memory && !firing) {\n fire();\n }\n }\n return this;\n },\n // Remove a callback from the list\n remove: function () {\n jQuery.each(arguments, function (_, arg) {\n var index;\n while ((index = jQuery.inArray(arg, list, index)) > -1) {\n list.splice(index, 1);\n\n // Handle firing indexes\n if (index <= firingIndex) {\n firingIndex--;\n }\n }\n });\n return this;\n },\n // Check if a given callback is in the list.\n // If no argument is given, return whether or not list has callbacks attached.\n has: function (fn) {\n return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;\n },\n // Remove all callbacks from the list\n empty: function () {\n if (list) {\n list = [];\n }\n return this;\n },\n // Disable .fire and .add\n // Abort any current/pending executions\n // Clear all callbacks and values\n disable: function () {\n locked = queue = [];\n list = memory = \"\";\n return this;\n },\n disabled: function () {\n return !list;\n },\n // Disable .fire\n // Also disable .add unless we have memory (since it would have no effect)\n // Abort any pending executions\n lock: function () {\n locked = queue = [];\n if (!memory && !firing) {\n list = memory = \"\";\n }\n return this;\n },\n locked: function () {\n return !!locked;\n },\n // Call all callbacks with the given context and arguments\n fireWith: function (context, args) {\n if (!locked) {\n args = args || [];\n args = [context, args.slice ? args.slice() : args];\n queue.push(args);\n if (!firing) {\n fire();\n }\n }\n return this;\n },\n // Call all the callbacks with the given arguments\n fire: function () {\n self.fireWith(this, arguments);\n return this;\n },\n // To know if the callbacks have already been called at least once\n fired: function () {\n return !!fired;\n }\n };\n return self;\n };\n function Identity(v) {\n return v;\n }\n function Thrower(ex) {\n throw ex;\n }\n function adoptValue(value, resolve, reject) {\n var method;\n try {\n // Check for promise aspect first to privilege synchronous behavior\n if (value && jQuery.isFunction(method = value.promise)) {\n method.call(value).done(resolve).fail(reject);\n\n // Other thenables\n } else if (value && jQuery.isFunction(method = value.then)) {\n method.call(value, resolve, reject);\n\n // Other non-thenables\n } else {\n // Support: Android 4.0 only\n // Strict mode functions invoked without .call/.apply get global-object context\n resolve.call(undefined, value);\n }\n\n // For Promises/A+, convert exceptions into rejections\n // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n // Deferred#then to conditionally suppress rejection.\n } catch (value) {\n // Support: Android 4.0 only\n // Strict mode functions invoked without .call/.apply get global-object context\n reject.call(undefined, value);\n }\n }\n jQuery.extend({\n Deferred: function (func) {\n var tuples = [\n // action, add listener, callbacks,\n // ... .then handlers, argument index, [final state]\n [\"notify\", \"progress\", jQuery.Callbacks(\"memory\"), jQuery.Callbacks(\"memory\"), 2], [\"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 0, \"resolved\"], [\"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 1, \"rejected\"]],\n state = \"pending\",\n promise = {\n state: function () {\n return state;\n },\n always: function () {\n deferred.done(arguments).fail(arguments);\n return this;\n },\n \"catch\": function (fn) {\n return promise.then(null, fn);\n },\n // Keep pipe for back-compat\n pipe: function /* fnDone, fnFail, fnProgress */\n () {\n var fns = arguments;\n return jQuery.Deferred(function (newDefer) {\n jQuery.each(tuples, function (i, tuple) {\n // Map tuples (progress, done, fail) to arguments (done, fail, progress)\n var fn = jQuery.isFunction(fns[tuple[4]]) && fns[tuple[4]];\n\n // deferred.progress(function() { bind to newDefer or newDefer.notify })\n // deferred.done(function() { bind to newDefer or newDefer.resolve })\n // deferred.fail(function() { bind to newDefer or newDefer.reject })\n deferred[tuple[1]](function () {\n var returned = fn && fn.apply(this, arguments);\n if (returned && jQuery.isFunction(returned.promise)) {\n returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);\n } else {\n newDefer[tuple[0] + \"With\"](this, fn ? [returned] : arguments);\n }\n });\n });\n fns = null;\n }).promise();\n },\n then: function (onFulfilled, onRejected, onProgress) {\n var maxDepth = 0;\n function resolve(depth, deferred, handler, special) {\n return function () {\n var that = this,\n args = arguments,\n mightThrow = function () {\n var returned, then;\n\n // Support: Promises/A+ section 2.3.3.3.3\n // https://promisesaplus.com/#point-59\n // Ignore double-resolution attempts\n if (depth < maxDepth) {\n return;\n }\n returned = handler.apply(that, args);\n\n // Support: Promises/A+ section 2.3.1\n // https://promisesaplus.com/#point-48\n if (returned === deferred.promise()) {\n throw new TypeError(\"Thenable self-resolution\");\n }\n\n // Support: Promises/A+ sections 2.3.3.1, 3.5\n // https://promisesaplus.com/#point-54\n // https://promisesaplus.com/#point-75\n // Retrieve `then` only once\n then = returned && (\n // Support: Promises/A+ section 2.3.4\n // https://promisesaplus.com/#point-64\n // Only check objects and functions for thenability\n typeof returned === \"object\" || typeof returned === \"function\") && returned.then;\n\n // Handle a returned thenable\n if (jQuery.isFunction(then)) {\n // Special processors (notify) just wait for resolution\n if (special) {\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special));\n\n // Normal processors (resolve) also hook into progress\n } else {\n // ...and disregard older resolution values\n maxDepth++;\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith));\n }\n\n // Handle all other returned values\n } else {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Identity) {\n that = undefined;\n args = [returned];\n }\n\n // Process the value(s)\n // Default process is resolve\n (special || deferred.resolveWith)(that, args);\n }\n },\n // Only normal processors (resolve) catch and reject exceptions\n process = special ? mightThrow : function () {\n try {\n mightThrow();\n } catch (e) {\n if (jQuery.Deferred.exceptionHook) {\n jQuery.Deferred.exceptionHook(e, process.stackTrace);\n }\n\n // Support: Promises/A+ section 2.3.3.3.4.1\n // https://promisesaplus.com/#point-61\n // Ignore post-resolution exceptions\n if (depth + 1 >= maxDepth) {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Thrower) {\n that = undefined;\n args = [e];\n }\n deferred.rejectWith(that, args);\n }\n }\n };\n\n // Support: Promises/A+ section 2.3.3.3.1\n // https://promisesaplus.com/#point-57\n // Re-resolve promises immediately to dodge false rejection from\n // subsequent errors\n if (depth) {\n process();\n } else {\n // Call an optional hook to record the stack, in case of exception\n // since it's otherwise lost when execution goes async\n if (jQuery.Deferred.getStackHook) {\n process.stackTrace = jQuery.Deferred.getStackHook();\n }\n window.setTimeout(process);\n }\n };\n }\n return jQuery.Deferred(function (newDefer) {\n // progress_handlers.add( ... )\n tuples[0][3].add(resolve(0, newDefer, jQuery.isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith));\n\n // fulfilled_handlers.add( ... )\n tuples[1][3].add(resolve(0, newDefer, jQuery.isFunction(onFulfilled) ? onFulfilled : Identity));\n\n // rejected_handlers.add( ... )\n tuples[2][3].add(resolve(0, newDefer, jQuery.isFunction(onRejected) ? onRejected : Thrower));\n }).promise();\n },\n // Get a promise for this deferred\n // If obj is provided, the promise aspect is added to the object\n promise: function (obj) {\n return obj != null ? jQuery.extend(obj, promise) : promise;\n }\n },\n deferred = {};\n\n // Add list-specific methods\n jQuery.each(tuples, function (i, tuple) {\n var list = tuple[2],\n stateString = tuple[5];\n\n // promise.progress = list.add\n // promise.done = list.add\n // promise.fail = list.add\n promise[tuple[1]] = list.add;\n\n // Handle state\n if (stateString) {\n list.add(function () {\n // state = \"resolved\" (i.e., fulfilled)\n // state = \"rejected\"\n state = stateString;\n },\n // rejected_callbacks.disable\n // fulfilled_callbacks.disable\n tuples[3 - i][2].disable,\n // progress_callbacks.lock\n tuples[0][2].lock);\n }\n\n // progress_handlers.fire\n // fulfilled_handlers.fire\n // rejected_handlers.fire\n list.add(tuple[3].fire);\n\n // deferred.notify = function() { deferred.notifyWith(...) }\n // deferred.resolve = function() { deferred.resolveWith(...) }\n // deferred.reject = function() { deferred.rejectWith(...) }\n deferred[tuple[0]] = function () {\n deferred[tuple[0] + \"With\"](this === deferred ? undefined : this, arguments);\n return this;\n };\n\n // deferred.notifyWith = list.fireWith\n // deferred.resolveWith = list.fireWith\n // deferred.rejectWith = list.fireWith\n deferred[tuple[0] + \"With\"] = list.fireWith;\n });\n\n // Make the deferred a promise\n promise.promise(deferred);\n\n // Call given func if any\n if (func) {\n func.call(deferred, deferred);\n }\n\n // All done!\n return deferred;\n },\n // Deferred helper\n when: function (singleValue) {\n var\n // count of uncompleted subordinates\n remaining = arguments.length,\n // count of unprocessed arguments\n i = remaining,\n // subordinate fulfillment data\n resolveContexts = Array(i),\n resolveValues = slice.call(arguments),\n // the master Deferred\n master = jQuery.Deferred(),\n // subordinate callback factory\n updateFunc = function (i) {\n return function (value) {\n resolveContexts[i] = this;\n resolveValues[i] = arguments.length > 1 ? slice.call(arguments) : value;\n if (! --remaining) {\n master.resolveWith(resolveContexts, resolveValues);\n }\n };\n };\n\n // Single- and empty arguments are adopted like Promise.resolve\n if (remaining <= 1) {\n adoptValue(singleValue, master.done(updateFunc(i)).resolve, master.reject);\n\n // Use .then() to unwrap secondary thenables (cf. gh-3000)\n if (master.state() === \"pending\" || jQuery.isFunction(resolveValues[i] && resolveValues[i].then)) {\n return master.then();\n }\n }\n\n // Multiple arguments are aggregated like Promise.all array elements\n while (i--) {\n adoptValue(resolveValues[i], updateFunc(i), master.reject);\n }\n return master.promise();\n }\n });\n\n // These usually indicate a programmer mistake during development,\n // warn about them ASAP rather than swallowing them by default.\n var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n jQuery.Deferred.exceptionHook = function (error, stack) {\n // Support: IE 8 - 9 only\n // Console exists when dev tools are open, which can happen at any time\n if (window.console && window.console.warn && error && rerrorNames.test(error.name)) {\n window.console.warn(\"jQuery.Deferred exception: \" + error.message, error.stack, stack);\n }\n };\n jQuery.readyException = function (error) {\n window.setTimeout(function () {\n throw error;\n });\n };\n\n // The deferred used on DOM ready\n var readyList = jQuery.Deferred();\n jQuery.fn.ready = function (fn) {\n readyList.then(fn)\n\n // Wrap jQuery.readyException in a function so that the lookup\n // happens at the time of error handling instead of callback\n // registration.\n .catch(function (error) {\n jQuery.readyException(error);\n });\n return this;\n };\n jQuery.extend({\n // Is the DOM ready to be used? Set to true once it occurs.\n isReady: false,\n // A counter to track how many items to wait for before\n // the ready event fires. See #6781\n readyWait: 1,\n // Hold (or release) the ready event\n holdReady: function (hold) {\n if (hold) {\n jQuery.readyWait++;\n } else {\n jQuery.ready(true);\n }\n },\n // Handle when the DOM is ready\n ready: function (wait) {\n // Abort if there are pending holds or we're already ready\n if (wait === true ? --jQuery.readyWait : jQuery.isReady) {\n return;\n }\n\n // Remember that the DOM is ready\n jQuery.isReady = true;\n\n // If a normal DOM Ready event fired, decrement, and wait if need be\n if (wait !== true && --jQuery.readyWait > 0) {\n return;\n }\n\n // If there are functions bound, to execute\n readyList.resolveWith(document, [jQuery]);\n }\n });\n jQuery.ready.then = readyList.then;\n\n // The ready event handler and self cleanup method\n function completed() {\n document.removeEventListener(\"DOMContentLoaded\", completed);\n window.removeEventListener(\"load\", completed);\n jQuery.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\n if (document.readyState === \"complete\" || document.readyState !== \"loading\" && !document.documentElement.doScroll) {\n // Handle it asynchronously to allow scripts the opportunity to delay ready\n window.setTimeout(jQuery.ready);\n } else {\n // Use the handy event callback\n document.addEventListener(\"DOMContentLoaded\", completed);\n\n // A fallback to window.onload, that will always work\n window.addEventListener(\"load\", completed);\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\n var access = function (elems, fn, key, value, chainable, emptyGet, raw) {\n var i = 0,\n len = elems.length,\n bulk = key == null;\n\n // Sets many values\n if (jQuery.type(key) === \"object\") {\n chainable = true;\n for (i in key) {\n access(elems, fn, i, key[i], true, emptyGet, raw);\n }\n\n // Sets one value\n } else if (value !== undefined) {\n chainable = true;\n if (!jQuery.isFunction(value)) {\n raw = true;\n }\n if (bulk) {\n // Bulk operations run against the entire set\n if (raw) {\n fn.call(elems, value);\n fn = null;\n\n // ...except when executing function values\n } else {\n bulk = fn;\n fn = function (elem, key, value) {\n return bulk.call(jQuery(elem), value);\n };\n }\n }\n if (fn) {\n for (; i < len; i++) {\n fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));\n }\n }\n }\n if (chainable) {\n return elems;\n }\n\n // Gets\n if (bulk) {\n return fn.call(elems);\n }\n return len ? fn(elems[0], key) : emptyGet;\n };\n var acceptData = function (owner) {\n // Accepts only:\n // - Node\n // - Node.ELEMENT_NODE\n // - Node.DOCUMENT_NODE\n // - Object\n // - Any\n return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;\n };\n function Data() {\n this.expando = jQuery.expando + Data.uid++;\n }\n Data.uid = 1;\n Data.prototype = {\n cache: function (owner) {\n // Check if the owner object already has a cache\n var value = owner[this.expando];\n\n // If not, create one\n if (!value) {\n value = {};\n\n // We can accept data for non-element nodes in modern browsers,\n // but we should not, see #8335.\n // Always return an empty object.\n if (acceptData(owner)) {\n // If it is a node unlikely to be stringify-ed or looped over\n // use plain assignment\n if (owner.nodeType) {\n owner[this.expando] = value;\n\n // Otherwise secure it in a non-enumerable property\n // configurable must be true to allow the property to be\n // deleted when data is removed\n } else {\n Object.defineProperty(owner, this.expando, {\n value: value,\n configurable: true\n });\n }\n }\n }\n return value;\n },\n set: function (owner, data, value) {\n var prop,\n cache = this.cache(owner);\n\n // Handle: [ owner, key, value ] args\n // Always use camelCase key (gh-2257)\n if (typeof data === \"string\") {\n cache[jQuery.camelCase(data)] = value;\n\n // Handle: [ owner, { properties } ] args\n } else {\n // Copy the properties one-by-one to the cache object\n for (prop in data) {\n cache[jQuery.camelCase(prop)] = data[prop];\n }\n }\n return cache;\n },\n get: function (owner, key) {\n return key === undefined ? this.cache(owner) :\n // Always use camelCase key (gh-2257)\n owner[this.expando] && owner[this.expando][jQuery.camelCase(key)];\n },\n access: function (owner, key, value) {\n // In cases where either:\n //\n // 1. No key was specified\n // 2. A string key was specified, but no value provided\n //\n // Take the \"read\" path and allow the get method to determine\n // which value to return, respectively either:\n //\n // 1. The entire cache object\n // 2. The data stored at the key\n //\n if (key === undefined || key && typeof key === \"string\" && value === undefined) {\n return this.get(owner, key);\n }\n\n // When the key is not a string, or both a key and value\n // are specified, set or extend (existing objects) with either:\n //\n // 1. An object of properties\n // 2. A key and value\n //\n this.set(owner, key, value);\n\n // Since the \"set\" path can have two possible entry points\n // return the expected data based on which path was taken[*]\n return value !== undefined ? value : key;\n },\n remove: function (owner, key) {\n var i,\n cache = owner[this.expando];\n if (cache === undefined) {\n return;\n }\n if (key !== undefined) {\n // Support array or space separated string of keys\n if (jQuery.isArray(key)) {\n // If key is an array of keys...\n // We always set camelCase keys, so remove that.\n key = key.map(jQuery.camelCase);\n } else {\n key = jQuery.camelCase(key);\n\n // If a key with the spaces exists, use it.\n // Otherwise, create an array by matching non-whitespace\n key = key in cache ? [key] : key.match(rnothtmlwhite) || [];\n }\n i = key.length;\n while (i--) {\n delete cache[key[i]];\n }\n }\n\n // Remove the expando if there's no more data\n if (key === undefined || jQuery.isEmptyObject(cache)) {\n // Support: Chrome <=35 - 45\n // Webkit & Blink performance suffers when deleting properties\n // from DOM nodes, so set to undefined instead\n // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n if (owner.nodeType) {\n owner[this.expando] = undefined;\n } else {\n delete owner[this.expando];\n }\n }\n },\n hasData: function (owner) {\n var cache = owner[this.expando];\n return cache !== undefined && !jQuery.isEmptyObject(cache);\n }\n };\n var dataPriv = new Data();\n var dataUser = new Data();\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\n var rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n rmultiDash = /[A-Z]/g;\n function getData(data) {\n if (data === \"true\") {\n return true;\n }\n if (data === \"false\") {\n return false;\n }\n if (data === \"null\") {\n return null;\n }\n\n // Only convert to a number if it doesn't change the string\n if (data === +data + \"\") {\n return +data;\n }\n if (rbrace.test(data)) {\n return JSON.parse(data);\n }\n return data;\n }\n function dataAttr(elem, key, data) {\n var name;\n\n // If nothing was found internally, try to fetch any\n // data from the HTML5 data-* attribute\n if (data === undefined && elem.nodeType === 1) {\n name = \"data-\" + key.replace(rmultiDash, \"-$&\").toLowerCase();\n data = elem.getAttribute(name);\n if (typeof data === \"string\") {\n try {\n data = getData(data);\n } catch (e) {}\n\n // Make sure we set the data so it isn't changed later\n dataUser.set(elem, key, data);\n } else {\n data = undefined;\n }\n }\n return data;\n }\n jQuery.extend({\n hasData: function (elem) {\n return dataUser.hasData(elem) || dataPriv.hasData(elem);\n },\n data: function (elem, name, data) {\n return dataUser.access(elem, name, data);\n },\n removeData: function (elem, name) {\n dataUser.remove(elem, name);\n },\n // TODO: Now that all calls to _data and _removeData have been replaced\n // with direct calls to dataPriv methods, these can be deprecated.\n _data: function (elem, name, data) {\n return dataPriv.access(elem, name, data);\n },\n _removeData: function (elem, name) {\n dataPriv.remove(elem, name);\n }\n });\n jQuery.fn.extend({\n data: function (key, value) {\n var i,\n name,\n data,\n elem = this[0],\n attrs = elem && elem.attributes;\n\n // Gets all values\n if (key === undefined) {\n if (this.length) {\n data = dataUser.get(elem);\n if (elem.nodeType === 1 && !dataPriv.get(elem, \"hasDataAttrs\")) {\n i = attrs.length;\n while (i--) {\n // Support: IE 11 only\n // The attrs elements can be null (#14894)\n if (attrs[i]) {\n name = attrs[i].name;\n if (name.indexOf(\"data-\") === 0) {\n name = jQuery.camelCase(name.slice(5));\n dataAttr(elem, name, data[name]);\n }\n }\n }\n dataPriv.set(elem, \"hasDataAttrs\", true);\n }\n }\n return data;\n }\n\n // Sets multiple values\n if (typeof key === \"object\") {\n return this.each(function () {\n dataUser.set(this, key);\n });\n }\n return access(this, function (value) {\n var data;\n\n // The calling jQuery object (element matches) is not empty\n // (and therefore has an element appears at this[ 0 ]) and the\n // `value` parameter was not undefined. An empty jQuery object\n // will result in `undefined` for elem = this[ 0 ] which will\n // throw an exception if an attempt to read a data cache is made.\n if (elem && value === undefined) {\n // Attempt to get data from the cache\n // The key will always be camelCased in Data\n data = dataUser.get(elem, key);\n if (data !== undefined) {\n return data;\n }\n\n // Attempt to \"discover\" the data in\n // HTML5 custom data-* attrs\n data = dataAttr(elem, key);\n if (data !== undefined) {\n return data;\n }\n\n // We tried really hard, but the data doesn't exist.\n return;\n }\n\n // Set the data...\n this.each(function () {\n // We always store the camelCased key\n dataUser.set(this, key, value);\n });\n }, null, value, arguments.length > 1, null, true);\n },\n removeData: function (key) {\n return this.each(function () {\n dataUser.remove(this, key);\n });\n }\n });\n jQuery.extend({\n queue: function (elem, type, data) {\n var queue;\n if (elem) {\n type = (type || \"fx\") + \"queue\";\n queue = dataPriv.get(elem, type);\n\n // Speed up dequeue by getting out quickly if this is just a lookup\n if (data) {\n if (!queue || jQuery.isArray(data)) {\n queue = dataPriv.access(elem, type, jQuery.makeArray(data));\n } else {\n queue.push(data);\n }\n }\n return queue || [];\n }\n },\n dequeue: function (elem, type) {\n type = type || \"fx\";\n var queue = jQuery.queue(elem, type),\n startLength = queue.length,\n fn = queue.shift(),\n hooks = jQuery._queueHooks(elem, type),\n next = function () {\n jQuery.dequeue(elem, type);\n };\n\n // If the fx queue is dequeued, always remove the progress sentinel\n if (fn === \"inprogress\") {\n fn = queue.shift();\n startLength--;\n }\n if (fn) {\n // Add a progress sentinel to prevent the fx queue from being\n // automatically dequeued\n if (type === \"fx\") {\n queue.unshift(\"inprogress\");\n }\n\n // Clear up the last queue stop function\n delete hooks.stop;\n fn.call(elem, next, hooks);\n }\n if (!startLength && hooks) {\n hooks.empty.fire();\n }\n },\n // Not public - generate a queueHooks object, or return the current one\n _queueHooks: function (elem, type) {\n var key = type + \"queueHooks\";\n return dataPriv.get(elem, key) || dataPriv.access(elem, key, {\n empty: jQuery.Callbacks(\"once memory\").add(function () {\n dataPriv.remove(elem, [type + \"queue\", key]);\n })\n });\n }\n });\n jQuery.fn.extend({\n queue: function (type, data) {\n var setter = 2;\n if (typeof type !== \"string\") {\n data = type;\n type = \"fx\";\n setter--;\n }\n if (arguments.length < setter) {\n return jQuery.queue(this[0], type);\n }\n return data === undefined ? this : this.each(function () {\n var queue = jQuery.queue(this, type, data);\n\n // Ensure a hooks for this queue\n jQuery._queueHooks(this, type);\n if (type === \"fx\" && queue[0] !== \"inprogress\") {\n jQuery.dequeue(this, type);\n }\n });\n },\n dequeue: function (type) {\n return this.each(function () {\n jQuery.dequeue(this, type);\n });\n },\n clearQueue: function (type) {\n return this.queue(type || \"fx\", []);\n },\n // Get a promise resolved when queues of a certain type\n // are emptied (fx is the type by default)\n promise: function (type, obj) {\n var tmp,\n count = 1,\n defer = jQuery.Deferred(),\n elements = this,\n i = this.length,\n resolve = function () {\n if (! --count) {\n defer.resolveWith(elements, [elements]);\n }\n };\n if (typeof type !== \"string\") {\n obj = type;\n type = undefined;\n }\n type = type || \"fx\";\n while (i--) {\n tmp = dataPriv.get(elements[i], type + \"queueHooks\");\n if (tmp && tmp.empty) {\n count++;\n tmp.empty.add(resolve);\n }\n }\n resolve();\n return defer.promise(obj);\n }\n });\n var pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\n var rcssNum = new RegExp(\"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\");\n var cssExpand = [\"Top\", \"Right\", \"Bottom\", \"Left\"];\n var isHiddenWithinTree = function (elem, el) {\n // isHiddenWithinTree might be called from jQuery#filter function;\n // in that case, element will be second argument\n elem = el || elem;\n\n // Inline style trumps all\n return elem.style.display === \"none\" || elem.style.display === \"\" &&\n // Otherwise, check computed style\n // Support: Firefox <=43 - 45\n // Disconnected elements can have computed display: none, so first confirm that elem is\n // in the document.\n jQuery.contains(elem.ownerDocument, elem) && jQuery.css(elem, \"display\") === \"none\";\n };\n var swap = function (elem, options, callback, args) {\n var ret,\n name,\n old = {};\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n old[name] = elem.style[name];\n elem.style[name] = options[name];\n }\n ret = callback.apply(elem, args || []);\n\n // Revert the old values\n for (name in options) {\n elem.style[name] = old[name];\n }\n return ret;\n };\n function adjustCSS(elem, prop, valueParts, tween) {\n var adjusted,\n scale = 1,\n maxIterations = 20,\n currentValue = tween ? function () {\n return tween.cur();\n } : function () {\n return jQuery.css(elem, prop, \"\");\n },\n initial = currentValue(),\n unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? \"\" : \"px\"),\n // Starting value computation is required for potential unit mismatches\n initialInUnit = (jQuery.cssNumber[prop] || unit !== \"px\" && +initial) && rcssNum.exec(jQuery.css(elem, prop));\n if (initialInUnit && initialInUnit[3] !== unit) {\n // Trust units reported by jQuery.css\n unit = unit || initialInUnit[3];\n\n // Make sure we update the tween properties later on\n valueParts = valueParts || [];\n\n // Iteratively approximate from a nonzero starting point\n initialInUnit = +initial || 1;\n do {\n // If previous iteration zeroed out, double until we get *something*.\n // Use string for doubling so we don't accidentally see scale as unchanged below\n scale = scale || \".5\";\n\n // Adjust and apply\n initialInUnit = initialInUnit / scale;\n jQuery.style(elem, prop, initialInUnit + unit);\n\n // Update scale, tolerating zero or NaN from tween.cur()\n // Break the loop if scale is unchanged or perfect, or if we've just had enough.\n } while (scale !== (scale = currentValue() / initial) && scale !== 1 && --maxIterations);\n }\n if (valueParts) {\n initialInUnit = +initialInUnit || +initial || 0;\n\n // Apply relative offset (+=/-=) if specified\n adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];\n if (tween) {\n tween.unit = unit;\n tween.start = initialInUnit;\n tween.end = adjusted;\n }\n }\n return adjusted;\n }\n var defaultDisplayMap = {};\n function getDefaultDisplay(elem) {\n var temp,\n doc = elem.ownerDocument,\n nodeName = elem.nodeName,\n display = defaultDisplayMap[nodeName];\n if (display) {\n return display;\n }\n temp = doc.body.appendChild(doc.createElement(nodeName));\n display = jQuery.css(temp, \"display\");\n temp.parentNode.removeChild(temp);\n if (display === \"none\") {\n display = \"block\";\n }\n defaultDisplayMap[nodeName] = display;\n return display;\n }\n function showHide(elements, show) {\n var display,\n elem,\n values = [],\n index = 0,\n length = elements.length;\n\n // Determine new display value for elements that need to change\n for (; index < length; index++) {\n elem = elements[index];\n if (!elem.style) {\n continue;\n }\n display = elem.style.display;\n if (show) {\n // Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n // check is required in this first loop unless we have a nonempty display value (either\n // inline or about-to-be-restored)\n if (display === \"none\") {\n values[index] = dataPriv.get(elem, \"display\") || null;\n if (!values[index]) {\n elem.style.display = \"\";\n }\n }\n if (elem.style.display === \"\" && isHiddenWithinTree(elem)) {\n values[index] = getDefaultDisplay(elem);\n }\n } else {\n if (display !== \"none\") {\n values[index] = \"none\";\n\n // Remember what we're overwriting\n dataPriv.set(elem, \"display\", display);\n }\n }\n }\n\n // Set the display of the elements in a second loop to avoid constant reflow\n for (index = 0; index < length; index++) {\n if (values[index] != null) {\n elements[index].style.display = values[index];\n }\n }\n return elements;\n }\n jQuery.fn.extend({\n show: function () {\n return showHide(this, true);\n },\n hide: function () {\n return showHide(this);\n },\n toggle: function (state) {\n if (typeof state === \"boolean\") {\n return state ? this.show() : this.hide();\n }\n return this.each(function () {\n if (isHiddenWithinTree(this)) {\n jQuery(this).show();\n } else {\n jQuery(this).hide();\n }\n });\n }\n });\n var rcheckableType = /^(?:checkbox|radio)$/i;\n var rtagName = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i;\n var rscriptType = /^$|\\/(?:java|ecma)script/i;\n\n // We have to close these tags to support XHTML (#13200)\n var wrapMap = {\n // Support: IE <=9 only\n option: [1, \"<select multiple='multiple'>\", \"</select>\"],\n // XHTML parsers do not magically insert elements in the\n // same way that tag soup parsers do. So we cannot shorten\n // this by omitting <tbody> or other required elements.\n thead: [1, \"<table>\", \"</table>\"],\n col: [2, \"<table><colgroup>\", \"</colgroup></table>\"],\n tr: [2, \"<table><tbody>\", \"</tbody></table>\"],\n td: [3, \"<table><tbody><tr>\", \"</tr></tbody></table>\"],\n _default: [0, \"\", \"\"]\n };\n\n // Support: IE <=9 only\n wrapMap.optgroup = wrapMap.option;\n wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n wrapMap.th = wrapMap.td;\n function getAll(context, tag) {\n // Support: IE <=9 - 11 only\n // Use typeof to avoid zero-argument method invocation on host objects (#15151)\n var ret;\n if (typeof context.getElementsByTagName !== \"undefined\") {\n ret = context.getElementsByTagName(tag || \"*\");\n } else if (typeof context.querySelectorAll !== \"undefined\") {\n ret = context.querySelectorAll(tag || \"*\");\n } else {\n ret = [];\n }\n if (tag === undefined || tag && jQuery.nodeName(context, tag)) {\n return jQuery.merge([context], ret);\n }\n return ret;\n }\n\n // Mark scripts as having already been evaluated\n function setGlobalEval(elems, refElements) {\n var i = 0,\n l = elems.length;\n for (; i < l; i++) {\n dataPriv.set(elems[i], \"globalEval\", !refElements || dataPriv.get(refElements[i], \"globalEval\"));\n }\n }\n var rhtml = /<|&#?\\w+;/;\n function buildFragment(elems, context, scripts, selection, ignored) {\n var elem,\n tmp,\n tag,\n wrap,\n contains,\n j,\n fragment = context.createDocumentFragment(),\n nodes = [],\n i = 0,\n l = elems.length;\n for (; i < l; i++) {\n elem = elems[i];\n if (elem || elem === 0) {\n // Add nodes directly\n if (jQuery.type(elem) === \"object\") {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, elem.nodeType ? [elem] : elem);\n\n // Convert non-html into a text node\n } else if (!rhtml.test(elem)) {\n nodes.push(context.createTextNode(elem));\n\n // Convert html into DOM nodes\n } else {\n tmp = tmp || fragment.appendChild(context.createElement(\"div\"));\n\n // Deserialize a standard representation\n tag = (rtagName.exec(elem) || [\"\", \"\"])[1].toLowerCase();\n wrap = wrapMap[tag] || wrapMap._default;\n tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2];\n\n // Descend through wrappers to the right content\n j = wrap[0];\n while (j--) {\n tmp = tmp.lastChild;\n }\n\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, tmp.childNodes);\n\n // Remember the top-level container\n tmp = fragment.firstChild;\n\n // Ensure the created nodes are orphaned (#12392)\n tmp.textContent = \"\";\n }\n }\n }\n\n // Remove wrapper from fragment\n fragment.textContent = \"\";\n i = 0;\n while (elem = nodes[i++]) {\n // Skip elements already in the context collection (trac-4087)\n if (selection && jQuery.inArray(elem, selection) > -1) {\n if (ignored) {\n ignored.push(elem);\n }\n continue;\n }\n contains = jQuery.contains(elem.ownerDocument, elem);\n\n // Append to fragment\n tmp = getAll(fragment.appendChild(elem), \"script\");\n\n // Preserve script evaluation history\n if (contains) {\n setGlobalEval(tmp);\n }\n\n // Capture executables\n if (scripts) {\n j = 0;\n while (elem = tmp[j++]) {\n if (rscriptType.test(elem.type || \"\")) {\n scripts.push(elem);\n }\n }\n }\n }\n return fragment;\n }\n (function () {\n var fragment = document.createDocumentFragment(),\n div = fragment.appendChild(document.createElement(\"div\")),\n input = document.createElement(\"input\");\n\n // Support: Android 4.0 - 4.3 only\n // Check state lost if the name is set (#11217)\n // Support: Windows Web Apps (WWA)\n // `name` and `type` must use .setAttribute for WWA (#14901)\n input.setAttribute(\"type\", \"radio\");\n input.setAttribute(\"checked\", \"checked\");\n input.setAttribute(\"name\", \"t\");\n div.appendChild(input);\n\n // Support: Android <=4.1 only\n // Older WebKit doesn't clone checked state correctly in fragments\n support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;\n\n // Support: IE <=11 only\n // Make sure textarea (and checkbox) defaultValue is properly cloned\n div.innerHTML = \"<textarea>x</textarea>\";\n support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;\n })();\n var documentElement = document.documentElement;\n var rkeyEvent = /^key/,\n rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n function returnTrue() {\n return true;\n }\n function returnFalse() {\n return false;\n }\n\n // Support: IE <=9 only\n // See #13393 for more info\n function safeActiveElement() {\n try {\n return document.activeElement;\n } catch (err) {}\n }\n function on(elem, types, selector, data, fn, one) {\n var origFn, type;\n\n // Types can be a map of types/handlers\n if (typeof types === \"object\") {\n // ( types-Object, selector, data )\n if (typeof selector !== \"string\") {\n // ( types-Object, data )\n data = data || selector;\n selector = undefined;\n }\n for (type in types) {\n on(elem, type, selector, data, types[type], one);\n }\n return elem;\n }\n if (data == null && fn == null) {\n // ( types, fn )\n fn = selector;\n data = selector = undefined;\n } else if (fn == null) {\n if (typeof selector === \"string\") {\n // ( types, selector, fn )\n fn = data;\n data = undefined;\n } else {\n // ( types, data, fn )\n fn = data;\n data = selector;\n selector = undefined;\n }\n }\n if (fn === false) {\n fn = returnFalse;\n } else if (!fn) {\n return elem;\n }\n if (one === 1) {\n origFn = fn;\n fn = function (event) {\n // Can use an empty set, since event contains the info\n jQuery().off(event);\n return origFn.apply(this, arguments);\n };\n\n // Use same guid so caller can remove using origFn\n fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);\n }\n return elem.each(function () {\n jQuery.event.add(this, types, fn, data, selector);\n });\n }\n\n /*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\n jQuery.event = {\n global: {},\n add: function (elem, types, handler, data, selector) {\n var handleObjIn,\n eventHandle,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.get(elem);\n\n // Don't attach events to noData or text/comment nodes (but allow plain objects)\n if (!elemData) {\n return;\n }\n\n // Caller can pass in an object of custom data in lieu of the handler\n if (handler.handler) {\n handleObjIn = handler;\n handler = handleObjIn.handler;\n selector = handleObjIn.selector;\n }\n\n // Ensure that invalid selectors throw exceptions at attach time\n // Evaluate against documentElement in case elem is a non-element node (e.g., document)\n if (selector) {\n jQuery.find.matchesSelector(documentElement, selector);\n }\n\n // Make sure that the handler has a unique ID, used to find/remove it later\n if (!handler.guid) {\n handler.guid = jQuery.guid++;\n }\n\n // Init the element's event structure and main handler, if this is the first\n if (!(events = elemData.events)) {\n events = elemData.events = {};\n }\n if (!(eventHandle = elemData.handle)) {\n eventHandle = elemData.handle = function (e) {\n // Discard the second event of a jQuery.event.trigger() and\n // when an event is called after a page has unloaded\n return typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined;\n };\n }\n\n // Handle multiple events separated by a space\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort();\n\n // There *must* be a type, no attaching namespace-only handlers\n if (!type) {\n continue;\n }\n\n // If event changes its type, use the special event handlers for the changed type\n special = jQuery.event.special[type] || {};\n\n // If selector defined, determine special event api type, otherwise given type\n type = (selector ? special.delegateType : special.bindType) || type;\n\n // Update special based on newly reset type\n special = jQuery.event.special[type] || {};\n\n // handleObj is passed to all event handlers\n handleObj = jQuery.extend({\n type: type,\n origType: origType,\n data: data,\n handler: handler,\n guid: handler.guid,\n selector: selector,\n needsContext: selector && jQuery.expr.match.needsContext.test(selector),\n namespace: namespaces.join(\".\")\n }, handleObjIn);\n\n // Init the event handler queue if we're the first\n if (!(handlers = events[type])) {\n handlers = events[type] = [];\n handlers.delegateCount = 0;\n\n // Only use addEventListener if the special events handler returns false\n if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {\n if (elem.addEventListener) {\n elem.addEventListener(type, eventHandle);\n }\n }\n }\n if (special.add) {\n special.add.call(elem, handleObj);\n if (!handleObj.handler.guid) {\n handleObj.handler.guid = handler.guid;\n }\n }\n\n // Add to the element's handler list, delegates in front\n if (selector) {\n handlers.splice(handlers.delegateCount++, 0, handleObj);\n } else {\n handlers.push(handleObj);\n }\n\n // Keep track of which events have ever been used, for event optimization\n jQuery.event.global[type] = true;\n }\n },\n // Detach an event or set of events from an element\n remove: function (elem, types, handler, selector, mappedTypes) {\n var j,\n origCount,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.hasData(elem) && dataPriv.get(elem);\n if (!elemData || !(events = elemData.events)) {\n return;\n }\n\n // Once for each type.namespace in types; type may be omitted\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort();\n\n // Unbind all events (on this namespace, if provided) for the element\n if (!type) {\n for (type in events) {\n jQuery.event.remove(elem, type + types[t], handler, selector, true);\n }\n continue;\n }\n special = jQuery.event.special[type] || {};\n type = (selector ? special.delegateType : special.bindType) || type;\n handlers = events[type] || [];\n tmp = tmp[2] && new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\");\n\n // Remove matching events\n origCount = j = handlers.length;\n while (j--) {\n handleObj = handlers[j];\n if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector)) {\n handlers.splice(j, 1);\n if (handleObj.selector) {\n handlers.delegateCount--;\n }\n if (special.remove) {\n special.remove.call(elem, handleObj);\n }\n }\n }\n\n // Remove generic event handler if we removed something and no more handlers exist\n // (avoids potential for endless recursion during removal of special event handlers)\n if (origCount && !handlers.length) {\n if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {\n jQuery.removeEvent(elem, type, elemData.handle);\n }\n delete events[type];\n }\n }\n\n // Remove data and the expando if it's no longer used\n if (jQuery.isEmptyObject(events)) {\n dataPriv.remove(elem, \"handle events\");\n }\n },\n dispatch: function (nativeEvent) {\n // Make a writable jQuery.Event from the native event object\n var event = jQuery.event.fix(nativeEvent);\n var i,\n j,\n ret,\n matched,\n handleObj,\n handlerQueue,\n args = new Array(arguments.length),\n handlers = (dataPriv.get(this, \"events\") || {})[event.type] || [],\n special = jQuery.event.special[event.type] || {};\n\n // Use the fix-ed jQuery.Event rather than the (read-only) native event\n args[0] = event;\n for (i = 1; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n event.delegateTarget = this;\n\n // Call the preDispatch hook for the mapped type, and let it bail if desired\n if (special.preDispatch && special.preDispatch.call(this, event) === false) {\n return;\n }\n\n // Determine handlers\n handlerQueue = jQuery.event.handlers.call(this, event, handlers);\n\n // Run delegates first; they may want to stop propagation beneath us\n i = 0;\n while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {\n event.currentTarget = matched.elem;\n j = 0;\n while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {\n // Triggered event must either 1) have no namespace, or 2) have namespace(s)\n // a subset or equal to those in the bound event (both can have no namespace).\n if (!event.rnamespace || event.rnamespace.test(handleObj.namespace)) {\n event.handleObj = handleObj;\n event.data = handleObj.data;\n ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);\n if (ret !== undefined) {\n if ((event.result = ret) === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n }\n }\n\n // Call the postDispatch hook for the mapped type\n if (special.postDispatch) {\n special.postDispatch.call(this, event);\n }\n return event.result;\n },\n handlers: function (event, handlers) {\n var i,\n handleObj,\n sel,\n matchedHandlers,\n matchedSelectors,\n handlerQueue = [],\n delegateCount = handlers.delegateCount,\n cur = event.target;\n\n // Find delegate handlers\n if (delegateCount &&\n // Support: IE <=9\n // Black-hole SVG <use> instance trees (trac-13180)\n cur.nodeType &&\n // Support: Firefox <=42\n // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n // Support: IE 11 only\n // ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n !(event.type === \"click\" && event.button >= 1)) {\n for (; cur !== this; cur = cur.parentNode || this) {\n // Don't check non-elements (#13208)\n // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n if (cur.nodeType === 1 && !(event.type === \"click\" && cur.disabled === true)) {\n matchedHandlers = [];\n matchedSelectors = {};\n for (i = 0; i < delegateCount; i++) {\n handleObj = handlers[i];\n\n // Don't conflict with Object.prototype properties (#13203)\n sel = handleObj.selector + \" \";\n if (matchedSelectors[sel] === undefined) {\n matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;\n }\n if (matchedSelectors[sel]) {\n matchedHandlers.push(handleObj);\n }\n }\n if (matchedHandlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: matchedHandlers\n });\n }\n }\n }\n }\n\n // Add the remaining (directly-bound) handlers\n cur = this;\n if (delegateCount < handlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: handlers.slice(delegateCount)\n });\n }\n return handlerQueue;\n },\n addProp: function (name, hook) {\n Object.defineProperty(jQuery.Event.prototype, name, {\n enumerable: true,\n configurable: true,\n get: jQuery.isFunction(hook) ? function () {\n if (this.originalEvent) {\n return hook(this.originalEvent);\n }\n } : function () {\n if (this.originalEvent) {\n return this.originalEvent[name];\n }\n },\n set: function (value) {\n Object.defineProperty(this, name, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n });\n }\n });\n },\n fix: function (originalEvent) {\n return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent);\n },\n special: {\n load: {\n // Prevent triggered image.load events from bubbling to window.load\n noBubble: true\n },\n focus: {\n // Fire native event if possible so blur/focus sequence is correct\n trigger: function () {\n if (this !== safeActiveElement() && this.focus) {\n this.focus();\n return false;\n }\n },\n delegateType: \"focusin\"\n },\n blur: {\n trigger: function () {\n if (this === safeActiveElement() && this.blur) {\n this.blur();\n return false;\n }\n },\n delegateType: \"focusout\"\n },\n click: {\n // For checkbox, fire native event so checked state will be right\n trigger: function () {\n if (this.type === \"checkbox\" && this.click && jQuery.nodeName(this, \"input\")) {\n this.click();\n return false;\n }\n },\n // For cross-browser consistency, don't fire native .click() on links\n _default: function (event) {\n return jQuery.nodeName(event.target, \"a\");\n }\n },\n beforeunload: {\n postDispatch: function (event) {\n // Support: Firefox 20+\n // Firefox doesn't alert if the returnValue field is not set.\n if (event.result !== undefined && event.originalEvent) {\n event.originalEvent.returnValue = event.result;\n }\n }\n }\n }\n };\n jQuery.removeEvent = function (elem, type, handle) {\n // This \"if\" is needed for plain objects\n if (elem.removeEventListener) {\n elem.removeEventListener(type, handle);\n }\n };\n jQuery.Event = function (src, props) {\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof jQuery.Event)) {\n return new jQuery.Event(src, props);\n }\n\n // Event object\n if (src && src.type) {\n this.originalEvent = src;\n this.type = src.type;\n\n // Events bubbling up the document may have been marked as prevented\n // by a handler lower down the tree; reflect the correct value.\n this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined &&\n // Support: Android <=2.3 only\n src.returnValue === false ? returnTrue : returnFalse;\n\n // Create target properties\n // Support: Safari <=6 - 7 only\n // Target should not be a text node (#504, #13143)\n this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;\n this.currentTarget = src.currentTarget;\n this.relatedTarget = src.relatedTarget;\n\n // Event type\n } else {\n this.type = src;\n }\n\n // Put explicitly provided properties onto the event object\n if (props) {\n jQuery.extend(this, props);\n }\n\n // Create a timestamp if incoming event doesn't have one\n this.timeStamp = src && src.timeStamp || jQuery.now();\n\n // Mark it as fixed\n this[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\n jQuery.Event.prototype = {\n constructor: jQuery.Event,\n isDefaultPrevented: returnFalse,\n isPropagationStopped: returnFalse,\n isImmediatePropagationStopped: returnFalse,\n isSimulated: false,\n preventDefault: function () {\n var e = this.originalEvent;\n this.isDefaultPrevented = returnTrue;\n if (e && !this.isSimulated) {\n e.preventDefault();\n }\n },\n stopPropagation: function () {\n var e = this.originalEvent;\n this.isPropagationStopped = returnTrue;\n if (e && !this.isSimulated) {\n e.stopPropagation();\n }\n },\n stopImmediatePropagation: function () {\n var e = this.originalEvent;\n this.isImmediatePropagationStopped = returnTrue;\n if (e && !this.isSimulated) {\n e.stopImmediatePropagation();\n }\n this.stopPropagation();\n }\n };\n\n // Includes all common event props including KeyEvent and MouseEvent specific props\n jQuery.each({\n altKey: true,\n bubbles: true,\n cancelable: true,\n changedTouches: true,\n ctrlKey: true,\n detail: true,\n eventPhase: true,\n metaKey: true,\n pageX: true,\n pageY: true,\n shiftKey: true,\n view: true,\n \"char\": true,\n charCode: true,\n key: true,\n keyCode: true,\n button: true,\n buttons: true,\n clientX: true,\n clientY: true,\n offsetX: true,\n offsetY: true,\n pointerId: true,\n pointerType: true,\n screenX: true,\n screenY: true,\n targetTouches: true,\n toElement: true,\n touches: true,\n which: function (event) {\n var button = event.button;\n\n // Add which for key events\n if (event.which == null && rkeyEvent.test(event.type)) {\n return event.charCode != null ? event.charCode : event.keyCode;\n }\n\n // Add which for click: 1 === left; 2 === middle; 3 === right\n if (!event.which && button !== undefined && rmouseEvent.test(event.type)) {\n if (button & 1) {\n return 1;\n }\n if (button & 2) {\n return 3;\n }\n if (button & 4) {\n return 2;\n }\n return 0;\n }\n return event.which;\n }\n }, jQuery.event.addProp);\n\n // Create mouseenter/leave events using mouseover/out and event-time checks\n // so that event delegation works in jQuery.\n // Do the same for pointerenter/pointerleave and pointerover/pointerout\n //\n // Support: Safari 7 only\n // Safari sends mouseenter too often; see:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n // for the description of the bug (it existed in older Chrome versions as well).\n jQuery.each({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\",\n pointerenter: \"pointerover\",\n pointerleave: \"pointerout\"\n }, function (orig, fix) {\n jQuery.event.special[orig] = {\n delegateType: fix,\n bindType: fix,\n handle: function (event) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj;\n\n // For mouseenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n if (!related || related !== target && !jQuery.contains(target, related)) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply(this, arguments);\n event.type = fix;\n }\n return ret;\n }\n };\n });\n jQuery.fn.extend({\n on: function (types, selector, data, fn) {\n return on(this, types, selector, data, fn);\n },\n one: function (types, selector, data, fn) {\n return on(this, types, selector, data, fn, 1);\n },\n off: function (types, selector, fn) {\n var handleObj, type;\n if (types && types.preventDefault && types.handleObj) {\n // ( event ) dispatched jQuery.Event\n handleObj = types.handleObj;\n jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);\n return this;\n }\n if (typeof types === \"object\") {\n // ( types-object [, selector] )\n for (type in types) {\n this.off(type, selector, types[type]);\n }\n return this;\n }\n if (selector === false || typeof selector === \"function\") {\n // ( types [, fn] )\n fn = selector;\n selector = undefined;\n }\n if (fn === false) {\n fn = returnFalse;\n }\n return this.each(function () {\n jQuery.event.remove(this, types, fn, selector);\n });\n }\n });\n var /* eslint-disable max-len */\n\n // See https://github.com/eslint/eslint/issues/3229\n rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n /* eslint-enable */\n\n // Support: IE <=10 - 11, Edge 12 - 13\n // In IE/Edge using regex groups here causes severe slowdowns.\n // See https://connect.microsoft.com/IE/feedback/details/1736512/\n rnoInnerhtml = /<script|<style|<link/i,\n // checked=\"checked\" or checked\n rchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n rscriptTypeMasked = /^true\\/(.*)/,\n rcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n function manipulationTarget(elem, content) {\n if (jQuery.nodeName(elem, \"table\") && jQuery.nodeName(content.nodeType !== 11 ? content : content.firstChild, \"tr\")) {\n return elem.getElementsByTagName(\"tbody\")[0] || elem;\n }\n return elem;\n }\n\n // Replace/restore the type attribute of script elements for safe DOM manipulation\n function disableScript(elem) {\n elem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n return elem;\n }\n function restoreScript(elem) {\n var match = rscriptTypeMasked.exec(elem.type);\n if (match) {\n elem.type = match[1];\n } else {\n elem.removeAttribute(\"type\");\n }\n return elem;\n }\n function cloneCopyEvent(src, dest) {\n var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n if (dest.nodeType !== 1) {\n return;\n }\n\n // 1. Copy private data: events, handlers, etc.\n if (dataPriv.hasData(src)) {\n pdataOld = dataPriv.access(src);\n pdataCur = dataPriv.set(dest, pdataOld);\n events = pdataOld.events;\n if (events) {\n delete pdataCur.handle;\n pdataCur.events = {};\n for (type in events) {\n for (i = 0, l = events[type].length; i < l; i++) {\n jQuery.event.add(dest, type, events[type][i]);\n }\n }\n }\n }\n\n // 2. Copy user data\n if (dataUser.hasData(src)) {\n udataOld = dataUser.access(src);\n udataCur = jQuery.extend({}, udataOld);\n dataUser.set(dest, udataCur);\n }\n }\n\n // Fix IE bugs, see support tests\n function fixInput(src, dest) {\n var nodeName = dest.nodeName.toLowerCase();\n\n // Fails to persist the checked state of a cloned checkbox or radio button.\n if (nodeName === \"input\" && rcheckableType.test(src.type)) {\n dest.checked = src.checked;\n\n // Fails to return the selected option to the default selected state when cloning options\n } else if (nodeName === \"input\" || nodeName === \"textarea\") {\n dest.defaultValue = src.defaultValue;\n }\n }\n function domManip(collection, args, callback, ignored) {\n // Flatten any nested arrays\n args = concat.apply([], args);\n var fragment,\n first,\n scripts,\n hasScripts,\n node,\n doc,\n i = 0,\n l = collection.length,\n iNoClone = l - 1,\n value = args[0],\n isFunction = jQuery.isFunction(value);\n\n // We can't cloneNode fragments that contain checked, in WebKit\n if (isFunction || l > 1 && typeof value === \"string\" && !support.checkClone && rchecked.test(value)) {\n return collection.each(function (index) {\n var self = collection.eq(index);\n if (isFunction) {\n args[0] = value.call(this, index, self.html());\n }\n domManip(self, args, callback, ignored);\n });\n }\n if (l) {\n fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);\n first = fragment.firstChild;\n if (fragment.childNodes.length === 1) {\n fragment = first;\n }\n\n // Require either new content or an interest in ignored elements to invoke the callback\n if (first || ignored) {\n scripts = jQuery.map(getAll(fragment, \"script\"), disableScript);\n hasScripts = scripts.length;\n\n // Use the original fragment for the last item\n // instead of the first because it can end up\n // being emptied incorrectly in certain situations (#8070).\n for (; i < l; i++) {\n node = fragment;\n if (i !== iNoClone) {\n node = jQuery.clone(node, true, true);\n\n // Keep references to cloned scripts for later restoration\n if (hasScripts) {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(scripts, getAll(node, \"script\"));\n }\n }\n callback.call(collection[i], node, i);\n }\n if (hasScripts) {\n doc = scripts[scripts.length - 1].ownerDocument;\n\n // Reenable scripts\n jQuery.map(scripts, restoreScript);\n\n // Evaluate executable scripts on first document insertion\n for (i = 0; i < hasScripts; i++) {\n node = scripts[i];\n if (rscriptType.test(node.type || \"\") && !dataPriv.access(node, \"globalEval\") && jQuery.contains(doc, node)) {\n if (node.src) {\n // Optional AJAX dependency, but won't run scripts if not present\n if (jQuery._evalUrl) {\n jQuery._evalUrl(node.src);\n }\n } else {\n DOMEval(node.textContent.replace(rcleanScript, \"\"), doc);\n }\n }\n }\n }\n }\n }\n return collection;\n }\n function remove(elem, selector, keepData) {\n var node,\n nodes = selector ? jQuery.filter(selector, elem) : elem,\n i = 0;\n for (; (node = nodes[i]) != null; i++) {\n if (!keepData && node.nodeType === 1) {\n jQuery.cleanData(getAll(node));\n }\n if (node.parentNode) {\n if (keepData && jQuery.contains(node.ownerDocument, node)) {\n setGlobalEval(getAll(node, \"script\"));\n }\n node.parentNode.removeChild(node);\n }\n }\n return elem;\n }\n jQuery.extend({\n htmlPrefilter: function (html) {\n return html.replace(rxhtmlTag, \"<$1></$2>\");\n },\n clone: function (elem, dataAndEvents, deepDataAndEvents) {\n var i,\n l,\n srcElements,\n destElements,\n clone = elem.cloneNode(true),\n inPage = jQuery.contains(elem.ownerDocument, elem);\n\n // Fix IE cloning issues\n if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {\n // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n destElements = getAll(clone);\n srcElements = getAll(elem);\n for (i = 0, l = srcElements.length; i < l; i++) {\n fixInput(srcElements[i], destElements[i]);\n }\n }\n\n // Copy the events from the original to the clone\n if (dataAndEvents) {\n if (deepDataAndEvents) {\n srcElements = srcElements || getAll(elem);\n destElements = destElements || getAll(clone);\n for (i = 0, l = srcElements.length; i < l; i++) {\n cloneCopyEvent(srcElements[i], destElements[i]);\n }\n } else {\n cloneCopyEvent(elem, clone);\n }\n }\n\n // Preserve script evaluation history\n destElements = getAll(clone, \"script\");\n if (destElements.length > 0) {\n setGlobalEval(destElements, !inPage && getAll(elem, \"script\"));\n }\n\n // Return the cloned set\n return clone;\n },\n cleanData: function (elems) {\n var data,\n elem,\n type,\n special = jQuery.event.special,\n i = 0;\n for (; (elem = elems[i]) !== undefined; i++) {\n if (acceptData(elem)) {\n if (data = elem[dataPriv.expando]) {\n if (data.events) {\n for (type in data.events) {\n if (special[type]) {\n jQuery.event.remove(elem, type);\n\n // This is a shortcut to avoid jQuery.event.remove's overhead\n } else {\n jQuery.removeEvent(elem, type, data.handle);\n }\n }\n }\n\n // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataPriv.expando] = undefined;\n }\n if (elem[dataUser.expando]) {\n // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataUser.expando] = undefined;\n }\n }\n }\n }\n });\n jQuery.fn.extend({\n detach: function (selector) {\n return remove(this, selector, true);\n },\n remove: function (selector) {\n return remove(this, selector);\n },\n text: function (value) {\n return access(this, function (value) {\n return value === undefined ? jQuery.text(this) : this.empty().each(function () {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n this.textContent = value;\n }\n });\n }, null, value, arguments.length);\n },\n append: function () {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.appendChild(elem);\n }\n });\n },\n prepend: function () {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.insertBefore(elem, target.firstChild);\n }\n });\n },\n before: function () {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this);\n }\n });\n },\n after: function () {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this.nextSibling);\n }\n });\n },\n empty: function () {\n var elem,\n i = 0;\n for (; (elem = this[i]) != null; i++) {\n if (elem.nodeType === 1) {\n // Prevent memory leaks\n jQuery.cleanData(getAll(elem, false));\n\n // Remove any remaining nodes\n elem.textContent = \"\";\n }\n }\n return this;\n },\n clone: function (dataAndEvents, deepDataAndEvents) {\n dataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n return this.map(function () {\n return jQuery.clone(this, dataAndEvents, deepDataAndEvents);\n });\n },\n html: function (value) {\n return access(this, function (value) {\n var elem = this[0] || {},\n i = 0,\n l = this.length;\n if (value === undefined && elem.nodeType === 1) {\n return elem.innerHTML;\n }\n\n // See if we can take a shortcut and just use innerHTML\n if (typeof value === \"string\" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || [\"\", \"\"])[1].toLowerCase()]) {\n value = jQuery.htmlPrefilter(value);\n try {\n for (; i < l; i++) {\n elem = this[i] || {};\n\n // Remove element nodes and prevent memory leaks\n if (elem.nodeType === 1) {\n jQuery.cleanData(getAll(elem, false));\n elem.innerHTML = value;\n }\n }\n elem = 0;\n\n // If using innerHTML throws an exception, use the fallback method\n } catch (e) {}\n }\n if (elem) {\n this.empty().append(value);\n }\n }, null, value, arguments.length);\n },\n replaceWith: function () {\n var ignored = [];\n\n // Make the changes, replacing each non-ignored context element with the new content\n return domManip(this, arguments, function (elem) {\n var parent = this.parentNode;\n if (jQuery.inArray(this, ignored) < 0) {\n jQuery.cleanData(getAll(this));\n if (parent) {\n parent.replaceChild(elem, this);\n }\n }\n\n // Force callback invocation\n }, ignored);\n }\n });\n jQuery.each({\n appendTo: \"append\",\n prependTo: \"prepend\",\n insertBefore: \"before\",\n insertAfter: \"after\",\n replaceAll: \"replaceWith\"\n }, function (name, original) {\n jQuery.fn[name] = function (selector) {\n var elems,\n ret = [],\n insert = jQuery(selector),\n last = insert.length - 1,\n i = 0;\n for (; i <= last; i++) {\n elems = i === last ? this : this.clone(true);\n jQuery(insert[i])[original](elems);\n\n // Support: Android <=4.0 only, PhantomJS 1 only\n // .get() because push.apply(_, arraylike) throws on ancient WebKit\n push.apply(ret, elems.get());\n }\n return this.pushStack(ret);\n };\n });\n var rmargin = /^margin/;\n var rnumnonpx = new RegExp(\"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\");\n var getStyles = function (elem) {\n // Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n var view = elem.ownerDocument.defaultView;\n if (!view || !view.opener) {\n view = window;\n }\n return view.getComputedStyle(elem);\n };\n (function () {\n // Executing both pixelPosition & boxSizingReliable tests require only one layout\n // so they're executed at the same time to save the second computation.\n function computeStyleTests() {\n // This is a singleton, we need to execute it only once\n if (!div) {\n return;\n }\n div.style.cssText = \"box-sizing:border-box;\" + \"position:relative;display:block;\" + \"margin:auto;border:1px;padding:1px;\" + \"top:1%;width:50%\";\n div.innerHTML = \"\";\n documentElement.appendChild(container);\n var divStyle = window.getComputedStyle(div);\n pixelPositionVal = divStyle.top !== \"1%\";\n\n // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n reliableMarginLeftVal = divStyle.marginLeft === \"2px\";\n boxSizingReliableVal = divStyle.width === \"4px\";\n\n // Support: Android 4.0 - 4.3 only\n // Some styles come back with percentage values, even though they shouldn't\n div.style.marginRight = \"50%\";\n pixelMarginRightVal = divStyle.marginRight === \"4px\";\n documentElement.removeChild(container);\n\n // Nullify the div so it wouldn't be stored in the memory and\n // it will also be a sign that checks already performed\n div = null;\n }\n var pixelPositionVal,\n boxSizingReliableVal,\n pixelMarginRightVal,\n reliableMarginLeftVal,\n container = document.createElement(\"div\"),\n div = document.createElement(\"div\");\n\n // Finish early in limited (non-browser) environments\n if (!div.style) {\n return;\n }\n\n // Support: IE <=9 - 11 only\n // Style of cloned element affects source element cloned (#8908)\n div.style.backgroundClip = \"content-box\";\n div.cloneNode(true).style.backgroundClip = \"\";\n support.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n container.style.cssText = \"border:0;width:8px;height:0;top:0;left:-9999px;\" + \"padding:0;margin-top:1px;position:absolute\";\n container.appendChild(div);\n jQuery.extend(support, {\n pixelPosition: function () {\n computeStyleTests();\n return pixelPositionVal;\n },\n boxSizingReliable: function () {\n computeStyleTests();\n return boxSizingReliableVal;\n },\n pixelMarginRight: function () {\n computeStyleTests();\n return pixelMarginRightVal;\n },\n reliableMarginLeft: function () {\n computeStyleTests();\n return reliableMarginLeftVal;\n }\n });\n })();\n function curCSS(elem, name, computed) {\n var width,\n minWidth,\n maxWidth,\n ret,\n style = elem.style;\n computed = computed || getStyles(elem);\n\n // Support: IE <=9 only\n // getPropertyValue is only needed for .css('filter') (#12537)\n if (computed) {\n ret = computed.getPropertyValue(name) || computed[name];\n if (ret === \"\" && !jQuery.contains(elem.ownerDocument, elem)) {\n ret = jQuery.style(elem, name);\n }\n\n // A tribute to the \"awesome hack by Dean Edwards\"\n // Android Browser returns percentage for some values,\n // but width seems to be reliably pixels.\n // This is against the CSSOM draft spec:\n // https://drafts.csswg.org/cssom/#resolved-values\n if (!support.pixelMarginRight() && rnumnonpx.test(ret) && rmargin.test(name)) {\n // Remember the original values\n width = style.width;\n minWidth = style.minWidth;\n maxWidth = style.maxWidth;\n\n // Put in the new values to get a computed value out\n style.minWidth = style.maxWidth = style.width = ret;\n ret = computed.width;\n\n // Revert the changed values\n style.width = width;\n style.minWidth = minWidth;\n style.maxWidth = maxWidth;\n }\n }\n return ret !== undefined ?\n // Support: IE <=9 - 11 only\n // IE returns zIndex value as an integer.\n ret + \"\" : ret;\n }\n function addGetHookIf(conditionFn, hookFn) {\n // Define the hook, we'll check on the first run if it's really needed.\n return {\n get: function () {\n if (conditionFn()) {\n // Hook not needed (or it's not possible to use it due\n // to missing dependency), remove it.\n delete this.get;\n return;\n }\n\n // Hook needed; redefine it so that the support test is not executed again.\n return (this.get = hookFn).apply(this, arguments);\n }\n };\n }\n var\n // Swappable if display is none or starts with table\n // except \"table\", \"table-cell\", or \"table-caption\"\n // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n rdisplayswap = /^(none|table(?!-c[ea]).+)/,\n cssShow = {\n position: \"absolute\",\n visibility: \"hidden\",\n display: \"block\"\n },\n cssNormalTransform = {\n letterSpacing: \"0\",\n fontWeight: \"400\"\n },\n cssPrefixes = [\"Webkit\", \"Moz\", \"ms\"],\n emptyStyle = document.createElement(\"div\").style;\n\n // Return a css property mapped to a potentially vendor prefixed property\n function vendorPropName(name) {\n // Shortcut for names that are not vendor prefixed\n if (name in emptyStyle) {\n return name;\n }\n\n // Check for vendor prefixed names\n var capName = name[0].toUpperCase() + name.slice(1),\n i = cssPrefixes.length;\n while (i--) {\n name = cssPrefixes[i] + capName;\n if (name in emptyStyle) {\n return name;\n }\n }\n }\n function setPositiveNumber(elem, value, subtract) {\n // Any relative (+/-) values have already been\n // normalized at this point\n var matches = rcssNum.exec(value);\n return matches ?\n // Guard against undefined \"subtract\", e.g., when used as in cssHooks\n Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || \"px\") : value;\n }\n function augmentWidthOrHeight(elem, name, extra, isBorderBox, styles) {\n var i,\n val = 0;\n\n // If we already have the right measurement, avoid augmentation\n if (extra === (isBorderBox ? \"border\" : \"content\")) {\n i = 4;\n\n // Otherwise initialize for horizontal or vertical properties\n } else {\n i = name === \"width\" ? 1 : 0;\n }\n for (; i < 4; i += 2) {\n // Both box models exclude margin, so add it if we want it\n if (extra === \"margin\") {\n val += jQuery.css(elem, extra + cssExpand[i], true, styles);\n }\n if (isBorderBox) {\n // border-box includes padding, so remove it if we want content\n if (extra === \"content\") {\n val -= jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n }\n\n // At this point, extra isn't border nor margin, so remove border\n if (extra !== \"margin\") {\n val -= jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n } else {\n // At this point, extra isn't content, so add padding\n val += jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n\n // At this point, extra isn't content nor padding, so add border\n if (extra !== \"padding\") {\n val += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n }\n }\n return val;\n }\n function getWidthOrHeight(elem, name, extra) {\n // Start with offset property, which is equivalent to the border-box value\n var val,\n valueIsBorderBox = true,\n styles = getStyles(elem),\n isBorderBox = jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\";\n\n // Support: IE <=11 only\n // Running getBoundingClientRect on a disconnected node\n // in IE throws an error.\n if (elem.getClientRects().length) {\n val = elem.getBoundingClientRect()[name];\n }\n\n // Some non-html elements return undefined for offsetWidth, so check for null/undefined\n // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n if (val <= 0 || val == null) {\n // Fall back to computed then uncomputed css if necessary\n val = curCSS(elem, name, styles);\n if (val < 0 || val == null) {\n val = elem.style[name];\n }\n\n // Computed unit is not pixels. Stop here and return.\n if (rnumnonpx.test(val)) {\n return val;\n }\n\n // Check for style in case a browser which returns unreliable values\n // for getComputedStyle silently falls back to the reliable elem.style\n valueIsBorderBox = isBorderBox && (support.boxSizingReliable() || val === elem.style[name]);\n\n // Normalize \"\", auto, and prepare for extra\n val = parseFloat(val) || 0;\n }\n\n // Use the active box-sizing model to add/subtract irrelevant styles\n return val + augmentWidthOrHeight(elem, name, extra || (isBorderBox ? \"border\" : \"content\"), valueIsBorderBox, styles) + \"px\";\n }\n jQuery.extend({\n // Add in style property hooks for overriding the default\n // behavior of getting and setting a style property\n cssHooks: {\n opacity: {\n get: function (elem, computed) {\n if (computed) {\n // We should always get a number back from opacity\n var ret = curCSS(elem, \"opacity\");\n return ret === \"\" ? \"1\" : ret;\n }\n }\n }\n },\n // Don't automatically add \"px\" to these possibly-unitless properties\n cssNumber: {\n \"animationIterationCount\": true,\n \"columnCount\": true,\n \"fillOpacity\": true,\n \"flexGrow\": true,\n \"flexShrink\": true,\n \"fontWeight\": true,\n \"lineHeight\": true,\n \"opacity\": true,\n \"order\": true,\n \"orphans\": true,\n \"widows\": true,\n \"zIndex\": true,\n \"zoom\": true\n },\n // Add in properties whose names you wish to fix before\n // setting or getting the value\n cssProps: {\n \"float\": \"cssFloat\"\n },\n // Get and set the style property on a DOM Node\n style: function (elem, name, value, extra) {\n // Don't set styles on text and comment nodes\n if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {\n return;\n }\n\n // Make sure that we're working with the right name\n var ret,\n type,\n hooks,\n origName = jQuery.camelCase(name),\n style = elem.style;\n name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(origName) || origName);\n\n // Gets hook for the prefixed version, then unprefixed version\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];\n\n // Check if we're setting a value\n if (value !== undefined) {\n type = typeof value;\n\n // Convert \"+=\" or \"-=\" to relative numbers (#7345)\n if (type === \"string\" && (ret = rcssNum.exec(value)) && ret[1]) {\n value = adjustCSS(elem, name, ret);\n\n // Fixes bug #9237\n type = \"number\";\n }\n\n // Make sure that null and NaN values aren't set (#7116)\n if (value == null || value !== value) {\n return;\n }\n\n // If a number was passed in, add the unit (except for certain CSS properties)\n if (type === \"number\") {\n value += ret && ret[3] || (jQuery.cssNumber[origName] ? \"\" : \"px\");\n }\n\n // background-* props affect original clone's values\n if (!support.clearCloneStyle && value === \"\" && name.indexOf(\"background\") === 0) {\n style[name] = \"inherit\";\n }\n\n // If a hook was provided, use that value, otherwise just set the specified value\n if (!hooks || !(\"set\" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {\n style[name] = value;\n }\n } else {\n // If a hook was provided get the non-computed value from there\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {\n return ret;\n }\n\n // Otherwise just get the value from the style object\n return style[name];\n }\n },\n css: function (elem, name, extra, styles) {\n var val,\n num,\n hooks,\n origName = jQuery.camelCase(name);\n\n // Make sure that we're working with the right name\n name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(origName) || origName);\n\n // Try prefixed name followed by the unprefixed name\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];\n\n // If a hook was provided get the computed value from there\n if (hooks && \"get\" in hooks) {\n val = hooks.get(elem, true, extra);\n }\n\n // Otherwise, if a way to get the computed value exists, use that\n if (val === undefined) {\n val = curCSS(elem, name, styles);\n }\n\n // Convert \"normal\" to computed value\n if (val === \"normal\" && name in cssNormalTransform) {\n val = cssNormalTransform[name];\n }\n\n // Make numeric if forced or a qualifier was provided and val looks numeric\n if (extra === \"\" || extra) {\n num = parseFloat(val);\n return extra === true || isFinite(num) ? num || 0 : val;\n }\n return val;\n }\n });\n jQuery.each([\"height\", \"width\"], function (i, name) {\n jQuery.cssHooks[name] = {\n get: function (elem, computed, extra) {\n if (computed) {\n // Certain elements can have dimension info if we invisibly show them\n // but it must have a current display style that would benefit\n return rdisplayswap.test(jQuery.css(elem, \"display\")) && (\n // Support: Safari 8+\n // Table columns in Safari have non-zero offsetWidth & zero\n // getBoundingClientRect().width unless display is changed.\n // Support: IE <=11 only\n // Running getBoundingClientRect on a disconnected node\n // in IE throws an error.\n !elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function () {\n return getWidthOrHeight(elem, name, extra);\n }) : getWidthOrHeight(elem, name, extra);\n }\n },\n set: function (elem, value, extra) {\n var matches,\n styles = extra && getStyles(elem),\n subtract = extra && augmentWidthOrHeight(elem, name, extra, jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\", styles);\n\n // Convert to pixels if value adjustment is needed\n if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || \"px\") !== \"px\") {\n elem.style[name] = value;\n value = jQuery.css(elem, name);\n }\n return setPositiveNumber(elem, value, subtract);\n }\n };\n });\n jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) {\n if (computed) {\n return (parseFloat(curCSS(elem, \"marginLeft\")) || elem.getBoundingClientRect().left - swap(elem, {\n marginLeft: 0\n }, function () {\n return elem.getBoundingClientRect().left;\n })) + \"px\";\n }\n });\n\n // These hooks are used by animate to expand properties\n jQuery.each({\n margin: \"\",\n padding: \"\",\n border: \"Width\"\n }, function (prefix, suffix) {\n jQuery.cssHooks[prefix + suffix] = {\n expand: function (value) {\n var i = 0,\n expanded = {},\n // Assumes a single number if not a string\n parts = typeof value === \"string\" ? value.split(\" \") : [value];\n for (; i < 4; i++) {\n expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];\n }\n return expanded;\n }\n };\n if (!rmargin.test(prefix)) {\n jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;\n }\n });\n jQuery.fn.extend({\n css: function (name, value) {\n return access(this, function (elem, name, value) {\n var styles,\n len,\n map = {},\n i = 0;\n if (jQuery.isArray(name)) {\n styles = getStyles(elem);\n len = name.length;\n for (; i < len; i++) {\n map[name[i]] = jQuery.css(elem, name[i], false, styles);\n }\n return map;\n }\n return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name);\n }, name, value, arguments.length > 1);\n }\n });\n function Tween(elem, options, prop, end, easing) {\n return new Tween.prototype.init(elem, options, prop, end, easing);\n }\n jQuery.Tween = Tween;\n Tween.prototype = {\n constructor: Tween,\n init: function (elem, options, prop, end, easing, unit) {\n this.elem = elem;\n this.prop = prop;\n this.easing = easing || jQuery.easing._default;\n this.options = options;\n this.start = this.now = this.cur();\n this.end = end;\n this.unit = unit || (jQuery.cssNumber[prop] ? \"\" : \"px\");\n },\n cur: function () {\n var hooks = Tween.propHooks[this.prop];\n return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);\n },\n run: function (percent) {\n var eased,\n hooks = Tween.propHooks[this.prop];\n if (this.options.duration) {\n this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration);\n } else {\n this.pos = eased = percent;\n }\n this.now = (this.end - this.start) * eased + this.start;\n if (this.options.step) {\n this.options.step.call(this.elem, this.now, this);\n }\n if (hooks && hooks.set) {\n hooks.set(this);\n } else {\n Tween.propHooks._default.set(this);\n }\n return this;\n }\n };\n Tween.prototype.init.prototype = Tween.prototype;\n Tween.propHooks = {\n _default: {\n get: function (tween) {\n var result;\n\n // Use a property on the element directly when it is not a DOM element,\n // or when there is no matching style property that exists.\n if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {\n return tween.elem[tween.prop];\n }\n\n // Passing an empty string as a 3rd parameter to .css will automatically\n // attempt a parseFloat and fallback to a string if the parse fails.\n // Simple values such as \"10px\" are parsed to Float;\n // complex values such as \"rotate(1rad)\" are returned as-is.\n result = jQuery.css(tween.elem, tween.prop, \"\");\n\n // Empty strings, null, undefined and \"auto\" are converted to 0.\n return !result || result === \"auto\" ? 0 : result;\n },\n set: function (tween) {\n // Use step hook for back compat.\n // Use cssHook if its there.\n // Use .style if available and use plain properties where available.\n if (jQuery.fx.step[tween.prop]) {\n jQuery.fx.step[tween.prop](tween);\n } else if (tween.elem.nodeType === 1 && (tween.elem.style[jQuery.cssProps[tween.prop]] != null || jQuery.cssHooks[tween.prop])) {\n jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);\n } else {\n tween.elem[tween.prop] = tween.now;\n }\n }\n }\n };\n\n // Support: IE <=9 only\n // Panic based approach to setting things on disconnected nodes\n Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n set: function (tween) {\n if (tween.elem.nodeType && tween.elem.parentNode) {\n tween.elem[tween.prop] = tween.now;\n }\n }\n };\n jQuery.easing = {\n linear: function (p) {\n return p;\n },\n swing: function (p) {\n return 0.5 - Math.cos(p * Math.PI) / 2;\n },\n _default: \"swing\"\n };\n jQuery.fx = Tween.prototype.init;\n\n // Back compat <1.8 extension point\n jQuery.fx.step = {};\n var fxNow,\n timerId,\n rfxtypes = /^(?:toggle|show|hide)$/,\n rrun = /queueHooks$/;\n function raf() {\n if (timerId) {\n window.requestAnimationFrame(raf);\n jQuery.fx.tick();\n }\n }\n\n // Animations created synchronously will run synchronously\n function createFxNow() {\n window.setTimeout(function () {\n fxNow = undefined;\n });\n return fxNow = jQuery.now();\n }\n\n // Generate parameters to create a standard animation\n function genFx(type, includeWidth) {\n var which,\n i = 0,\n attrs = {\n height: type\n };\n\n // If we include width, step value is 1 to do all cssExpand values,\n // otherwise step value is 2 to skip over Left and Right\n includeWidth = includeWidth ? 1 : 0;\n for (; i < 4; i += 2 - includeWidth) {\n which = cssExpand[i];\n attrs[\"margin\" + which] = attrs[\"padding\" + which] = type;\n }\n if (includeWidth) {\n attrs.opacity = attrs.width = type;\n }\n return attrs;\n }\n function createTween(value, prop, animation) {\n var tween,\n collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners[\"*\"]),\n index = 0,\n length = collection.length;\n for (; index < length; index++) {\n if (tween = collection[index].call(animation, prop, value)) {\n // We're done with this property\n return tween;\n }\n }\n }\n function defaultPrefilter(elem, props, opts) {\n var prop,\n value,\n toggle,\n hooks,\n oldfire,\n propTween,\n restoreDisplay,\n display,\n isBox = \"width\" in props || \"height\" in props,\n anim = this,\n orig = {},\n style = elem.style,\n hidden = elem.nodeType && isHiddenWithinTree(elem),\n dataShow = dataPriv.get(elem, \"fxshow\");\n\n // Queue-skipping animations hijack the fx hooks\n if (!opts.queue) {\n hooks = jQuery._queueHooks(elem, \"fx\");\n if (hooks.unqueued == null) {\n hooks.unqueued = 0;\n oldfire = hooks.empty.fire;\n hooks.empty.fire = function () {\n if (!hooks.unqueued) {\n oldfire();\n }\n };\n }\n hooks.unqueued++;\n anim.always(function () {\n // Ensure the complete handler is called before this completes\n anim.always(function () {\n hooks.unqueued--;\n if (!jQuery.queue(elem, \"fx\").length) {\n hooks.empty.fire();\n }\n });\n });\n }\n\n // Detect show/hide animations\n for (prop in props) {\n value = props[prop];\n if (rfxtypes.test(value)) {\n delete props[prop];\n toggle = toggle || value === \"toggle\";\n if (value === (hidden ? \"hide\" : \"show\")) {\n // Pretend to be hidden if this is a \"show\" and\n // there is still data from a stopped show/hide\n if (value === \"show\" && dataShow && dataShow[prop] !== undefined) {\n hidden = true;\n\n // Ignore all other no-op show/hide data\n } else {\n continue;\n }\n }\n orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);\n }\n }\n\n // Bail out if this is a no-op like .hide().hide()\n propTween = !jQuery.isEmptyObject(props);\n if (!propTween && jQuery.isEmptyObject(orig)) {\n return;\n }\n\n // Restrict \"overflow\" and \"display\" styles during box animations\n if (isBox && elem.nodeType === 1) {\n // Support: IE <=9 - 11, Edge 12 - 13\n // Record all 3 overflow attributes because IE does not infer the shorthand\n // from identically-valued overflowX and overflowY\n opts.overflow = [style.overflow, style.overflowX, style.overflowY];\n\n // Identify a display type, preferring old show/hide data over the CSS cascade\n restoreDisplay = dataShow && dataShow.display;\n if (restoreDisplay == null) {\n restoreDisplay = dataPriv.get(elem, \"display\");\n }\n display = jQuery.css(elem, \"display\");\n if (display === \"none\") {\n if (restoreDisplay) {\n display = restoreDisplay;\n } else {\n // Get nonempty value(s) by temporarily forcing visibility\n showHide([elem], true);\n restoreDisplay = elem.style.display || restoreDisplay;\n display = jQuery.css(elem, \"display\");\n showHide([elem]);\n }\n }\n\n // Animate inline elements as inline-block\n if (display === \"inline\" || display === \"inline-block\" && restoreDisplay != null) {\n if (jQuery.css(elem, \"float\") === \"none\") {\n // Restore the original display value at the end of pure show/hide animations\n if (!propTween) {\n anim.done(function () {\n style.display = restoreDisplay;\n });\n if (restoreDisplay == null) {\n display = style.display;\n restoreDisplay = display === \"none\" ? \"\" : display;\n }\n }\n style.display = \"inline-block\";\n }\n }\n }\n if (opts.overflow) {\n style.overflow = \"hidden\";\n anim.always(function () {\n style.overflow = opts.overflow[0];\n style.overflowX = opts.overflow[1];\n style.overflowY = opts.overflow[2];\n });\n }\n\n // Implement show/hide animations\n propTween = false;\n for (prop in orig) {\n // General show/hide setup for this element animation\n if (!propTween) {\n if (dataShow) {\n if (\"hidden\" in dataShow) {\n hidden = dataShow.hidden;\n }\n } else {\n dataShow = dataPriv.access(elem, \"fxshow\", {\n display: restoreDisplay\n });\n }\n\n // Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n if (toggle) {\n dataShow.hidden = !hidden;\n }\n\n // Show elements before animating them\n if (hidden) {\n showHide([elem], true);\n }\n\n /* eslint-disable no-loop-func */\n\n anim.done(function () {\n /* eslint-enable no-loop-func */\n\n // The final step of a \"hide\" animation is actually hiding the element\n if (!hidden) {\n showHide([elem]);\n }\n dataPriv.remove(elem, \"fxshow\");\n for (prop in orig) {\n jQuery.style(elem, prop, orig[prop]);\n }\n });\n }\n\n // Per-property setup\n propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);\n if (!(prop in dataShow)) {\n dataShow[prop] = propTween.start;\n if (hidden) {\n propTween.end = propTween.start;\n propTween.start = 0;\n }\n }\n }\n }\n function propFilter(props, specialEasing) {\n var index, name, easing, value, hooks;\n\n // camelCase, specialEasing and expand cssHook pass\n for (index in props) {\n name = jQuery.camelCase(index);\n easing = specialEasing[name];\n value = props[index];\n if (jQuery.isArray(value)) {\n easing = value[1];\n value = props[index] = value[0];\n }\n if (index !== name) {\n props[name] = value;\n delete props[index];\n }\n hooks = jQuery.cssHooks[name];\n if (hooks && \"expand\" in hooks) {\n value = hooks.expand(value);\n delete props[name];\n\n // Not quite $.extend, this won't overwrite existing keys.\n // Reusing 'index' because we have the correct \"name\"\n for (index in value) {\n if (!(index in props)) {\n props[index] = value[index];\n specialEasing[index] = easing;\n }\n }\n } else {\n specialEasing[name] = easing;\n }\n }\n }\n function Animation(elem, properties, options) {\n var result,\n stopped,\n index = 0,\n length = Animation.prefilters.length,\n deferred = jQuery.Deferred().always(function () {\n // Don't match elem in the :animated selector\n delete tick.elem;\n }),\n tick = function () {\n if (stopped) {\n return false;\n }\n var currentTime = fxNow || createFxNow(),\n remaining = Math.max(0, animation.startTime + animation.duration - currentTime),\n // Support: Android 2.3 only\n // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n temp = remaining / animation.duration || 0,\n percent = 1 - temp,\n index = 0,\n length = animation.tweens.length;\n for (; index < length; index++) {\n animation.tweens[index].run(percent);\n }\n deferred.notifyWith(elem, [animation, percent, remaining]);\n if (percent < 1 && length) {\n return remaining;\n } else {\n deferred.resolveWith(elem, [animation]);\n return false;\n }\n },\n animation = deferred.promise({\n elem: elem,\n props: jQuery.extend({}, properties),\n opts: jQuery.extend(true, {\n specialEasing: {},\n easing: jQuery.easing._default\n }, options),\n originalProperties: properties,\n originalOptions: options,\n startTime: fxNow || createFxNow(),\n duration: options.duration,\n tweens: [],\n createTween: function (prop, end) {\n var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);\n animation.tweens.push(tween);\n return tween;\n },\n stop: function (gotoEnd) {\n var index = 0,\n // If we are going to the end, we want to run all the tweens\n // otherwise we skip this part\n length = gotoEnd ? animation.tweens.length : 0;\n if (stopped) {\n return this;\n }\n stopped = true;\n for (; index < length; index++) {\n animation.tweens[index].run(1);\n }\n\n // Resolve when we played the last frame; otherwise, reject\n if (gotoEnd) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n deferred.resolveWith(elem, [animation, gotoEnd]);\n } else {\n deferred.rejectWith(elem, [animation, gotoEnd]);\n }\n return this;\n }\n }),\n props = animation.props;\n propFilter(props, animation.opts.specialEasing);\n for (; index < length; index++) {\n result = Animation.prefilters[index].call(animation, elem, props, animation.opts);\n if (result) {\n if (jQuery.isFunction(result.stop)) {\n jQuery._queueHooks(animation.elem, animation.opts.queue).stop = jQuery.proxy(result.stop, result);\n }\n return result;\n }\n }\n jQuery.map(props, createTween, animation);\n if (jQuery.isFunction(animation.opts.start)) {\n animation.opts.start.call(elem, animation);\n }\n jQuery.fx.timer(jQuery.extend(tick, {\n elem: elem,\n anim: animation,\n queue: animation.opts.queue\n }));\n\n // attach callbacks from options\n return animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);\n }\n jQuery.Animation = jQuery.extend(Animation, {\n tweeners: {\n \"*\": [function (prop, value) {\n var tween = this.createTween(prop, value);\n adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);\n return tween;\n }]\n },\n tweener: function (props, callback) {\n if (jQuery.isFunction(props)) {\n callback = props;\n props = [\"*\"];\n } else {\n props = props.match(rnothtmlwhite);\n }\n var prop,\n index = 0,\n length = props.length;\n for (; index < length; index++) {\n prop = props[index];\n Animation.tweeners[prop] = Animation.tweeners[prop] || [];\n Animation.tweeners[prop].unshift(callback);\n }\n },\n prefilters: [defaultPrefilter],\n prefilter: function (callback, prepend) {\n if (prepend) {\n Animation.prefilters.unshift(callback);\n } else {\n Animation.prefilters.push(callback);\n }\n }\n });\n jQuery.speed = function (speed, easing, fn) {\n var opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n complete: fn || !fn && easing || jQuery.isFunction(speed) && speed,\n duration: speed,\n easing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n };\n\n // Go to the end state if fx are off or if document is hidden\n if (jQuery.fx.off || document.hidden) {\n opt.duration = 0;\n } else {\n if (typeof opt.duration !== \"number\") {\n if (opt.duration in jQuery.fx.speeds) {\n opt.duration = jQuery.fx.speeds[opt.duration];\n } else {\n opt.duration = jQuery.fx.speeds._default;\n }\n }\n }\n\n // Normalize opt.queue - true/undefined/null -> \"fx\"\n if (opt.queue == null || opt.queue === true) {\n opt.queue = \"fx\";\n }\n\n // Queueing\n opt.old = opt.complete;\n opt.complete = function () {\n if (jQuery.isFunction(opt.old)) {\n opt.old.call(this);\n }\n if (opt.queue) {\n jQuery.dequeue(this, opt.queue);\n }\n };\n return opt;\n };\n jQuery.fn.extend({\n fadeTo: function (speed, to, easing, callback) {\n // Show any hidden elements after setting opacity to 0\n return this.filter(isHiddenWithinTree).css(\"opacity\", 0).show()\n\n // Animate to the value specified\n .end().animate({\n opacity: to\n }, speed, easing, callback);\n },\n animate: function (prop, speed, easing, callback) {\n var empty = jQuery.isEmptyObject(prop),\n optall = jQuery.speed(speed, easing, callback),\n doAnimation = function () {\n // Operate on a copy of prop so per-property easing won't be lost\n var anim = Animation(this, jQuery.extend({}, prop), optall);\n\n // Empty animations, or finishing resolves immediately\n if (empty || dataPriv.get(this, \"finish\")) {\n anim.stop(true);\n }\n };\n doAnimation.finish = doAnimation;\n return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);\n },\n stop: function (type, clearQueue, gotoEnd) {\n var stopQueue = function (hooks) {\n var stop = hooks.stop;\n delete hooks.stop;\n stop(gotoEnd);\n };\n if (typeof type !== \"string\") {\n gotoEnd = clearQueue;\n clearQueue = type;\n type = undefined;\n }\n if (clearQueue && type !== false) {\n this.queue(type || \"fx\", []);\n }\n return this.each(function () {\n var dequeue = true,\n index = type != null && type + \"queueHooks\",\n timers = jQuery.timers,\n data = dataPriv.get(this);\n if (index) {\n if (data[index] && data[index].stop) {\n stopQueue(data[index]);\n }\n } else {\n for (index in data) {\n if (data[index] && data[index].stop && rrun.test(index)) {\n stopQueue(data[index]);\n }\n }\n }\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && (type == null || timers[index].queue === type)) {\n timers[index].anim.stop(gotoEnd);\n dequeue = false;\n timers.splice(index, 1);\n }\n }\n\n // Start the next in the queue if the last step wasn't forced.\n // Timers currently will call their complete callbacks, which\n // will dequeue but only if they were gotoEnd.\n if (dequeue || !gotoEnd) {\n jQuery.dequeue(this, type);\n }\n });\n },\n finish: function (type) {\n if (type !== false) {\n type = type || \"fx\";\n }\n return this.each(function () {\n var index,\n data = dataPriv.get(this),\n queue = data[type + \"queue\"],\n hooks = data[type + \"queueHooks\"],\n timers = jQuery.timers,\n length = queue ? queue.length : 0;\n\n // Enable finishing flag on private data\n data.finish = true;\n\n // Empty the queue first\n jQuery.queue(this, type, []);\n if (hooks && hooks.stop) {\n hooks.stop.call(this, true);\n }\n\n // Look for any active animations, and finish them\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && timers[index].queue === type) {\n timers[index].anim.stop(true);\n timers.splice(index, 1);\n }\n }\n\n // Look for any animations in the old queue and finish them\n for (index = 0; index < length; index++) {\n if (queue[index] && queue[index].finish) {\n queue[index].finish.call(this);\n }\n }\n\n // Turn off finishing flag\n delete data.finish;\n });\n }\n });\n jQuery.each([\"toggle\", \"show\", \"hide\"], function (i, name) {\n var cssFn = jQuery.fn[name];\n jQuery.fn[name] = function (speed, easing, callback) {\n return speed == null || typeof speed === \"boolean\" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);\n };\n });\n\n // Generate shortcuts for custom animations\n jQuery.each({\n slideDown: genFx(\"show\"),\n slideUp: genFx(\"hide\"),\n slideToggle: genFx(\"toggle\"),\n fadeIn: {\n opacity: \"show\"\n },\n fadeOut: {\n opacity: \"hide\"\n },\n fadeToggle: {\n opacity: \"toggle\"\n }\n }, function (name, props) {\n jQuery.fn[name] = function (speed, easing, callback) {\n return this.animate(props, speed, easing, callback);\n };\n });\n jQuery.timers = [];\n jQuery.fx.tick = function () {\n var timer,\n i = 0,\n timers = jQuery.timers;\n fxNow = jQuery.now();\n for (; i < timers.length; i++) {\n timer = timers[i];\n\n // Checks the timer has not already been removed\n if (!timer() && timers[i] === timer) {\n timers.splice(i--, 1);\n }\n }\n if (!timers.length) {\n jQuery.fx.stop();\n }\n fxNow = undefined;\n };\n jQuery.fx.timer = function (timer) {\n jQuery.timers.push(timer);\n if (timer()) {\n jQuery.fx.start();\n } else {\n jQuery.timers.pop();\n }\n };\n jQuery.fx.interval = 13;\n jQuery.fx.start = function () {\n if (!timerId) {\n timerId = window.requestAnimationFrame ? window.requestAnimationFrame(raf) : window.setInterval(jQuery.fx.tick, jQuery.fx.interval);\n }\n };\n jQuery.fx.stop = function () {\n if (window.cancelAnimationFrame) {\n window.cancelAnimationFrame(timerId);\n } else {\n window.clearInterval(timerId);\n }\n timerId = null;\n };\n jQuery.fx.speeds = {\n slow: 600,\n fast: 200,\n // Default speed\n _default: 400\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/\n jQuery.fn.delay = function (time, type) {\n time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n type = type || \"fx\";\n return this.queue(type, function (next, hooks) {\n var timeout = window.setTimeout(next, time);\n hooks.stop = function () {\n window.clearTimeout(timeout);\n };\n });\n };\n (function () {\n var input = document.createElement(\"input\"),\n select = document.createElement(\"select\"),\n opt = select.appendChild(document.createElement(\"option\"));\n input.type = \"checkbox\";\n\n // Support: Android <=4.3 only\n // Default value for a checkbox should be \"on\"\n support.checkOn = input.value !== \"\";\n\n // Support: IE <=11 only\n // Must access selectedIndex to make default options select\n support.optSelected = opt.selected;\n\n // Support: IE <=11 only\n // An input loses its value after becoming a radio\n input = document.createElement(\"input\");\n input.value = \"t\";\n input.type = \"radio\";\n support.radioValue = input.value === \"t\";\n })();\n var boolHook,\n attrHandle = jQuery.expr.attrHandle;\n jQuery.fn.extend({\n attr: function (name, value) {\n return access(this, jQuery.attr, name, value, arguments.length > 1);\n },\n removeAttr: function (name) {\n return this.each(function () {\n jQuery.removeAttr(this, name);\n });\n }\n });\n jQuery.extend({\n attr: function (elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType;\n\n // Don't get/set attributes on text, comment and attribute nodes\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n\n // Fallback to prop when attributes are not supported\n if (typeof elem.getAttribute === \"undefined\") {\n return jQuery.prop(elem, name, value);\n }\n\n // Attribute hooks are determined by the lowercase version\n // Grab necessary hook if one is defined\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined);\n }\n if (value !== undefined) {\n if (value === null) {\n jQuery.removeAttr(elem, name);\n return;\n }\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n elem.setAttribute(name, value + \"\");\n return value;\n }\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n ret = jQuery.find.attr(elem, name);\n\n // Non-existent attributes return null, we normalize to undefined\n return ret == null ? undefined : ret;\n },\n attrHooks: {\n type: {\n set: function (elem, value) {\n if (!support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\")) {\n var val = elem.value;\n elem.setAttribute(\"type\", value);\n if (val) {\n elem.value = val;\n }\n return value;\n }\n }\n }\n },\n removeAttr: function (elem, value) {\n var name,\n i = 0,\n // Attribute names can contain non-HTML whitespace characters\n // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n attrNames = value && value.match(rnothtmlwhite);\n if (attrNames && elem.nodeType === 1) {\n while (name = attrNames[i++]) {\n elem.removeAttribute(name);\n }\n }\n }\n });\n\n // Hooks for boolean attributes\n boolHook = {\n set: function (elem, value, name) {\n if (value === false) {\n // Remove boolean attributes when set to false\n jQuery.removeAttr(elem, name);\n } else {\n elem.setAttribute(name, name);\n }\n return name;\n }\n };\n jQuery.each(jQuery.expr.match.bool.source.match(/\\w+/g), function (i, name) {\n var getter = attrHandle[name] || jQuery.find.attr;\n attrHandle[name] = function (elem, name, isXML) {\n var ret,\n handle,\n lowercaseName = name.toLowerCase();\n if (!isXML) {\n // Avoid an infinite loop by temporarily removing this function from the getter\n handle = attrHandle[lowercaseName];\n attrHandle[lowercaseName] = ret;\n ret = getter(elem, name, isXML) != null ? lowercaseName : null;\n attrHandle[lowercaseName] = handle;\n }\n return ret;\n };\n });\n var rfocusable = /^(?:input|select|textarea|button)$/i,\n rclickable = /^(?:a|area)$/i;\n jQuery.fn.extend({\n prop: function (name, value) {\n return access(this, jQuery.prop, name, value, arguments.length > 1);\n },\n removeProp: function (name) {\n return this.each(function () {\n delete this[jQuery.propFix[name] || name];\n });\n }\n });\n jQuery.extend({\n prop: function (elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType;\n\n // Don't get/set properties on text, comment and attribute nodes\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n // Fix name and attach hooks\n name = jQuery.propFix[name] || name;\n hooks = jQuery.propHooks[name];\n }\n if (value !== undefined) {\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n return elem[name] = value;\n }\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n return elem[name];\n },\n propHooks: {\n tabIndex: {\n get: function (elem) {\n // Support: IE <=9 - 11 only\n // elem.tabIndex doesn't always return the\n // correct value when it hasn't been explicitly set\n // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n // Use proper attribute retrieval(#12072)\n var tabindex = jQuery.find.attr(elem, \"tabindex\");\n if (tabindex) {\n return parseInt(tabindex, 10);\n }\n if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {\n return 0;\n }\n return -1;\n }\n }\n },\n propFix: {\n \"for\": \"htmlFor\",\n \"class\": \"className\"\n }\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\n if (!support.optSelected) {\n jQuery.propHooks.selected = {\n get: function (elem) {\n /* eslint no-unused-expressions: \"off\" */\n\n var parent = elem.parentNode;\n if (parent && parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n return null;\n },\n set: function (elem) {\n /* eslint no-unused-expressions: \"off\" */\n\n var parent = elem.parentNode;\n if (parent) {\n parent.selectedIndex;\n if (parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n }\n }\n };\n }\n jQuery.each([\"tabIndex\", \"readOnly\", \"maxLength\", \"cellSpacing\", \"cellPadding\", \"rowSpan\", \"colSpan\", \"useMap\", \"frameBorder\", \"contentEditable\"], function () {\n jQuery.propFix[this.toLowerCase()] = this;\n });\n\n // Strip and collapse whitespace according to HTML spec\n // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace\n function stripAndCollapse(value) {\n var tokens = value.match(rnothtmlwhite) || [];\n return tokens.join(\" \");\n }\n function getClass(elem) {\n return elem.getAttribute && elem.getAttribute(\"class\") || \"\";\n }\n jQuery.fn.extend({\n addClass: function (value) {\n var classes,\n elem,\n cur,\n curValue,\n clazz,\n j,\n finalValue,\n i = 0;\n if (jQuery.isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).addClass(value.call(this, j, getClass(this)));\n });\n }\n if (typeof value === \"string\" && value) {\n classes = value.match(rnothtmlwhite) || [];\n while (elem = this[i++]) {\n curValue = getClass(elem);\n cur = elem.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n if (cur) {\n j = 0;\n while (clazz = classes[j++]) {\n if (cur.indexOf(\" \" + clazz + \" \") < 0) {\n cur += clazz + \" \";\n }\n }\n\n // Only assign if different to avoid unneeded rendering.\n finalValue = stripAndCollapse(cur);\n if (curValue !== finalValue) {\n elem.setAttribute(\"class\", finalValue);\n }\n }\n }\n }\n return this;\n },\n removeClass: function (value) {\n var classes,\n elem,\n cur,\n curValue,\n clazz,\n j,\n finalValue,\n i = 0;\n if (jQuery.isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).removeClass(value.call(this, j, getClass(this)));\n });\n }\n if (!arguments.length) {\n return this.attr(\"class\", \"\");\n }\n if (typeof value === \"string\" && value) {\n classes = value.match(rnothtmlwhite) || [];\n while (elem = this[i++]) {\n curValue = getClass(elem);\n\n // This expression is here for better compressibility (see addClass)\n cur = elem.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n if (cur) {\n j = 0;\n while (clazz = classes[j++]) {\n // Remove *all* instances\n while (cur.indexOf(\" \" + clazz + \" \") > -1) {\n cur = cur.replace(\" \" + clazz + \" \", \" \");\n }\n }\n\n // Only assign if different to avoid unneeded rendering.\n finalValue = stripAndCollapse(cur);\n if (curValue !== finalValue) {\n elem.setAttribute(\"class\", finalValue);\n }\n }\n }\n }\n return this;\n },\n toggleClass: function (value, stateVal) {\n var type = typeof value;\n if (typeof stateVal === \"boolean\" && type === \"string\") {\n return stateVal ? this.addClass(value) : this.removeClass(value);\n }\n if (jQuery.isFunction(value)) {\n return this.each(function (i) {\n jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal);\n });\n }\n return this.each(function () {\n var className, i, self, classNames;\n if (type === \"string\") {\n // Toggle individual class names\n i = 0;\n self = jQuery(this);\n classNames = value.match(rnothtmlwhite) || [];\n while (className = classNames[i++]) {\n // Check each className given, space separated list\n if (self.hasClass(className)) {\n self.removeClass(className);\n } else {\n self.addClass(className);\n }\n }\n\n // Toggle whole class name\n } else if (value === undefined || type === \"boolean\") {\n className = getClass(this);\n if (className) {\n // Store className if set\n dataPriv.set(this, \"__className__\", className);\n }\n\n // If the element has a class name or if we're passed `false`,\n // then remove the whole classname (if there was one, the above saved it).\n // Otherwise bring back whatever was previously saved (if anything),\n // falling back to the empty string if nothing was stored.\n if (this.setAttribute) {\n this.setAttribute(\"class\", className || value === false ? \"\" : dataPriv.get(this, \"__className__\") || \"\");\n }\n }\n });\n },\n hasClass: function (selector) {\n var className,\n elem,\n i = 0;\n className = \" \" + selector + \" \";\n while (elem = this[i++]) {\n if (elem.nodeType === 1 && (\" \" + stripAndCollapse(getClass(elem)) + \" \").indexOf(className) > -1) {\n return true;\n }\n }\n return false;\n }\n });\n var rreturn = /\\r/g;\n jQuery.fn.extend({\n val: function (value) {\n var hooks,\n ret,\n isFunction,\n elem = this[0];\n if (!arguments.length) {\n if (elem) {\n hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, \"value\")) !== undefined) {\n return ret;\n }\n ret = elem.value;\n\n // Handle most common string cases\n if (typeof ret === \"string\") {\n return ret.replace(rreturn, \"\");\n }\n\n // Handle cases where value is null/undef or number\n return ret == null ? \"\" : ret;\n }\n return;\n }\n isFunction = jQuery.isFunction(value);\n return this.each(function (i) {\n var val;\n if (this.nodeType !== 1) {\n return;\n }\n if (isFunction) {\n val = value.call(this, i, jQuery(this).val());\n } else {\n val = value;\n }\n\n // Treat null/undefined as \"\"; convert numbers to string\n if (val == null) {\n val = \"\";\n } else if (typeof val === \"number\") {\n val += \"\";\n } else if (jQuery.isArray(val)) {\n val = jQuery.map(val, function (value) {\n return value == null ? \"\" : value + \"\";\n });\n }\n hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()];\n\n // If set returns undefined, fall back to normal setting\n if (!hooks || !(\"set\" in hooks) || hooks.set(this, val, \"value\") === undefined) {\n this.value = val;\n }\n });\n }\n });\n jQuery.extend({\n valHooks: {\n option: {\n get: function (elem) {\n var val = jQuery.find.attr(elem, \"value\");\n return val != null ? val :\n // Support: IE <=10 - 11 only\n // option.text throws exceptions (#14686, #14858)\n // Strip and collapse whitespace\n // https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n stripAndCollapse(jQuery.text(elem));\n }\n },\n select: {\n get: function (elem) {\n var value,\n option,\n i,\n options = elem.options,\n index = elem.selectedIndex,\n one = elem.type === \"select-one\",\n values = one ? null : [],\n max = one ? index + 1 : options.length;\n if (index < 0) {\n i = max;\n } else {\n i = one ? index : 0;\n }\n\n // Loop through all the selected options\n for (; i < max; i++) {\n option = options[i];\n\n // Support: IE <=9 only\n // IE8-9 doesn't update selected after form reset (#2551)\n if ((option.selected || i === index) &&\n // Don't return options that are disabled or in a disabled optgroup\n !option.disabled && (!option.parentNode.disabled || !jQuery.nodeName(option.parentNode, \"optgroup\"))) {\n // Get the specific value for the option\n value = jQuery(option).val();\n\n // We don't need an array for one selects\n if (one) {\n return value;\n }\n\n // Multi-Selects return an array\n values.push(value);\n }\n }\n return values;\n },\n set: function (elem, value) {\n var optionSet,\n option,\n options = elem.options,\n values = jQuery.makeArray(value),\n i = options.length;\n while (i--) {\n option = options[i];\n\n /* eslint-disable no-cond-assign */\n\n if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {\n optionSet = true;\n }\n\n /* eslint-enable no-cond-assign */\n }\n\n // Force browsers to behave consistently when non-matching value is set\n if (!optionSet) {\n elem.selectedIndex = -1;\n }\n return values;\n }\n }\n }\n });\n\n // Radios and checkboxes getter/setter\n jQuery.each([\"radio\", \"checkbox\"], function () {\n jQuery.valHooks[this] = {\n set: function (elem, value) {\n if (jQuery.isArray(value)) {\n return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1;\n }\n }\n };\n if (!support.checkOn) {\n jQuery.valHooks[this].get = function (elem) {\n return elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n };\n }\n });\n\n // Return jQuery for attributes-only inclusion\n\n var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;\n jQuery.extend(jQuery.event, {\n trigger: function (event, data, elem, onlyHandlers) {\n var i,\n cur,\n tmp,\n bubbleType,\n ontype,\n handle,\n special,\n eventPath = [elem || document],\n type = hasOwn.call(event, \"type\") ? event.type : event,\n namespaces = hasOwn.call(event, \"namespace\") ? event.namespace.split(\".\") : [];\n cur = tmp = elem = elem || document;\n\n // Don't do events on text and comment nodes\n if (elem.nodeType === 3 || elem.nodeType === 8) {\n return;\n }\n\n // focus/blur morphs to focusin/out; ensure we're not firing them right now\n if (rfocusMorph.test(type + jQuery.event.triggered)) {\n return;\n }\n if (type.indexOf(\".\") > -1) {\n // Namespaced trigger; create a regexp to match event type in handle()\n namespaces = type.split(\".\");\n type = namespaces.shift();\n namespaces.sort();\n }\n ontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n // Caller can pass in a jQuery.Event object, Object, or just an event type string\n event = event[jQuery.expando] ? event : new jQuery.Event(type, typeof event === \"object\" && event);\n\n // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n event.isTrigger = onlyHandlers ? 2 : 3;\n event.namespace = namespaces.join(\".\");\n event.rnamespace = event.namespace ? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\n // Clean up the event in case it is being reused\n event.result = undefined;\n if (!event.target) {\n event.target = elem;\n }\n\n // Clone any incoming data and prepend the event, creating the handler arg list\n data = data == null ? [event] : jQuery.makeArray(data, [event]);\n\n // Allow special events to draw outside the lines\n special = jQuery.event.special[type] || {};\n if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {\n return;\n }\n\n // Determine event propagation path in advance, per W3C events spec (#9951)\n // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n if (!onlyHandlers && !special.noBubble && !jQuery.isWindow(elem)) {\n bubbleType = special.delegateType || type;\n if (!rfocusMorph.test(bubbleType + type)) {\n cur = cur.parentNode;\n }\n for (; cur; cur = cur.parentNode) {\n eventPath.push(cur);\n tmp = cur;\n }\n\n // Only add window if we got to document (e.g., not plain obj or detached DOM)\n if (tmp === (elem.ownerDocument || document)) {\n eventPath.push(tmp.defaultView || tmp.parentWindow || window);\n }\n }\n\n // Fire handlers on the event path\n i = 0;\n while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {\n event.type = i > 1 ? bubbleType : special.bindType || type;\n\n // jQuery handler\n handle = (dataPriv.get(cur, \"events\") || {})[event.type] && dataPriv.get(cur, \"handle\");\n if (handle) {\n handle.apply(cur, data);\n }\n\n // Native handler\n handle = ontype && cur[ontype];\n if (handle && handle.apply && acceptData(cur)) {\n event.result = handle.apply(cur, data);\n if (event.result === false) {\n event.preventDefault();\n }\n }\n }\n event.type = type;\n\n // If nobody prevented the default action, do it now\n if (!onlyHandlers && !event.isDefaultPrevented()) {\n if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {\n // Call a native DOM method on the target with the same name as the event.\n // Don't do default actions on window, that's where global variables be (#6170)\n if (ontype && jQuery.isFunction(elem[type]) && !jQuery.isWindow(elem)) {\n // Don't re-trigger an onFOO event when we call its FOO() method\n tmp = elem[ontype];\n if (tmp) {\n elem[ontype] = null;\n }\n\n // Prevent re-triggering of the same event, since we already bubbled it above\n jQuery.event.triggered = type;\n elem[type]();\n jQuery.event.triggered = undefined;\n if (tmp) {\n elem[ontype] = tmp;\n }\n }\n }\n }\n return event.result;\n },\n // Piggyback on a donor event to simulate a different one\n // Used only for `focus(in | out)` events\n simulate: function (type, elem, event) {\n var e = jQuery.extend(new jQuery.Event(), event, {\n type: type,\n isSimulated: true\n });\n jQuery.event.trigger(e, null, elem);\n }\n });\n jQuery.fn.extend({\n trigger: function (type, data) {\n return this.each(function () {\n jQuery.event.trigger(type, data, this);\n });\n },\n triggerHandler: function (type, data) {\n var elem = this[0];\n if (elem) {\n return jQuery.event.trigger(type, data, elem, true);\n }\n }\n });\n jQuery.each((\"blur focus focusin focusout resize scroll click dblclick \" + \"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" + \"change select submit keydown keypress keyup contextmenu\").split(\" \"), function (i, name) {\n // Handle event binding\n jQuery.fn[name] = function (data, fn) {\n return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);\n };\n });\n jQuery.fn.extend({\n hover: function (fnOver, fnOut) {\n return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);\n }\n });\n support.focusin = \"onfocusin\" in window;\n\n // Support: Firefox <=44\n // Firefox doesn't have focus(in | out) events\n // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n //\n // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n // focus(in | out) events fire after focus & blur events,\n // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n if (!support.focusin) {\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (orig, fix) {\n // Attach a single capturing handler on the document while someone wants focusin/focusout\n var handler = function (event) {\n jQuery.event.simulate(fix, event.target, jQuery.event.fix(event));\n };\n jQuery.event.special[fix] = {\n setup: function () {\n var doc = this.ownerDocument || this,\n attaches = dataPriv.access(doc, fix);\n if (!attaches) {\n doc.addEventListener(orig, handler, true);\n }\n dataPriv.access(doc, fix, (attaches || 0) + 1);\n },\n teardown: function () {\n var doc = this.ownerDocument || this,\n attaches = dataPriv.access(doc, fix) - 1;\n if (!attaches) {\n doc.removeEventListener(orig, handler, true);\n dataPriv.remove(doc, fix);\n } else {\n dataPriv.access(doc, fix, attaches);\n }\n }\n };\n });\n }\n var location = window.location;\n var nonce = jQuery.now();\n var rquery = /\\?/;\n\n // Cross-browser xml parsing\n jQuery.parseXML = function (data) {\n var xml;\n if (!data || typeof data !== \"string\") {\n return null;\n }\n\n // Support: IE 9 - 11 only\n // IE throws on parseFromString with invalid input.\n try {\n xml = new window.DOMParser().parseFromString(data, \"text/xml\");\n } catch (e) {\n xml = undefined;\n }\n if (!xml || xml.getElementsByTagName(\"parsererror\").length) {\n jQuery.error(\"Invalid XML: \" + data);\n }\n return xml;\n };\n var rbracket = /\\[\\]$/,\n rCRLF = /\\r?\\n/g,\n rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n rsubmittable = /^(?:input|select|textarea|keygen)/i;\n function buildParams(prefix, obj, traditional, add) {\n var name;\n if (jQuery.isArray(obj)) {\n // Serialize array item.\n jQuery.each(obj, function (i, v) {\n if (traditional || rbracket.test(prefix)) {\n // Treat each array item as a scalar.\n add(prefix, v);\n } else {\n // Item is non-scalar (array or object), encode its numeric index.\n buildParams(prefix + \"[\" + (typeof v === \"object\" && v != null ? i : \"\") + \"]\", v, traditional, add);\n }\n });\n } else if (!traditional && jQuery.type(obj) === \"object\") {\n // Serialize object item.\n for (name in obj) {\n buildParams(prefix + \"[\" + name + \"]\", obj[name], traditional, add);\n }\n } else {\n // Serialize scalar item.\n add(prefix, obj);\n }\n }\n\n // Serialize an array of form elements or a set of\n // key/values into a query string\n jQuery.param = function (a, traditional) {\n var prefix,\n s = [],\n add = function (key, valueOrFunction) {\n // If value is a function, invoke it and use its return value\n var value = jQuery.isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;\n s[s.length] = encodeURIComponent(key) + \"=\" + encodeURIComponent(value == null ? \"\" : value);\n };\n\n // If an array was passed in, assume that it is an array of form elements.\n if (jQuery.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {\n // Serialize the form elements\n jQuery.each(a, function () {\n add(this.name, this.value);\n });\n } else {\n // If traditional, encode the \"old\" way (the way 1.3.2 or older\n // did it), otherwise encode params recursively.\n for (prefix in a) {\n buildParams(prefix, a[prefix], traditional, add);\n }\n }\n\n // Return the resulting serialization\n return s.join(\"&\");\n };\n jQuery.fn.extend({\n serialize: function () {\n return jQuery.param(this.serializeArray());\n },\n serializeArray: function () {\n return this.map(function () {\n // Can add propHook for \"elements\" to filter or add form elements\n var elements = jQuery.prop(this, \"elements\");\n return elements ? jQuery.makeArray(elements) : this;\n }).filter(function () {\n var type = this.type;\n\n // Use .is( \":disabled\" ) so that fieldset[disabled] works\n return this.name && !jQuery(this).is(\":disabled\") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));\n }).map(function (i, elem) {\n var val = jQuery(this).val();\n if (val == null) {\n return null;\n }\n if (jQuery.isArray(val)) {\n return jQuery.map(val, function (val) {\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n });\n }\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n }).get();\n }\n });\n var r20 = /%20/g,\n rhash = /#.*$/,\n rantiCache = /([?&])_=[^&]*/,\n rheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n // #7653, #8125, #8152: local protocol detection\n rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n rnoContent = /^(?:GET|HEAD)$/,\n rprotocol = /^\\/\\//,\n /* Prefilters\n * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n * 2) These are called:\n * - BEFORE asking for a transport\n * - AFTER param serialization (s.data is a string if s.processData is true)\n * 3) key is the dataType\n * 4) the catchall symbol \"*\" can be used\n * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n */\n prefilters = {},\n /* Transports bindings\n * 1) key is the dataType\n * 2) the catchall symbol \"*\" can be used\n * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n */\n transports = {},\n // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n allTypes = \"*/\".concat(\"*\"),\n // Anchor tag for parsing the document origin\n originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href;\n\n // Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n function addToPrefiltersOrTransports(structure) {\n // dataTypeExpression is optional and defaults to \"*\"\n return function (dataTypeExpression, func) {\n if (typeof dataTypeExpression !== \"string\") {\n func = dataTypeExpression;\n dataTypeExpression = \"*\";\n }\n var dataType,\n i = 0,\n dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];\n if (jQuery.isFunction(func)) {\n // For each dataType in the dataTypeExpression\n while (dataType = dataTypes[i++]) {\n // Prepend if requested\n if (dataType[0] === \"+\") {\n dataType = dataType.slice(1) || \"*\";\n (structure[dataType] = structure[dataType] || []).unshift(func);\n\n // Otherwise append\n } else {\n (structure[dataType] = structure[dataType] || []).push(func);\n }\n }\n }\n };\n }\n\n // Base inspection function for prefilters and transports\n function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {\n var inspected = {},\n seekingTransport = structure === transports;\n function inspect(dataType) {\n var selected;\n inspected[dataType] = true;\n jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {\n var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);\n if (typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[dataTypeOrTransport]) {\n options.dataTypes.unshift(dataTypeOrTransport);\n inspect(dataTypeOrTransport);\n return false;\n } else if (seekingTransport) {\n return !(selected = dataTypeOrTransport);\n }\n });\n return selected;\n }\n return 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\n function ajaxExtend(target, src) {\n var key,\n deep,\n flatOptions = jQuery.ajaxSettings.flatOptions || {};\n for (key in src) {\n if (src[key] !== undefined) {\n (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];\n }\n }\n if (deep) {\n jQuery.extend(true, target, deep);\n }\n return 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 */\n function ajaxHandleResponses(s, jqXHR, responses) {\n var ct,\n type,\n finalDataType,\n firstDataType,\n contents = s.contents,\n dataTypes = s.dataTypes;\n\n // Remove auto dataType and get content-type in the process\n while (dataTypes[0] === \"*\") {\n dataTypes.shift();\n if (ct === undefined) {\n ct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n }\n }\n\n // Check if we're dealing with a known content-type\n if (ct) {\n for (type in contents) {\n if (contents[type] && contents[type].test(ct)) {\n dataTypes.unshift(type);\n break;\n }\n }\n }\n\n // Check to see if we have a response for the expected dataType\n if (dataTypes[0] in responses) {\n finalDataType = dataTypes[0];\n } else {\n // Try convertible dataTypes\n for (type in responses) {\n if (!dataTypes[0] || s.converters[type + \" \" + dataTypes[0]]) {\n finalDataType = type;\n break;\n }\n if (!firstDataType) {\n firstDataType = type;\n }\n }\n\n // Or just use first one\n finalDataType = finalDataType || firstDataType;\n }\n\n // If we found a dataType\n // We add the dataType to the list if needed\n // and return the corresponding response\n if (finalDataType) {\n if (finalDataType !== dataTypes[0]) {\n dataTypes.unshift(finalDataType);\n }\n return responses[finalDataType];\n }\n }\n\n /* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\n function ajaxConvert(s, response, jqXHR, isSuccess) {\n var conv2,\n current,\n conv,\n tmp,\n prev,\n converters = {},\n // Work with a copy of dataTypes in case we need to modify it for conversion\n dataTypes = s.dataTypes.slice();\n\n // Create converters map with lowercased keys\n if (dataTypes[1]) {\n for (conv in s.converters) {\n converters[conv.toLowerCase()] = s.converters[conv];\n }\n }\n current = dataTypes.shift();\n\n // Convert to each sequential dataType\n while (current) {\n if (s.responseFields[current]) {\n jqXHR[s.responseFields[current]] = response;\n }\n\n // Apply the dataFilter if provided\n if (!prev && isSuccess && s.dataFilter) {\n response = s.dataFilter(response, s.dataType);\n }\n prev = current;\n current = dataTypes.shift();\n if (current) {\n // There's only work to do if current dataType is non-auto\n if (current === \"*\") {\n current = prev;\n\n // Convert response if prev dataType is non-auto and differs from current\n } else if (prev !== \"*\" && prev !== current) {\n // Seek a direct converter\n conv = converters[prev + \" \" + current] || converters[\"* \" + current];\n\n // If none found, seek a pair\n if (!conv) {\n for (conv2 in converters) {\n // If conv2 outputs current\n tmp = conv2.split(\" \");\n if (tmp[1] === current) {\n // If prev can be converted to accepted input\n conv = converters[prev + \" \" + tmp[0]] || converters[\"* \" + tmp[0]];\n if (conv) {\n // Condense equivalence converters\n if (conv === true) {\n conv = converters[conv2];\n\n // Otherwise, insert the intermediate dataType\n } else if (converters[conv2] !== true) {\n current = tmp[0];\n dataTypes.unshift(tmp[1]);\n }\n break;\n }\n }\n }\n }\n\n // Apply converter (if not an equivalence)\n if (conv !== true) {\n // Unless errors are allowed to bubble, catch and return them\n if (conv && s.throws) {\n response = conv(response);\n } else {\n try {\n response = conv(response);\n } catch (e) {\n return {\n state: \"parsererror\",\n error: conv ? e : \"No conversion from \" + prev + \" to \" + current\n };\n }\n }\n }\n }\n }\n }\n return {\n state: \"success\",\n data: response\n };\n }\n jQuery.extend({\n // Counter for holding the number of active queries\n active: 0,\n // Last-Modified header cache for next request\n lastModified: {},\n etag: {},\n ajaxSettings: {\n url: location.href,\n type: \"GET\",\n isLocal: rlocalProtocol.test(location.protocol),\n global: true,\n processData: true,\n async: true,\n contentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n /*\n timeout: 0,\n data: null,\n dataType: null,\n username: null,\n password: null,\n cache: null,\n throws: false,\n traditional: false,\n headers: {},\n */\n\n accepts: {\n \"*\": allTypes,\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\"\n },\n contents: {\n xml: /\\bxml\\b/,\n html: /\\bhtml/,\n json: /\\bjson\\b/\n },\n responseFields: {\n xml: \"responseXML\",\n text: \"responseText\",\n json: \"responseJSON\"\n },\n // Data converters\n // Keys separate source (or catchall \"*\") and destination types with a single space\n converters: {\n // Convert anything to text\n \"* text\": String,\n // Text to html (true = no transformation)\n \"text html\": true,\n // Evaluate text as a json expression\n \"text json\": JSON.parse,\n // Parse text as xml\n \"text xml\": jQuery.parseXML\n },\n // For options that shouldn't be deep extended:\n // you can add your own custom options here if\n // and when you create one that shouldn't be\n // deep extended (see ajaxExtend)\n flatOptions: {\n url: true,\n context: true\n }\n },\n // Creates a full fledged settings object into target\n // with both ajaxSettings and settings fields.\n // If target is omitted, writes into ajaxSettings.\n ajaxSetup: function (target, settings) {\n return settings ?\n // Building a settings object\n ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) :\n // Extending ajaxSettings\n ajaxExtend(jQuery.ajaxSettings, target);\n },\n ajaxPrefilter: addToPrefiltersOrTransports(prefilters),\n ajaxTransport: addToPrefiltersOrTransports(transports),\n // Main method\n ajax: function (url, options) {\n // If url is an object, simulate pre-1.5 signature\n if (typeof url === \"object\") {\n options = url;\n url = undefined;\n }\n\n // Force options to be an object\n options = options || {};\n var transport,\n // URL without anti-cache param\n cacheURL,\n // Response headers\n responseHeadersString,\n responseHeaders,\n // timeout handle\n timeoutTimer,\n // Url cleanup var\n urlAnchor,\n // Request state (becomes false upon send and true upon completion)\n completed,\n // To know if global events are to be dispatched\n fireGlobals,\n // Loop variable\n i,\n // uncached part of the url\n uncached,\n // Create the final options object\n s = jQuery.ajaxSetup({}, options),\n // Callbacks context\n callbackContext = s.context || s,\n // Context for global events is callbackContext if it is a DOM node or jQuery collection\n globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,\n // Deferreds\n deferred = jQuery.Deferred(),\n completeDeferred = jQuery.Callbacks(\"once memory\"),\n // Status-dependent callbacks\n statusCode = s.statusCode || {},\n // Headers (they are sent all at once)\n requestHeaders = {},\n requestHeadersNames = {},\n // Default abort message\n strAbort = \"canceled\",\n // Fake xhr\n jqXHR = {\n readyState: 0,\n // Builds headers hashtable if needed\n getResponseHeader: function (key) {\n var match;\n if (completed) {\n if (!responseHeaders) {\n responseHeaders = {};\n while (match = rheaders.exec(responseHeadersString)) {\n responseHeaders[match[1].toLowerCase()] = match[2];\n }\n }\n match = responseHeaders[key.toLowerCase()];\n }\n return match == null ? null : match;\n },\n // Raw string\n getAllResponseHeaders: function () {\n return completed ? responseHeadersString : null;\n },\n // Caches the header\n setRequestHeader: function (name, value) {\n if (completed == null) {\n name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name;\n requestHeaders[name] = value;\n }\n return this;\n },\n // Overrides response content-type header\n overrideMimeType: function (type) {\n if (completed == null) {\n s.mimeType = type;\n }\n return this;\n },\n // Status-dependent callbacks\n statusCode: function (map) {\n var code;\n if (map) {\n if (completed) {\n // Execute the appropriate callbacks\n jqXHR.always(map[jqXHR.status]);\n } else {\n // Lazy-add the new callbacks in a way that preserves old ones\n for (code in map) {\n statusCode[code] = [statusCode[code], map[code]];\n }\n }\n }\n return this;\n },\n // Cancel the request\n abort: function (statusText) {\n var finalText = statusText || strAbort;\n if (transport) {\n transport.abort(finalText);\n }\n done(0, finalText);\n return this;\n }\n };\n\n // Attach deferreds\n deferred.promise(jqXHR);\n\n // Add protocol if not provided (prefilters might expect it)\n // Handle falsy url in the settings object (#10093: consistency with old signature)\n // We also use the url parameter if available\n s.url = ((url || s.url || location.href) + \"\").replace(rprotocol, location.protocol + \"//\");\n\n // Alias method option to type as per ticket #12004\n s.type = options.method || options.type || s.method || s.type;\n\n // Extract dataTypes list\n s.dataTypes = (s.dataType || \"*\").toLowerCase().match(rnothtmlwhite) || [\"\"];\n\n // A cross-domain request is in order when the origin doesn't match the current origin.\n if (s.crossDomain == null) {\n urlAnchor = document.createElement(\"a\");\n\n // Support: IE <=8 - 11, Edge 12 - 13\n // IE throws exception on accessing the href property if url is malformed,\n // e.g. http://example.com:80x/\n try {\n urlAnchor.href = s.url;\n\n // Support: IE <=8 - 11 only\n // Anchor's host property isn't correctly set when s.url is relative\n urlAnchor.href = urlAnchor.href;\n s.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !== urlAnchor.protocol + \"//\" + urlAnchor.host;\n } catch (e) {\n // If there is an error parsing the URL, assume it is crossDomain,\n // it can be rejected by the transport if it is invalid\n s.crossDomain = true;\n }\n }\n\n // Convert data if not already a string\n if (s.data && s.processData && typeof s.data !== \"string\") {\n s.data = jQuery.param(s.data, s.traditional);\n }\n\n // Apply prefilters\n inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);\n\n // If request was aborted inside a prefilter, stop there\n if (completed) {\n return jqXHR;\n }\n\n // We can fire global events as of now if asked to\n // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n fireGlobals = jQuery.event && s.global;\n\n // Watch for a new set of requests\n if (fireGlobals && jQuery.active++ === 0) {\n jQuery.event.trigger(\"ajaxStart\");\n }\n\n // Uppercase the type\n s.type = s.type.toUpperCase();\n\n // Determine if request has content\n s.hasContent = !rnoContent.test(s.type);\n\n // Save the URL in case we're toying with the If-Modified-Since\n // and/or If-None-Match header later on\n // Remove hash to simplify url manipulation\n cacheURL = s.url.replace(rhash, \"\");\n\n // More options handling for requests with no content\n if (!s.hasContent) {\n // Remember the hash so we can put it back\n uncached = s.url.slice(cacheURL.length);\n\n // If data is available, append data to url\n if (s.data) {\n cacheURL += (rquery.test(cacheURL) ? \"&\" : \"?\") + s.data;\n\n // #9682: remove data so that it's not used in an eventual retry\n delete s.data;\n }\n\n // Add or update anti-cache param if needed\n if (s.cache === false) {\n cacheURL = cacheURL.replace(rantiCache, \"$1\");\n uncached = (rquery.test(cacheURL) ? \"&\" : \"?\") + \"_=\" + nonce++ + uncached;\n }\n\n // Put hash and anti-cache on the URL that will be requested (gh-1732)\n s.url = cacheURL + uncached;\n\n // Change '%20' to '+' if this is encoded form body content (gh-2658)\n } else if (s.data && s.processData && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0) {\n s.data = s.data.replace(r20, \"+\");\n }\n\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n if (jQuery.lastModified[cacheURL]) {\n jqXHR.setRequestHeader(\"If-Modified-Since\", jQuery.lastModified[cacheURL]);\n }\n if (jQuery.etag[cacheURL]) {\n jqXHR.setRequestHeader(\"If-None-Match\", jQuery.etag[cacheURL]);\n }\n }\n\n // Set the correct header, if data is being sent\n if (s.data && s.hasContent && s.contentType !== false || options.contentType) {\n jqXHR.setRequestHeader(\"Content-Type\", s.contentType);\n }\n\n // Set the Accepts header for the server, depending on the dataType\n jqXHR.setRequestHeader(\"Accept\", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\") : s.accepts[\"*\"]);\n\n // Check for headers option\n for (i in s.headers) {\n jqXHR.setRequestHeader(i, s.headers[i]);\n }\n\n // Allow custom headers/mimetypes and early abort\n if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed)) {\n // Abort if not done already and return\n return jqXHR.abort();\n }\n\n // Aborting is no longer a cancellation\n strAbort = \"abort\";\n\n // Install callbacks on deferreds\n completeDeferred.add(s.complete);\n jqXHR.done(s.success);\n jqXHR.fail(s.error);\n\n // Get transport\n transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR);\n\n // If no transport, we auto-abort\n if (!transport) {\n done(-1, \"No Transport\");\n } else {\n jqXHR.readyState = 1;\n\n // Send global event\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxSend\", [jqXHR, s]);\n }\n\n // If request was aborted inside ajaxSend, stop there\n if (completed) {\n return jqXHR;\n }\n\n // Timeout\n if (s.async && s.timeout > 0) {\n timeoutTimer = window.setTimeout(function () {\n jqXHR.abort(\"timeout\");\n }, s.timeout);\n }\n try {\n completed = false;\n transport.send(requestHeaders, done);\n } catch (e) {\n // Rethrow post-completion exceptions\n if (completed) {\n throw e;\n }\n\n // Propagate others as results\n done(-1, e);\n }\n }\n\n // Callback for when everything is done\n function done(status, nativeStatusText, responses, headers) {\n var isSuccess,\n success,\n error,\n response,\n modified,\n statusText = nativeStatusText;\n\n // Ignore repeat invocations\n if (completed) {\n return;\n }\n completed = true;\n\n // Clear timeout if it exists\n if (timeoutTimer) {\n window.clearTimeout(timeoutTimer);\n }\n\n // Dereference transport for early garbage collection\n // (no matter how long the jqXHR object will be used)\n transport = undefined;\n\n // Cache response headers\n responseHeadersString = headers || \"\";\n\n // Set readyState\n jqXHR.readyState = status > 0 ? 4 : 0;\n\n // Determine if successful\n isSuccess = status >= 200 && status < 300 || status === 304;\n\n // Get response data\n if (responses) {\n response = ajaxHandleResponses(s, jqXHR, responses);\n }\n\n // Convert no matter what (that way responseXXX fields are always set)\n response = ajaxConvert(s, response, jqXHR, isSuccess);\n\n // If successful, handle type chaining\n if (isSuccess) {\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n modified = jqXHR.getResponseHeader(\"Last-Modified\");\n if (modified) {\n jQuery.lastModified[cacheURL] = modified;\n }\n modified = jqXHR.getResponseHeader(\"etag\");\n if (modified) {\n jQuery.etag[cacheURL] = modified;\n }\n }\n\n // if no content\n if (status === 204 || s.type === \"HEAD\") {\n statusText = \"nocontent\";\n\n // if not modified\n } else if (status === 304) {\n statusText = \"notmodified\";\n\n // If we have data, let's convert it\n } else {\n statusText = response.state;\n success = response.data;\n error = response.error;\n isSuccess = !error;\n }\n } else {\n // Extract error from statusText and normalize for non-aborts\n error = statusText;\n if (status || !statusText) {\n statusText = \"error\";\n if (status < 0) {\n status = 0;\n }\n }\n }\n\n // Set data for the fake xhr object\n jqXHR.status = status;\n jqXHR.statusText = (nativeStatusText || statusText) + \"\";\n\n // Success/Error\n if (isSuccess) {\n deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);\n } else {\n deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);\n }\n\n // Status-dependent callbacks\n jqXHR.statusCode(statusCode);\n statusCode = undefined;\n if (fireGlobals) {\n globalEventContext.trigger(isSuccess ? \"ajaxSuccess\" : \"ajaxError\", [jqXHR, s, isSuccess ? success : error]);\n }\n\n // Complete\n completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxComplete\", [jqXHR, s]);\n\n // Handle the global AJAX counter\n if (! --jQuery.active) {\n jQuery.event.trigger(\"ajaxStop\");\n }\n }\n }\n return jqXHR;\n },\n getJSON: function (url, data, callback) {\n return jQuery.get(url, data, callback, \"json\");\n },\n getScript: function (url, callback) {\n return jQuery.get(url, undefined, callback, \"script\");\n }\n });\n jQuery.each([\"get\", \"post\"], function (i, method) {\n jQuery[method] = function (url, data, callback, type) {\n // Shift arguments if data argument was omitted\n if (jQuery.isFunction(data)) {\n type = type || callback;\n callback = data;\n data = undefined;\n }\n\n // The url can be an options object (which then must have .url)\n return jQuery.ajax(jQuery.extend({\n url: url,\n type: method,\n dataType: type,\n data: data,\n success: callback\n }, jQuery.isPlainObject(url) && url));\n };\n });\n jQuery._evalUrl = function (url) {\n return jQuery.ajax({\n url: url,\n // Make this explicit, since user can override this through ajaxSetup (#11264)\n type: \"GET\",\n dataType: \"script\",\n cache: true,\n async: false,\n global: false,\n \"throws\": true\n });\n };\n jQuery.fn.extend({\n wrapAll: function (html) {\n var wrap;\n if (this[0]) {\n if (jQuery.isFunction(html)) {\n html = html.call(this[0]);\n }\n\n // The elements to wrap the target around\n wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);\n if (this[0].parentNode) {\n wrap.insertBefore(this[0]);\n }\n wrap.map(function () {\n var elem = this;\n while (elem.firstElementChild) {\n elem = elem.firstElementChild;\n }\n return elem;\n }).append(this);\n }\n return this;\n },\n wrapInner: function (html) {\n if (jQuery.isFunction(html)) {\n return this.each(function (i) {\n jQuery(this).wrapInner(html.call(this, i));\n });\n }\n return this.each(function () {\n var self = jQuery(this),\n contents = self.contents();\n if (contents.length) {\n contents.wrapAll(html);\n } else {\n self.append(html);\n }\n });\n },\n wrap: function (html) {\n var isFunction = jQuery.isFunction(html);\n return this.each(function (i) {\n jQuery(this).wrapAll(isFunction ? html.call(this, i) : html);\n });\n },\n unwrap: function (selector) {\n this.parent(selector).not(\"body\").each(function () {\n jQuery(this).replaceWith(this.childNodes);\n });\n return this;\n }\n });\n jQuery.expr.pseudos.hidden = function (elem) {\n return !jQuery.expr.pseudos.visible(elem);\n };\n jQuery.expr.pseudos.visible = function (elem) {\n return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n };\n jQuery.ajaxSettings.xhr = function () {\n try {\n return new window.XMLHttpRequest();\n } catch (e) {}\n };\n var xhrSuccessStatus = {\n // File protocol always yields status code 0, assume 200\n 0: 200,\n // Support: IE <=9 only\n // #1450: sometimes IE returns 1223 when it should be 204\n 1223: 204\n },\n xhrSupported = jQuery.ajaxSettings.xhr();\n support.cors = !!xhrSupported && \"withCredentials\" in xhrSupported;\n support.ajax = xhrSupported = !!xhrSupported;\n jQuery.ajaxTransport(function (options) {\n var callback, errorCallback;\n\n // Cross domain only allowed if supported through XMLHttpRequest\n if (support.cors || xhrSupported && !options.crossDomain) {\n return {\n send: function (headers, complete) {\n var i,\n xhr = options.xhr();\n xhr.open(options.type, options.url, options.async, options.username, options.password);\n\n // Apply custom fields if provided\n if (options.xhrFields) {\n for (i in options.xhrFields) {\n xhr[i] = options.xhrFields[i];\n }\n }\n\n // Override mime type if needed\n if (options.mimeType && xhr.overrideMimeType) {\n xhr.overrideMimeType(options.mimeType);\n }\n\n // X-Requested-With header\n // For cross-domain requests, seeing as conditions for a preflight are\n // akin to a jigsaw puzzle, we simply never set it to be sure.\n // (it can always be set on a per-request basis or even using ajaxSetup)\n // For same-domain requests, won't change header if already provided.\n if (!options.crossDomain && !headers[\"X-Requested-With\"]) {\n headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n }\n\n // Set headers\n for (i in headers) {\n xhr.setRequestHeader(i, headers[i]);\n }\n\n // Callback\n callback = function (type) {\n return function () {\n if (callback) {\n callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;\n if (type === \"abort\") {\n xhr.abort();\n } else if (type === \"error\") {\n // Support: IE <=9 only\n // On a manual native abort, IE9 throws\n // errors on any property access that is not readyState\n if (typeof xhr.status !== \"number\") {\n complete(0, \"error\");\n } else {\n complete(\n // File: protocol always yields status 0; see #8605, #14207\n xhr.status, xhr.statusText);\n }\n } else {\n complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText,\n // Support: IE <=9 only\n // IE9 has no XHR2 but throws on binary (trac-11426)\n // For XHR2 non-text, let the caller handle it (gh-2498)\n (xhr.responseType || \"text\") !== \"text\" || typeof xhr.responseText !== \"string\" ? {\n binary: xhr.response\n } : {\n text: xhr.responseText\n }, xhr.getAllResponseHeaders());\n }\n }\n };\n };\n\n // Listen to events\n xhr.onload = callback();\n errorCallback = xhr.onerror = callback(\"error\");\n\n // Support: IE 9 only\n // Use onreadystatechange to replace onabort\n // to handle uncaught aborts\n if (xhr.onabort !== undefined) {\n xhr.onabort = errorCallback;\n } else {\n xhr.onreadystatechange = function () {\n // Check readyState before timeout as it changes\n if (xhr.readyState === 4) {\n // Allow onerror to be called first,\n // but that will not handle a native abort\n // Also, save errorCallback to a variable\n // as xhr.onerror cannot be accessed\n window.setTimeout(function () {\n if (callback) {\n errorCallback();\n }\n });\n }\n };\n }\n\n // Create the abort callback\n callback = callback(\"abort\");\n try {\n // Do send the request (this may raise an exception)\n xhr.send(options.hasContent && options.data || null);\n } catch (e) {\n // #14683: Only rethrow if this hasn't been notified as an error yet\n if (callback) {\n throw e;\n }\n }\n },\n abort: function () {\n if (callback) {\n callback();\n }\n }\n };\n }\n });\n\n // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\n jQuery.ajaxPrefilter(function (s) {\n if (s.crossDomain) {\n s.contents.script = false;\n }\n });\n\n // Install script dataType\n jQuery.ajaxSetup({\n accepts: {\n script: \"text/javascript, application/javascript, \" + \"application/ecmascript, application/x-ecmascript\"\n },\n contents: {\n script: /\\b(?:java|ecma)script\\b/\n },\n converters: {\n \"text script\": function (text) {\n jQuery.globalEval(text);\n return text;\n }\n }\n });\n\n // Handle cache's special case and crossDomain\n jQuery.ajaxPrefilter(\"script\", function (s) {\n if (s.cache === undefined) {\n s.cache = false;\n }\n if (s.crossDomain) {\n s.type = \"GET\";\n }\n });\n\n // Bind script tag hack transport\n jQuery.ajaxTransport(\"script\", function (s) {\n // This transport only deals with cross domain requests\n if (s.crossDomain) {\n var script, callback;\n return {\n send: function (_, complete) {\n script = jQuery(\"<script>\").prop({\n charset: s.scriptCharset,\n src: s.url\n }).on(\"load error\", callback = function (evt) {\n script.remove();\n callback = null;\n if (evt) {\n complete(evt.type === \"error\" ? 404 : 200, evt.type);\n }\n });\n\n // Use native DOM manipulation to avoid our domManip AJAX trickery\n document.head.appendChild(script[0]);\n },\n abort: function () {\n if (callback) {\n callback();\n }\n }\n };\n }\n });\n var oldCallbacks = [],\n rjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n // Default jsonp settings\n jQuery.ajaxSetup({\n jsonp: \"callback\",\n jsonpCallback: function () {\n var callback = oldCallbacks.pop() || jQuery.expando + \"_\" + nonce++;\n this[callback] = true;\n return callback;\n }\n });\n\n // Detect, normalize options and install callbacks for jsonp requests\n jQuery.ajaxPrefilter(\"json jsonp\", function (s, originalSettings, jqXHR) {\n var callbackName,\n overwritten,\n responseContainer,\n jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? \"url\" : typeof s.data === \"string\" && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0 && rjsonp.test(s.data) && \"data\");\n\n // Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n if (jsonProp || s.dataTypes[0] === \"jsonp\") {\n // Get callback name, remembering preexisting value associated with it\n callbackName = s.jsonpCallback = jQuery.isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback;\n\n // Insert callback into url or form data\n if (jsonProp) {\n s[jsonProp] = s[jsonProp].replace(rjsonp, \"$1\" + callbackName);\n } else if (s.jsonp !== false) {\n s.url += (rquery.test(s.url) ? \"&\" : \"?\") + s.jsonp + \"=\" + callbackName;\n }\n\n // Use data converter to retrieve json after script execution\n s.converters[\"script json\"] = function () {\n if (!responseContainer) {\n jQuery.error(callbackName + \" was not called\");\n }\n return responseContainer[0];\n };\n\n // Force json dataType\n s.dataTypes[0] = \"json\";\n\n // Install callback\n overwritten = window[callbackName];\n window[callbackName] = function () {\n responseContainer = arguments;\n };\n\n // Clean-up function (fires after converters)\n jqXHR.always(function () {\n // If previous value didn't exist - remove it\n if (overwritten === undefined) {\n jQuery(window).removeProp(callbackName);\n\n // Otherwise restore preexisting value\n } else {\n window[callbackName] = overwritten;\n }\n\n // Save back as free\n if (s[callbackName]) {\n // Make sure that re-using the options doesn't screw things around\n s.jsonpCallback = originalSettings.jsonpCallback;\n\n // Save the callback name for future use\n oldCallbacks.push(callbackName);\n }\n\n // Call if it was a function and we have a response\n if (responseContainer && jQuery.isFunction(overwritten)) {\n overwritten(responseContainer[0]);\n }\n responseContainer = overwritten = undefined;\n });\n\n // Delegate to script\n return \"script\";\n }\n });\n\n // Support: Safari 8 only\n // In Safari 8 documents created via document.implementation.createHTMLDocument\n // collapse sibling forms: the second one becomes a child of the first one.\n // Because of that, this security measure has to be disabled in Safari 8.\n // https://bugs.webkit.org/show_bug.cgi?id=137337\n support.createHTMLDocument = function () {\n var body = document.implementation.createHTMLDocument(\"\").body;\n body.innerHTML = \"<form></form><form></form>\";\n return body.childNodes.length === 2;\n }();\n\n // Argument \"data\" should be string of html\n // context (optional): If specified, the fragment will be created in this context,\n // defaults to document\n // keepScripts (optional): If true, will include scripts passed in the html string\n jQuery.parseHTML = function (data, context, keepScripts) {\n if (typeof data !== \"string\") {\n return [];\n }\n if (typeof context === \"boolean\") {\n keepScripts = context;\n context = false;\n }\n var base, parsed, scripts;\n if (!context) {\n // Stop scripts or inline event handlers from being executed immediately\n // by using document.implementation\n if (support.createHTMLDocument) {\n context = document.implementation.createHTMLDocument(\"\");\n\n // Set the base href for the created document\n // so any parsed elements with URLs\n // are based on the document's URL (gh-2965)\n base = context.createElement(\"base\");\n base.href = document.location.href;\n context.head.appendChild(base);\n } else {\n context = document;\n }\n }\n parsed = rsingleTag.exec(data);\n scripts = !keepScripts && [];\n\n // Single tag\n if (parsed) {\n return [context.createElement(parsed[1])];\n }\n parsed = buildFragment([data], context, scripts);\n if (scripts && scripts.length) {\n jQuery(scripts).remove();\n }\n return jQuery.merge([], parsed.childNodes);\n };\n\n /**\n * Load a url into a page\n */\n jQuery.fn.load = function (url, params, callback) {\n var selector,\n type,\n response,\n self = this,\n off = url.indexOf(\" \");\n if (off > -1) {\n selector = stripAndCollapse(url.slice(off));\n url = url.slice(0, off);\n }\n\n // If it's a function\n if (jQuery.isFunction(params)) {\n // We assume that it's the callback\n callback = params;\n params = undefined;\n\n // Otherwise, build a param string\n } else if (params && typeof params === \"object\") {\n type = \"POST\";\n }\n\n // If we have elements to modify, make the request\n if (self.length > 0) {\n jQuery.ajax({\n url: url,\n // If \"type\" variable is undefined, then \"GET\" method will be used.\n // Make value of this field explicit since\n // user can override it through ajaxSetup method\n type: type || \"GET\",\n dataType: \"html\",\n data: params\n }).done(function (responseText) {\n // Save response for use in complete callback\n response = arguments;\n self.html(selector ?\n // If a selector was specified, locate the right elements in a dummy div\n // Exclude scripts to avoid IE 'Permission Denied' errors\n jQuery(\"<div>\").append(jQuery.parseHTML(responseText)).find(selector) :\n // Otherwise use the full result\n responseText);\n\n // If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n // but they are ignored because response was set above.\n // If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n }).always(callback && function (jqXHR, status) {\n self.each(function () {\n callback.apply(this, response || [jqXHR.responseText, status, jqXHR]);\n });\n });\n }\n return this;\n };\n\n // Attach a bunch of functions for handling common AJAX events\n jQuery.each([\"ajaxStart\", \"ajaxStop\", \"ajaxComplete\", \"ajaxError\", \"ajaxSuccess\", \"ajaxSend\"], function (i, type) {\n jQuery.fn[type] = function (fn) {\n return this.on(type, fn);\n };\n });\n jQuery.expr.pseudos.animated = function (elem) {\n return jQuery.grep(jQuery.timers, function (fn) {\n return elem === fn.elem;\n }).length;\n };\n\n /**\n * Gets a window from an element\n */\n function getWindow(elem) {\n return jQuery.isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;\n }\n jQuery.offset = {\n setOffset: function (elem, options, i) {\n var curPosition,\n curLeft,\n curCSSTop,\n curTop,\n curOffset,\n curCSSLeft,\n calculatePosition,\n position = jQuery.css(elem, \"position\"),\n curElem = jQuery(elem),\n props = {};\n\n // Set position first, in-case top/left are set even on static elem\n if (position === \"static\") {\n elem.style.position = \"relative\";\n }\n curOffset = curElem.offset();\n curCSSTop = jQuery.css(elem, \"top\");\n curCSSLeft = jQuery.css(elem, \"left\");\n calculatePosition = (position === \"absolute\" || position === \"fixed\") && (curCSSTop + curCSSLeft).indexOf(\"auto\") > -1;\n\n // Need to be able to calculate position if either\n // top or left is auto and position is either absolute or fixed\n if (calculatePosition) {\n curPosition = curElem.position();\n curTop = curPosition.top;\n curLeft = curPosition.left;\n } else {\n curTop = parseFloat(curCSSTop) || 0;\n curLeft = parseFloat(curCSSLeft) || 0;\n }\n if (jQuery.isFunction(options)) {\n // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n options = options.call(elem, i, jQuery.extend({}, curOffset));\n }\n if (options.top != null) {\n props.top = options.top - curOffset.top + curTop;\n }\n if (options.left != null) {\n props.left = options.left - curOffset.left + curLeft;\n }\n if (\"using\" in options) {\n options.using.call(elem, props);\n } else {\n curElem.css(props);\n }\n }\n };\n jQuery.fn.extend({\n offset: function (options) {\n // Preserve chaining for setter\n if (arguments.length) {\n return options === undefined ? this : this.each(function (i) {\n jQuery.offset.setOffset(this, options, i);\n });\n }\n var docElem,\n win,\n rect,\n doc,\n elem = this[0];\n if (!elem) {\n return;\n }\n\n // Support: IE <=11 only\n // Running getBoundingClientRect on a\n // disconnected node in IE throws an error\n if (!elem.getClientRects().length) {\n return {\n top: 0,\n left: 0\n };\n }\n rect = elem.getBoundingClientRect();\n\n // Make sure element is not hidden (display: none)\n if (rect.width || rect.height) {\n doc = elem.ownerDocument;\n win = getWindow(doc);\n docElem = doc.documentElement;\n return {\n top: rect.top + win.pageYOffset - docElem.clientTop,\n left: rect.left + win.pageXOffset - docElem.clientLeft\n };\n }\n\n // Return zeros for disconnected and hidden elements (gh-2310)\n return rect;\n },\n position: function () {\n if (!this[0]) {\n return;\n }\n var offsetParent,\n offset,\n elem = this[0],\n parentOffset = {\n top: 0,\n left: 0\n };\n\n // Fixed elements are offset from window (parentOffset = {top:0, left: 0},\n // because it is its only offset parent\n if (jQuery.css(elem, \"position\") === \"fixed\") {\n // Assume getBoundingClientRect is there when computed position is fixed\n offset = elem.getBoundingClientRect();\n } else {\n // Get *real* offsetParent\n offsetParent = this.offsetParent();\n\n // Get correct offsets\n offset = this.offset();\n if (!jQuery.nodeName(offsetParent[0], \"html\")) {\n parentOffset = offsetParent.offset();\n }\n\n // Add offsetParent borders\n parentOffset = {\n top: parentOffset.top + jQuery.css(offsetParent[0], \"borderTopWidth\", true),\n left: parentOffset.left + jQuery.css(offsetParent[0], \"borderLeftWidth\", true)\n };\n }\n\n // Subtract parent offsets and element margins\n return {\n top: offset.top - parentOffset.top - jQuery.css(elem, \"marginTop\", true),\n left: offset.left - parentOffset.left - jQuery.css(elem, \"marginLeft\", true)\n };\n },\n // This method will return documentElement in the following cases:\n // 1) For the element inside the iframe without offsetParent, this method will return\n // documentElement of the parent window\n // 2) For the hidden or detached element\n // 3) For body or html element, i.e. in case of the html node - it will return itself\n //\n // but those exceptions were never presented as a real life use-cases\n // and might be considered as more preferable results.\n //\n // This logic, however, is not guaranteed and can change at any point in the future\n offsetParent: function () {\n return this.map(function () {\n var offsetParent = this.offsetParent;\n while (offsetParent && jQuery.css(offsetParent, \"position\") === \"static\") {\n offsetParent = offsetParent.offsetParent;\n }\n return offsetParent || documentElement;\n });\n }\n });\n\n // Create scrollLeft and scrollTop methods\n jQuery.each({\n scrollLeft: \"pageXOffset\",\n scrollTop: \"pageYOffset\"\n }, function (method, prop) {\n var top = \"pageYOffset\" === prop;\n jQuery.fn[method] = function (val) {\n return access(this, function (elem, method, val) {\n var win = getWindow(elem);\n if (val === undefined) {\n return win ? win[prop] : elem[method];\n }\n if (win) {\n win.scrollTo(!top ? val : win.pageXOffset, top ? val : win.pageYOffset);\n } else {\n elem[method] = val;\n }\n }, method, val, arguments.length);\n };\n });\n\n // Support: Safari <=7 - 9.1, Chrome <=37 - 49\n // Add the top/left cssHooks using jQuery.fn.position\n // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n // Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n // getComputedStyle returns percent when specified for top/left/bottom/right;\n // rather than make the css module depend on the offset module, just check for it here\n jQuery.each([\"top\", \"left\"], function (i, prop) {\n jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function (elem, computed) {\n if (computed) {\n computed = curCSS(elem, prop);\n\n // If curCSS returns percentage, fallback to offset\n return rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + \"px\" : computed;\n }\n });\n });\n\n // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\n jQuery.each({\n Height: \"height\",\n Width: \"width\"\n }, function (name, type) {\n jQuery.each({\n padding: \"inner\" + name,\n content: type,\n \"\": \"outer\" + name\n }, function (defaultExtra, funcName) {\n // Margin is only for outerHeight, outerWidth\n jQuery.fn[funcName] = function (margin, value) {\n var chainable = arguments.length && (defaultExtra || typeof margin !== \"boolean\"),\n extra = defaultExtra || (margin === true || value === true ? \"margin\" : \"border\");\n return access(this, function (elem, type, value) {\n var doc;\n if (jQuery.isWindow(elem)) {\n // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n return funcName.indexOf(\"outer\") === 0 ? elem[\"inner\" + name] : elem.document.documentElement[\"client\" + name];\n }\n\n // Get document width or height\n if (elem.nodeType === 9) {\n doc = elem.documentElement;\n\n // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n // whichever is greatest\n return Math.max(elem.body[\"scroll\" + name], doc[\"scroll\" + name], elem.body[\"offset\" + name], doc[\"offset\" + name], doc[\"client\" + name]);\n }\n return value === undefined ?\n // Get width or height on the element, requesting but not forcing parseFloat\n jQuery.css(elem, type, extra) :\n // Set width or height on the element\n jQuery.style(elem, type, value, extra);\n }, type, chainable ? margin : undefined, chainable);\n };\n });\n });\n jQuery.fn.extend({\n bind: function (types, data, fn) {\n return this.on(types, null, data, fn);\n },\n unbind: function (types, fn) {\n return this.off(types, null, fn);\n },\n delegate: function (selector, types, data, fn) {\n return this.on(types, selector, data, fn);\n },\n undelegate: function (selector, types, fn) {\n // ( namespace ) or ( selector, types [, fn] )\n return arguments.length === 1 ? this.off(selector, \"**\") : this.off(types, selector || \"**\", fn);\n }\n });\n jQuery.parseJSON = JSON.parse;\n\n // Register as a named AMD module, since jQuery can be concatenated with other\n // files that may use define, but not via a proper concatenation script that\n // understands anonymous AMD modules. A named AMD is safest and most robust\n // way to register. Lowercase jquery is used because AMD module names are\n // derived from file names, and jQuery is normally delivered in a lowercase\n // file name. Do this after creating the global so that if an AMD module wants\n // to call noConflict to hide this version of jQuery, it will work.\n\n // Note that for maximum portability, libraries that are not jQuery should\n // declare themselves as anonymous modules, and avoid setting a global if an\n // AMD loader is present. jQuery is a special case. For more information, see\n // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\n if (typeof define === \"function\" && define.amd) {\n define(\"jquery\", [], function () {\n return jQuery;\n });\n }\n var\n // Map over jQuery in case of overwrite\n _jQuery = window.jQuery,\n // Map over the $ in case of overwrite\n _$ = window.$;\n jQuery.noConflict = function (deep) {\n if (window.$ === jQuery) {\n window.$ = _$;\n }\n if (deep && window.jQuery === jQuery) {\n window.jQuery = _jQuery;\n }\n return jQuery;\n };\n\n // Expose jQuery and $ identifiers, even in AMD\n // (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n // and CommonJS for browser emulators (#13566)\n if (!noGlobal) {\n window.jQuery = window.$ = jQuery;\n }\n return jQuery;\n});","/*! jQuery UI - v1.14.1 - 2024-10-30\n* https://jqueryui.com\n* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js\n* Copyright OpenJS Foundation and other contributors; Licensed MIT */\n\n(function (factory) {\n \"use strict\";\n\n if (typeof define === \"function\" && define.amd) {\n // AMD. Register as an anonymous module.\n define([\"jquery\"], factory);\n } else {\n // Browser globals\n factory(jQuery);\n }\n})(function ($) {\n \"use strict\";\n\n $.ui = $.ui || {};\n var version = $.ui.version = \"1.14.1\";\n\n /*!\n * jQuery UI Widget 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Widget\n //>>group: Core\n //>>description: Provides a factory for creating stateful widgets with a common API.\n //>>docs: https://api.jqueryui.com/jQuery.widget/\n //>>demos: https://jqueryui.com/widget/\n\n var widgetUuid = 0;\n var widgetHasOwnProperty = Array.prototype.hasOwnProperty;\n var widgetSlice = Array.prototype.slice;\n $.cleanData = function (orig) {\n return function (elems) {\n var events, elem, i;\n for (i = 0; (elem = elems[i]) != null; i++) {\n // Only trigger remove when necessary to save time\n events = $._data(elem, \"events\");\n if (events && events.remove) {\n $(elem).triggerHandler(\"remove\");\n }\n }\n orig(elems);\n };\n }($.cleanData);\n $.widget = function (name, base, prototype) {\n var existingConstructor, constructor, basePrototype;\n\n // ProxiedPrototype allows the provided prototype to remain unmodified\n // so that it can be used as a mixin for multiple widgets (#8876)\n var proxiedPrototype = {};\n var namespace = name.split(\".\")[0];\n name = name.split(\".\")[1];\n if (name === \"__proto__\" || name === \"constructor\") {\n return $.error(\"Invalid widget name: \" + name);\n }\n var fullName = namespace + \"-\" + name;\n if (!prototype) {\n prototype = base;\n base = $.Widget;\n }\n if (Array.isArray(prototype)) {\n prototype = $.extend.apply(null, [{}].concat(prototype));\n }\n\n // Create selector for plugin\n $.expr.pseudos[fullName.toLowerCase()] = function (elem) {\n return !!$.data(elem, fullName);\n };\n $[namespace] = $[namespace] || {};\n existingConstructor = $[namespace][name];\n constructor = $[namespace][name] = function (options, element) {\n // Allow instantiation without \"new\" keyword\n if (!this || !this._createWidget) {\n return new constructor(options, element);\n }\n\n // Allow instantiation without initializing for simple inheritance\n // must use \"new\" keyword (the code above always passes args)\n if (arguments.length) {\n this._createWidget(options, element);\n }\n };\n\n // Extend with the existing constructor to carry over any static properties\n $.extend(constructor, existingConstructor, {\n version: prototype.version,\n // Copy the object used to create the prototype in case we need to\n // redefine the widget later\n _proto: $.extend({}, prototype),\n // Track widgets that inherit from this widget in case this widget is\n // redefined after a widget inherits from it\n _childConstructors: []\n });\n basePrototype = new base();\n\n // We need to make the options hash a property directly on the new instance\n // otherwise we'll modify the options hash on the prototype that we're\n // inheriting from\n basePrototype.options = $.widget.extend({}, basePrototype.options);\n $.each(prototype, function (prop, value) {\n if (typeof value !== \"function\") {\n proxiedPrototype[prop] = value;\n return;\n }\n proxiedPrototype[prop] = function () {\n function _super() {\n return base.prototype[prop].apply(this, arguments);\n }\n function _superApply(args) {\n return base.prototype[prop].apply(this, args);\n }\n return function () {\n var __super = this._super;\n var __superApply = this._superApply;\n var returnValue;\n this._super = _super;\n this._superApply = _superApply;\n returnValue = value.apply(this, arguments);\n this._super = __super;\n this._superApply = __superApply;\n return returnValue;\n };\n }();\n });\n constructor.prototype = $.widget.extend(basePrototype, {\n // TODO: remove support for widgetEventPrefix\n // always use the name + a colon as the prefix, e.g., draggable:start\n // don't prefix for widgets that aren't DOM-based\n widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix || name : name\n }, proxiedPrototype, {\n constructor: constructor,\n namespace: namespace,\n widgetName: name,\n widgetFullName: fullName\n });\n\n // If this widget is being redefined then we need to find all widgets that\n // are inheriting from it and redefine all of them so that they inherit from\n // the new version of this widget. We're essentially trying to replace one\n // level in the prototype chain.\n if (existingConstructor) {\n $.each(existingConstructor._childConstructors, function (i, child) {\n var childPrototype = child.prototype;\n\n // Redefine the child widget using the same prototype that was\n // originally used, but inherit from the new version of the base\n $.widget(childPrototype.namespace + \".\" + childPrototype.widgetName, constructor, child._proto);\n });\n\n // Remove the list of existing child constructors from the old constructor\n // so the old child constructors can be garbage collected\n delete existingConstructor._childConstructors;\n } else {\n base._childConstructors.push(constructor);\n }\n $.widget.bridge(name, constructor);\n return constructor;\n };\n $.widget.extend = function (target) {\n var input = widgetSlice.call(arguments, 1);\n var inputIndex = 0;\n var inputLength = input.length;\n var key;\n var value;\n for (; inputIndex < inputLength; inputIndex++) {\n for (key in input[inputIndex]) {\n value = input[inputIndex][key];\n if (widgetHasOwnProperty.call(input[inputIndex], key) && value !== undefined) {\n // Clone objects\n if ($.isPlainObject(value)) {\n target[key] = $.isPlainObject(target[key]) ? $.widget.extend({}, target[key], value) :\n // Don't extend strings, arrays, etc. with objects\n $.widget.extend({}, value);\n\n // Copy everything else by reference\n } else {\n target[key] = value;\n }\n }\n }\n }\n return target;\n };\n $.widget.bridge = function (name, object) {\n var fullName = object.prototype.widgetFullName || name;\n $.fn[name] = function (options) {\n var isMethodCall = typeof options === \"string\";\n var args = widgetSlice.call(arguments, 1);\n var returnValue = this;\n if (isMethodCall) {\n // If this is an empty collection, we need to have the instance method\n // return undefined instead of the jQuery instance\n if (!this.length && options === \"instance\") {\n returnValue = undefined;\n } else {\n this.each(function () {\n var methodValue;\n var instance = $.data(this, fullName);\n if (options === \"instance\") {\n returnValue = instance;\n return false;\n }\n if (!instance) {\n return $.error(\"cannot call methods on \" + name + \" prior to initialization; \" + \"attempted to call method '\" + options + \"'\");\n }\n if (typeof instance[options] !== \"function\" || options.charAt(0) === \"_\") {\n return $.error(\"no such method '\" + options + \"' for \" + name + \" widget instance\");\n }\n methodValue = instance[options].apply(instance, args);\n if (methodValue !== instance && methodValue !== undefined) {\n returnValue = methodValue && methodValue.jquery ? returnValue.pushStack(methodValue.get()) : methodValue;\n return false;\n }\n });\n }\n } else {\n // Allow multiple hashes to be passed on init\n if (args.length) {\n options = $.widget.extend.apply(null, [options].concat(args));\n }\n this.each(function () {\n var instance = $.data(this, fullName);\n if (instance) {\n instance.option(options || {});\n if (instance._init) {\n instance._init();\n }\n } else {\n $.data(this, fullName, new object(options, this));\n }\n });\n }\n return returnValue;\n };\n };\n $.Widget = function /* options, element */ () {};\n $.Widget._childConstructors = [];\n $.Widget.prototype = {\n widgetName: \"widget\",\n widgetEventPrefix: \"\",\n defaultElement: \"<div>\",\n options: {\n classes: {},\n disabled: false,\n // Callbacks\n create: null\n },\n _createWidget: function (options, element) {\n element = $(element || this.defaultElement || this)[0];\n this.element = $(element);\n this.uuid = widgetUuid++;\n this.eventNamespace = \".\" + this.widgetName + this.uuid;\n this.bindings = $();\n this.hoverable = $();\n this.focusable = $();\n this.classesElementLookup = {};\n if (element !== this) {\n $.data(element, this.widgetFullName, this);\n this._on(true, this.element, {\n remove: function (event) {\n if (event.target === element) {\n this.destroy();\n }\n }\n });\n this.document = $(element.style ?\n // Element within the document\n element.ownerDocument :\n // Element is window or document\n element.document || element);\n this.window = $(this.document[0].defaultView || this.document[0].parentWindow);\n }\n this.options = $.widget.extend({}, this.options, this._getCreateOptions(), options);\n this._create();\n if (this.options.disabled) {\n this._setOptionDisabled(this.options.disabled);\n }\n this._trigger(\"create\", null, this._getCreateEventData());\n this._init();\n },\n _getCreateOptions: function () {\n return {};\n },\n _getCreateEventData: $.noop,\n _create: $.noop,\n _init: $.noop,\n destroy: function () {\n var that = this;\n this._destroy();\n $.each(this.classesElementLookup, function (key, value) {\n that._removeClass(value, key);\n });\n\n // We can probably remove the unbind calls in 2.0\n // all event bindings should go through this._on()\n this.element.off(this.eventNamespace).removeData(this.widgetFullName);\n this.widget().off(this.eventNamespace).removeAttr(\"aria-disabled\");\n\n // Clean up events and states\n this.bindings.off(this.eventNamespace);\n },\n _destroy: $.noop,\n widget: function () {\n return this.element;\n },\n option: function (key, value) {\n var options = key;\n var parts;\n var curOption;\n var i;\n if (arguments.length === 0) {\n // Don't return a reference to the internal hash\n return $.widget.extend({}, this.options);\n }\n if (typeof key === \"string\") {\n // Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n options = {};\n parts = key.split(\".\");\n key = parts.shift();\n if (parts.length) {\n curOption = options[key] = $.widget.extend({}, this.options[key]);\n for (i = 0; i < parts.length - 1; i++) {\n curOption[parts[i]] = curOption[parts[i]] || {};\n curOption = curOption[parts[i]];\n }\n key = parts.pop();\n if (arguments.length === 1) {\n return curOption[key] === undefined ? null : curOption[key];\n }\n curOption[key] = value;\n } else {\n if (arguments.length === 1) {\n return this.options[key] === undefined ? null : this.options[key];\n }\n options[key] = value;\n }\n }\n this._setOptions(options);\n return this;\n },\n _setOptions: function (options) {\n var key;\n for (key in options) {\n this._setOption(key, options[key]);\n }\n return this;\n },\n _setOption: function (key, value) {\n if (key === \"classes\") {\n this._setOptionClasses(value);\n }\n this.options[key] = value;\n if (key === \"disabled\") {\n this._setOptionDisabled(value);\n }\n return this;\n },\n _setOptionClasses: function (value) {\n var classKey, elements, currentElements;\n for (classKey in value) {\n currentElements = this.classesElementLookup[classKey];\n if (value[classKey] === this.options.classes[classKey] || !currentElements || !currentElements.length) {\n continue;\n }\n\n // We are doing this to create a new jQuery object because the _removeClass() call\n // on the next line is going to destroy the reference to the current elements being\n // tracked. We need to save a copy of this collection so that we can add the new classes\n // below.\n elements = $(currentElements.get());\n this._removeClass(currentElements, classKey);\n\n // We don't use _addClass() here, because that uses this.options.classes\n // for generating the string of classes. We want to use the value passed in from\n // _setOption(), this is the new value of the classes option which was passed to\n // _setOption(). We pass this value directly to _classes().\n elements.addClass(this._classes({\n element: elements,\n keys: classKey,\n classes: value,\n add: true\n }));\n }\n },\n _setOptionDisabled: function (value) {\n this._toggleClass(this.widget(), this.widgetFullName + \"-disabled\", null, !!value);\n\n // If the widget is becoming disabled, then nothing is interactive\n if (value) {\n this._removeClass(this.hoverable, null, \"ui-state-hover\");\n this._removeClass(this.focusable, null, \"ui-state-focus\");\n }\n },\n enable: function () {\n return this._setOptions({\n disabled: false\n });\n },\n disable: function () {\n return this._setOptions({\n disabled: true\n });\n },\n _classes: function (options) {\n var full = [];\n var that = this;\n options = $.extend({\n element: this.element,\n classes: this.options.classes || {}\n }, options);\n function bindRemoveEvent() {\n var nodesToBind = [];\n options.element.each(function (_, element) {\n var isTracked = $.map(that.classesElementLookup, function (elements) {\n return elements;\n }).some(function (elements) {\n return elements.is(element);\n });\n if (!isTracked) {\n nodesToBind.push(element);\n }\n });\n that._on($(nodesToBind), {\n remove: \"_untrackClassesElement\"\n });\n }\n function processClassString(classes, checkOption) {\n var current, i;\n for (i = 0; i < classes.length; i++) {\n current = that.classesElementLookup[classes[i]] || $();\n if (options.add) {\n bindRemoveEvent();\n current = $($.uniqueSort(current.get().concat(options.element.get())));\n } else {\n current = $(current.not(options.element).get());\n }\n that.classesElementLookup[classes[i]] = current;\n full.push(classes[i]);\n if (checkOption && options.classes[classes[i]]) {\n full.push(options.classes[classes[i]]);\n }\n }\n }\n if (options.keys) {\n processClassString(options.keys.match(/\\S+/g) || [], true);\n }\n if (options.extra) {\n processClassString(options.extra.match(/\\S+/g) || []);\n }\n return full.join(\" \");\n },\n _untrackClassesElement: function (event) {\n var that = this;\n $.each(that.classesElementLookup, function (key, value) {\n if ($.inArray(event.target, value) !== -1) {\n that.classesElementLookup[key] = $(value.not(event.target).get());\n }\n });\n this._off($(event.target));\n },\n _removeClass: function (element, keys, extra) {\n return this._toggleClass(element, keys, extra, false);\n },\n _addClass: function (element, keys, extra) {\n return this._toggleClass(element, keys, extra, true);\n },\n _toggleClass: function (element, keys, extra, add) {\n add = typeof add === \"boolean\" ? add : extra;\n var shift = typeof element === \"string\" || element === null,\n options = {\n extra: shift ? keys : extra,\n keys: shift ? element : keys,\n element: shift ? this.element : element,\n add: add\n };\n options.element.toggleClass(this._classes(options), add);\n return this;\n },\n _on: function (suppressDisabledCheck, element, handlers) {\n var delegateElement;\n var instance = this;\n\n // No suppressDisabledCheck flag, shuffle arguments\n if (typeof suppressDisabledCheck !== \"boolean\") {\n handlers = element;\n element = suppressDisabledCheck;\n suppressDisabledCheck = false;\n }\n\n // No element argument, shuffle and use this.element\n if (!handlers) {\n handlers = element;\n element = this.element;\n delegateElement = this.widget();\n } else {\n element = delegateElement = $(element);\n this.bindings = this.bindings.add(element);\n }\n $.each(handlers, function (event, handler) {\n function handlerProxy() {\n // Allow widgets to customize the disabled handling\n // - disabled as an array instead of boolean\n // - disabled class as method for disabling individual parts\n if (!suppressDisabledCheck && (instance.options.disabled === true || $(this).hasClass(\"ui-state-disabled\"))) {\n return;\n }\n return (typeof handler === \"string\" ? instance[handler] : handler).apply(instance, arguments);\n }\n\n // Copy the guid so direct unbinding works\n if (typeof handler !== \"string\") {\n handlerProxy.guid = handler.guid = handler.guid || handlerProxy.guid || $.guid++;\n }\n var match = event.match(/^([\\w:-]*)\\s*(.*)$/);\n var eventName = match[1] + instance.eventNamespace;\n var selector = match[2];\n if (selector) {\n delegateElement.on(eventName, selector, handlerProxy);\n } else {\n element.on(eventName, handlerProxy);\n }\n });\n },\n _off: function (element, eventName) {\n eventName = (eventName || \"\").split(\" \").join(this.eventNamespace + \" \") + this.eventNamespace;\n element.off(eventName);\n\n // Clear the stack to avoid memory leaks (#10056)\n this.bindings = $(this.bindings.not(element).get());\n this.focusable = $(this.focusable.not(element).get());\n this.hoverable = $(this.hoverable.not(element).get());\n },\n _delay: function (handler, delay) {\n function handlerProxy() {\n return (typeof handler === \"string\" ? instance[handler] : handler).apply(instance, arguments);\n }\n var instance = this;\n return setTimeout(handlerProxy, delay || 0);\n },\n _hoverable: function (element) {\n this.hoverable = this.hoverable.add(element);\n this._on(element, {\n mouseenter: function (event) {\n this._addClass($(event.currentTarget), null, \"ui-state-hover\");\n },\n mouseleave: function (event) {\n this._removeClass($(event.currentTarget), null, \"ui-state-hover\");\n }\n });\n },\n _focusable: function (element) {\n this.focusable = this.focusable.add(element);\n this._on(element, {\n focusin: function (event) {\n this._addClass($(event.currentTarget), null, \"ui-state-focus\");\n },\n focusout: function (event) {\n this._removeClass($(event.currentTarget), null, \"ui-state-focus\");\n }\n });\n },\n _trigger: function (type, event, data) {\n var prop, orig;\n var callback = this.options[type];\n data = data || {};\n event = $.Event(event);\n event.type = (type === this.widgetEventPrefix ? type : this.widgetEventPrefix + type).toLowerCase();\n\n // The original event may come from any element\n // so we need to reset the target on the new event\n event.target = this.element[0];\n\n // Copy original event properties over to the new event\n orig = event.originalEvent;\n if (orig) {\n for (prop in orig) {\n if (!(prop in event)) {\n event[prop] = orig[prop];\n }\n }\n }\n this.element.trigger(event, data);\n return !(typeof callback === \"function\" && callback.apply(this.element[0], [event].concat(data)) === false || event.isDefaultPrevented());\n }\n };\n $.each({\n show: \"fadeIn\",\n hide: \"fadeOut\"\n }, function (method, defaultEffect) {\n $.Widget.prototype[\"_\" + method] = function (element, options, callback) {\n if (typeof options === \"string\") {\n options = {\n effect: options\n };\n }\n var hasOptions;\n var effectName = !options ? method : options === true || typeof options === \"number\" ? defaultEffect : options.effect || defaultEffect;\n options = options || {};\n if (typeof options === \"number\") {\n options = {\n duration: options\n };\n } else if (options === true) {\n options = {};\n }\n hasOptions = !$.isEmptyObject(options);\n options.complete = callback;\n if (options.delay) {\n element.delay(options.delay);\n }\n if (hasOptions && $.effects && $.effects.effect[effectName]) {\n element[method](options);\n } else if (effectName !== method && element[effectName]) {\n element[effectName](options.duration, options.easing, callback);\n } else {\n element.queue(function (next) {\n $(this)[method]();\n if (callback) {\n callback.call(element[0]);\n }\n next();\n });\n }\n };\n });\n var widget = $.widget;\n\n /*!\n * jQuery UI Position 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n *\n * https://api.jqueryui.com/position/\n */\n\n //>>label: Position\n //>>group: Core\n //>>description: Positions elements relative to other elements.\n //>>docs: https://api.jqueryui.com/position/\n //>>demos: https://jqueryui.com/position/\n\n (function () {\n var cachedScrollbarWidth,\n max = Math.max,\n abs = Math.abs,\n rhorizontal = /left|center|right/,\n rvertical = /top|center|bottom/,\n roffset = /[\\+\\-]\\d+(\\.[\\d]+)?%?/,\n rposition = /^\\w+/,\n rpercent = /%$/,\n _position = $.fn.position;\n function getOffsets(offsets, width, height) {\n return [parseFloat(offsets[0]) * (rpercent.test(offsets[0]) ? width / 100 : 1), parseFloat(offsets[1]) * (rpercent.test(offsets[1]) ? height / 100 : 1)];\n }\n function parseCss(element, property) {\n return parseInt($.css(element, property), 10) || 0;\n }\n function isWindow(obj) {\n return obj != null && obj === obj.window;\n }\n function getDimensions(elem) {\n var raw = elem[0];\n if (raw.nodeType === 9) {\n return {\n width: elem.width(),\n height: elem.height(),\n offset: {\n top: 0,\n left: 0\n }\n };\n }\n if (isWindow(raw)) {\n return {\n width: elem.width(),\n height: elem.height(),\n offset: {\n top: elem.scrollTop(),\n left: elem.scrollLeft()\n }\n };\n }\n if (raw.preventDefault) {\n return {\n width: 0,\n height: 0,\n offset: {\n top: raw.pageY,\n left: raw.pageX\n }\n };\n }\n return {\n width: elem.outerWidth(),\n height: elem.outerHeight(),\n offset: elem.offset()\n };\n }\n $.position = {\n scrollbarWidth: function () {\n if (cachedScrollbarWidth !== undefined) {\n return cachedScrollbarWidth;\n }\n var w1,\n w2,\n div = $(\"<div style=\" + \"'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>\" + \"<div style='height:300px;width:auto;'></div></div>\"),\n innerDiv = div.children()[0];\n $(\"body\").append(div);\n w1 = innerDiv.offsetWidth;\n div.css(\"overflow\", \"scroll\");\n w2 = innerDiv.offsetWidth;\n if (w1 === w2) {\n w2 = div[0].clientWidth;\n }\n div.remove();\n return cachedScrollbarWidth = w1 - w2;\n },\n getScrollInfo: function (within) {\n var overflowX = within.isWindow || within.isDocument ? \"\" : within.element.css(\"overflow-x\"),\n overflowY = within.isWindow || within.isDocument ? \"\" : within.element.css(\"overflow-y\"),\n hasOverflowX = overflowX === \"scroll\" || overflowX === \"auto\" && within.width < within.element[0].scrollWidth,\n hasOverflowY = overflowY === \"scroll\" || overflowY === \"auto\" && within.height < within.element[0].scrollHeight;\n return {\n width: hasOverflowY ? $.position.scrollbarWidth() : 0,\n height: hasOverflowX ? $.position.scrollbarWidth() : 0\n };\n },\n getWithinInfo: function (element) {\n var withinElement = $(element || window),\n isElemWindow = isWindow(withinElement[0]),\n isDocument = !!withinElement[0] && withinElement[0].nodeType === 9,\n hasOffset = !isElemWindow && !isDocument;\n return {\n element: withinElement,\n isWindow: isElemWindow,\n isDocument: isDocument,\n offset: hasOffset ? $(element).offset() : {\n left: 0,\n top: 0\n },\n scrollLeft: withinElement.scrollLeft(),\n scrollTop: withinElement.scrollTop(),\n width: withinElement.outerWidth(),\n height: withinElement.outerHeight()\n };\n }\n };\n $.fn.position = function (options) {\n if (!options || !options.of) {\n return _position.apply(this, arguments);\n }\n\n // Make a copy, we don't want to modify arguments\n options = $.extend({}, options);\n var atOffset,\n targetWidth,\n targetHeight,\n targetOffset,\n basePosition,\n dimensions,\n // Make sure string options are treated as CSS selectors\n target = typeof options.of === \"string\" ? $(document).find(options.of) : $(options.of),\n within = $.position.getWithinInfo(options.within),\n scrollInfo = $.position.getScrollInfo(within),\n collision = (options.collision || \"flip\").split(\" \"),\n offsets = {};\n dimensions = getDimensions(target);\n if (target[0].preventDefault) {\n // Force left top to allow flipping\n options.at = \"left top\";\n }\n targetWidth = dimensions.width;\n targetHeight = dimensions.height;\n targetOffset = dimensions.offset;\n\n // Clone to reuse original targetOffset later\n basePosition = $.extend({}, targetOffset);\n\n // Force my and at to have valid horizontal and vertical positions\n // if a value is missing or invalid, it will be converted to center\n $.each([\"my\", \"at\"], function () {\n var pos = (options[this] || \"\").split(\" \"),\n horizontalOffset,\n verticalOffset;\n if (pos.length === 1) {\n pos = rhorizontal.test(pos[0]) ? pos.concat([\"center\"]) : rvertical.test(pos[0]) ? [\"center\"].concat(pos) : [\"center\", \"center\"];\n }\n pos[0] = rhorizontal.test(pos[0]) ? pos[0] : \"center\";\n pos[1] = rvertical.test(pos[1]) ? pos[1] : \"center\";\n\n // Calculate offsets\n horizontalOffset = roffset.exec(pos[0]);\n verticalOffset = roffset.exec(pos[1]);\n offsets[this] = [horizontalOffset ? horizontalOffset[0] : 0, verticalOffset ? verticalOffset[0] : 0];\n\n // Reduce to just the positions without the offsets\n options[this] = [rposition.exec(pos[0])[0], rposition.exec(pos[1])[0]];\n });\n\n // Normalize collision option\n if (collision.length === 1) {\n collision[1] = collision[0];\n }\n if (options.at[0] === \"right\") {\n basePosition.left += targetWidth;\n } else if (options.at[0] === \"center\") {\n basePosition.left += targetWidth / 2;\n }\n if (options.at[1] === \"bottom\") {\n basePosition.top += targetHeight;\n } else if (options.at[1] === \"center\") {\n basePosition.top += targetHeight / 2;\n }\n atOffset = getOffsets(offsets.at, targetWidth, targetHeight);\n basePosition.left += atOffset[0];\n basePosition.top += atOffset[1];\n return this.each(function () {\n var collisionPosition,\n using,\n elem = $(this),\n elemWidth = elem.outerWidth(),\n elemHeight = elem.outerHeight(),\n marginLeft = parseCss(this, \"marginLeft\"),\n marginTop = parseCss(this, \"marginTop\"),\n collisionWidth = elemWidth + marginLeft + parseCss(this, \"marginRight\") + scrollInfo.width,\n collisionHeight = elemHeight + marginTop + parseCss(this, \"marginBottom\") + scrollInfo.height,\n position = $.extend({}, basePosition),\n myOffset = getOffsets(offsets.my, elem.outerWidth(), elem.outerHeight());\n if (options.my[0] === \"right\") {\n position.left -= elemWidth;\n } else if (options.my[0] === \"center\") {\n position.left -= elemWidth / 2;\n }\n if (options.my[1] === \"bottom\") {\n position.top -= elemHeight;\n } else if (options.my[1] === \"center\") {\n position.top -= elemHeight / 2;\n }\n position.left += myOffset[0];\n position.top += myOffset[1];\n collisionPosition = {\n marginLeft: marginLeft,\n marginTop: marginTop\n };\n $.each([\"left\", \"top\"], function (i, dir) {\n if ($.ui.position[collision[i]]) {\n $.ui.position[collision[i]][dir](position, {\n targetWidth: targetWidth,\n targetHeight: targetHeight,\n elemWidth: elemWidth,\n elemHeight: elemHeight,\n collisionPosition: collisionPosition,\n collisionWidth: collisionWidth,\n collisionHeight: collisionHeight,\n offset: [atOffset[0] + myOffset[0], atOffset[1] + myOffset[1]],\n my: options.my,\n at: options.at,\n within: within,\n elem: elem\n });\n }\n });\n if (options.using) {\n // Adds feedback as second argument to using callback, if present\n using = function (props) {\n var left = targetOffset.left - position.left,\n right = left + targetWidth - elemWidth,\n top = targetOffset.top - position.top,\n bottom = top + targetHeight - elemHeight,\n feedback = {\n target: {\n element: target,\n left: targetOffset.left,\n top: targetOffset.top,\n width: targetWidth,\n height: targetHeight\n },\n element: {\n element: elem,\n left: position.left,\n top: position.top,\n width: elemWidth,\n height: elemHeight\n },\n horizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n vertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n };\n if (targetWidth < elemWidth && abs(left + right) < targetWidth) {\n feedback.horizontal = \"center\";\n }\n if (targetHeight < elemHeight && abs(top + bottom) < targetHeight) {\n feedback.vertical = \"middle\";\n }\n if (max(abs(left), abs(right)) > max(abs(top), abs(bottom))) {\n feedback.important = \"horizontal\";\n } else {\n feedback.important = \"vertical\";\n }\n options.using.call(this, props, feedback);\n };\n }\n elem.offset($.extend(position, {\n using: using\n }));\n });\n };\n $.ui.position = {\n fit: {\n left: function (position, data) {\n var within = data.within,\n withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n outerWidth = within.width,\n collisionPosLeft = position.left - data.collisionPosition.marginLeft,\n overLeft = withinOffset - collisionPosLeft,\n overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n newOverRight;\n\n // Element is wider than within\n if (data.collisionWidth > outerWidth) {\n // Element is initially over the left side of within\n if (overLeft > 0 && overRight <= 0) {\n newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;\n position.left += overLeft - newOverRight;\n\n // Element is initially over right side of within\n } else if (overRight > 0 && overLeft <= 0) {\n position.left = withinOffset;\n\n // Element is initially over both left and right sides of within\n } else {\n if (overLeft > overRight) {\n position.left = withinOffset + outerWidth - data.collisionWidth;\n } else {\n position.left = withinOffset;\n }\n }\n\n // Too far left -> align with left edge\n } else if (overLeft > 0) {\n position.left += overLeft;\n\n // Too far right -> align with right edge\n } else if (overRight > 0) {\n position.left -= overRight;\n\n // Adjust based on position and margin\n } else {\n position.left = max(position.left - collisionPosLeft, position.left);\n }\n },\n top: function (position, data) {\n var within = data.within,\n withinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n outerHeight = data.within.height,\n collisionPosTop = position.top - data.collisionPosition.marginTop,\n overTop = withinOffset - collisionPosTop,\n overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n newOverBottom;\n\n // Element is taller than within\n if (data.collisionHeight > outerHeight) {\n // Element is initially over the top of within\n if (overTop > 0 && overBottom <= 0) {\n newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;\n position.top += overTop - newOverBottom;\n\n // Element is initially over bottom of within\n } else if (overBottom > 0 && overTop <= 0) {\n position.top = withinOffset;\n\n // Element is initially over both top and bottom of within\n } else {\n if (overTop > overBottom) {\n position.top = withinOffset + outerHeight - data.collisionHeight;\n } else {\n position.top = withinOffset;\n }\n }\n\n // Too far up -> align with top\n } else if (overTop > 0) {\n position.top += overTop;\n\n // Too far down -> align with bottom edge\n } else if (overBottom > 0) {\n position.top -= overBottom;\n\n // Adjust based on position and margin\n } else {\n position.top = max(position.top - collisionPosTop, position.top);\n }\n }\n },\n flip: {\n left: function (position, data) {\n var within = data.within,\n withinOffset = within.offset.left + within.scrollLeft,\n outerWidth = within.width,\n offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n collisionPosLeft = position.left - data.collisionPosition.marginLeft,\n overLeft = collisionPosLeft - offsetLeft,\n overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n myOffset = data.my[0] === \"left\" ? -data.elemWidth : data.my[0] === \"right\" ? data.elemWidth : 0,\n atOffset = data.at[0] === \"left\" ? data.targetWidth : data.at[0] === \"right\" ? -data.targetWidth : 0,\n offset = -2 * data.offset[0],\n newOverRight,\n newOverLeft;\n if (overLeft < 0) {\n newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;\n if (newOverRight < 0 || newOverRight < abs(overLeft)) {\n position.left += myOffset + atOffset + offset;\n }\n } else if (overRight > 0) {\n newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;\n if (newOverLeft > 0 || abs(newOverLeft) < overRight) {\n position.left += myOffset + atOffset + offset;\n }\n }\n },\n top: function (position, data) {\n var within = data.within,\n withinOffset = within.offset.top + within.scrollTop,\n outerHeight = within.height,\n offsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n collisionPosTop = position.top - data.collisionPosition.marginTop,\n overTop = collisionPosTop - offsetTop,\n overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n top = data.my[1] === \"top\",\n myOffset = top ? -data.elemHeight : data.my[1] === \"bottom\" ? data.elemHeight : 0,\n atOffset = data.at[1] === \"top\" ? data.targetHeight : data.at[1] === \"bottom\" ? -data.targetHeight : 0,\n offset = -2 * data.offset[1],\n newOverTop,\n newOverBottom;\n if (overTop < 0) {\n newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;\n if (newOverBottom < 0 || newOverBottom < abs(overTop)) {\n position.top += myOffset + atOffset + offset;\n }\n } else if (overBottom > 0) {\n newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;\n if (newOverTop > 0 || abs(newOverTop) < overBottom) {\n position.top += myOffset + atOffset + offset;\n }\n }\n }\n },\n flipfit: {\n left: function () {\n $.ui.position.flip.left.apply(this, arguments);\n $.ui.position.fit.left.apply(this, arguments);\n },\n top: function () {\n $.ui.position.flip.top.apply(this, arguments);\n $.ui.position.fit.top.apply(this, arguments);\n }\n }\n };\n })();\n var position = $.ui.position;\n\n /*!\n * jQuery UI :data 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: :data Selector\n //>>group: Core\n //>>description: Selects elements which have data stored under the specified key.\n //>>docs: https://api.jqueryui.com/data-selector/\n\n var data = $.extend($.expr.pseudos, {\n data: $.expr.createPseudo(function (dataName) {\n return function (elem) {\n return !!$.data(elem, dataName);\n };\n })\n });\n\n /*!\n * jQuery UI Disable Selection 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: disableSelection\n //>>group: Core\n //>>description: Disable selection of text content within the set of matched elements.\n //>>docs: https://api.jqueryui.com/disableSelection/\n\n // This file is deprecated\n\n var disableSelection = $.fn.extend({\n disableSelection: function () {\n var eventType = \"onselectstart\" in document.createElement(\"div\") ? \"selectstart\" : \"mousedown\";\n return function () {\n return this.on(eventType + \".ui-disableSelection\", function (event) {\n event.preventDefault();\n });\n };\n }(),\n enableSelection: function () {\n return this.off(\".ui-disableSelection\");\n }\n });\n\n // Create a local jQuery because jQuery Color relies on it and the\n // global may not exist with AMD and a custom build (#10199).\n // This module is a noop if used as a regular AMD module.\n // eslint-disable-next-line no-unused-vars\n var jQuery = $;\n\n /*!\n * jQuery Color Animations v3.0.0\n * https://github.com/jquery/jquery-color\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n *\n * Date: Wed May 15 16:49:44 2024 +0200\n */\n\n var stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor \" + \"borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\",\n class2type = {},\n toString = class2type.toString,\n // plusequals test for += 100 -= 100\n rplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n // a set of RE's that can match strings and generate color tuples.\n stringParsers = [{\n re: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n parse: function (execResult) {\n return [execResult[1], execResult[2], execResult[3], execResult[4]];\n }\n }, {\n re: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n parse: function (execResult) {\n return [execResult[1] * 2.55, execResult[2] * 2.55, execResult[3] * 2.55, execResult[4]];\n }\n }, {\n // this regex ignores A-F because it's compared against an already lowercased string\n re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,\n parse: function (execResult) {\n return [parseInt(execResult[1], 16), parseInt(execResult[2], 16), parseInt(execResult[3], 16), execResult[4] ? (parseInt(execResult[4], 16) / 255).toFixed(2) : 1];\n }\n }, {\n // this regex ignores A-F because it's compared against an already lowercased string\n re: /#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,\n parse: function (execResult) {\n return [parseInt(execResult[1] + execResult[1], 16), parseInt(execResult[2] + execResult[2], 16), parseInt(execResult[3] + execResult[3], 16), execResult[4] ? (parseInt(execResult[4] + execResult[4], 16) / 255).toFixed(2) : 1];\n }\n }, {\n re: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n space: \"hsla\",\n parse: function (execResult) {\n return [execResult[1], execResult[2] / 100, execResult[3] / 100, execResult[4]];\n }\n }],\n // jQuery.Color( )\n color = jQuery.Color = function (color, green, blue, alpha) {\n return new jQuery.Color.fn.parse(color, green, blue, alpha);\n },\n spaces = {\n rgba: {\n props: {\n red: {\n idx: 0,\n type: \"byte\"\n },\n green: {\n idx: 1,\n type: \"byte\"\n },\n blue: {\n idx: 2,\n type: \"byte\"\n }\n }\n },\n hsla: {\n props: {\n hue: {\n idx: 0,\n type: \"degrees\"\n },\n saturation: {\n idx: 1,\n type: \"percent\"\n },\n lightness: {\n idx: 2,\n type: \"percent\"\n }\n }\n }\n },\n propTypes = {\n \"byte\": {\n floor: true,\n max: 255\n },\n \"percent\": {\n max: 1\n },\n \"degrees\": {\n mod: 360,\n floor: true\n }\n },\n // colors = jQuery.Color.names\n colors,\n // local aliases of functions called often\n each = jQuery.each;\n\n // define cache name and alpha properties\n // for rgba and hsla spaces\n each(spaces, function (spaceName, space) {\n space.cache = \"_\" + spaceName;\n space.props.alpha = {\n idx: 3,\n type: \"percent\",\n def: 1\n };\n });\n\n // Populate the class2type map\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (_i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n function getType(obj) {\n if (obj == null) {\n return obj + \"\";\n }\n return typeof obj === \"object\" ? class2type[toString.call(obj)] || \"object\" : typeof obj;\n }\n function clamp(value, prop, allowEmpty) {\n var type = propTypes[prop.type] || {};\n if (value == null) {\n return allowEmpty || !prop.def ? null : prop.def;\n }\n\n // ~~ is an short way of doing floor for positive numbers\n value = type.floor ? ~~value : parseFloat(value);\n if (type.mod) {\n // we add mod before modding to make sure that negatives values\n // get converted properly: -10 -> 350\n return (value + type.mod) % type.mod;\n }\n\n // for now all property types without mod have min and max\n return Math.min(type.max, Math.max(0, value));\n }\n function stringParse(string) {\n var inst = color(),\n rgba = inst._rgba = [];\n string = string.toLowerCase();\n each(stringParsers, function (_i, parser) {\n var parsed,\n match = parser.re.exec(string),\n values = match && parser.parse(match),\n spaceName = parser.space || \"rgba\";\n if (values) {\n parsed = inst[spaceName](values);\n\n // if this was an rgba parse the assignment might happen twice\n // oh well....\n inst[spaces[spaceName].cache] = parsed[spaces[spaceName].cache];\n rgba = inst._rgba = parsed._rgba;\n\n // exit each( stringParsers ) here because we matched\n return false;\n }\n });\n\n // Found a stringParser that handled it\n if (rgba.length) {\n // if this came from a parsed string, force \"transparent\" when alpha is 0\n // chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\n if (rgba.join() === \"0,0,0,0\") {\n jQuery.extend(rgba, colors.transparent);\n }\n return inst;\n }\n\n // named colors\n return colors[string];\n }\n color.fn = jQuery.extend(color.prototype, {\n parse: function (red, green, blue, alpha) {\n if (red === undefined) {\n this._rgba = [null, null, null, null];\n return this;\n }\n if (red.jquery || red.nodeType) {\n red = jQuery(red).css(green);\n green = undefined;\n }\n var inst = this,\n type = getType(red),\n rgba = this._rgba = [];\n\n // more than 1 argument specified - assume ( red, green, blue, alpha )\n if (green !== undefined) {\n red = [red, green, blue, alpha];\n type = \"array\";\n }\n if (type === \"string\") {\n return this.parse(stringParse(red) || colors._default);\n }\n if (type === \"array\") {\n each(spaces.rgba.props, function (_key, prop) {\n rgba[prop.idx] = clamp(red[prop.idx], prop);\n });\n return this;\n }\n if (type === \"object\") {\n if (red instanceof color) {\n each(spaces, function (_spaceName, space) {\n if (red[space.cache]) {\n inst[space.cache] = red[space.cache].slice();\n }\n });\n } else {\n each(spaces, function (_spaceName, space) {\n var cache = space.cache;\n each(space.props, function (key, prop) {\n // if the cache doesn't exist, and we know how to convert\n if (!inst[cache] && space.to) {\n // if the value was null, we don't need to copy it\n // if the key was alpha, we don't need to copy it either\n if (key === \"alpha\" || red[key] == null) {\n return;\n }\n inst[cache] = space.to(inst._rgba);\n }\n\n // this is the only case where we allow nulls for ALL properties.\n // call clamp with alwaysAllowEmpty\n inst[cache][prop.idx] = clamp(red[key], prop, true);\n });\n\n // everything defined but alpha?\n if (inst[cache] && jQuery.inArray(null, inst[cache].slice(0, 3)) < 0) {\n // use the default of 1\n if (inst[cache][3] == null) {\n inst[cache][3] = 1;\n }\n if (space.from) {\n inst._rgba = space.from(inst[cache]);\n }\n }\n });\n }\n return this;\n }\n },\n is: function (compare) {\n var is = color(compare),\n same = true,\n inst = this;\n each(spaces, function (_, space) {\n var localCache,\n isCache = is[space.cache];\n if (isCache) {\n localCache = inst[space.cache] || space.to && space.to(inst._rgba) || [];\n each(space.props, function (_, prop) {\n if (isCache[prop.idx] != null) {\n same = isCache[prop.idx] === localCache[prop.idx];\n return same;\n }\n });\n }\n return same;\n });\n return same;\n },\n _space: function () {\n var used = [],\n inst = this;\n each(spaces, function (spaceName, space) {\n if (inst[space.cache]) {\n used.push(spaceName);\n }\n });\n return used.pop();\n },\n transition: function (other, distance) {\n var end = color(other),\n spaceName = end._space(),\n space = spaces[spaceName],\n startColor = this.alpha() === 0 ? color(\"transparent\") : this,\n start = startColor[space.cache] || space.to(startColor._rgba),\n result = start.slice();\n end = end[space.cache];\n each(space.props, function (_key, prop) {\n var index = prop.idx,\n startValue = start[index],\n endValue = end[index],\n type = propTypes[prop.type] || {};\n\n // if null, don't override start value\n if (endValue === null) {\n return;\n }\n\n // if null - use end\n if (startValue === null) {\n result[index] = endValue;\n } else {\n if (type.mod) {\n if (endValue - startValue > type.mod / 2) {\n startValue += type.mod;\n } else if (startValue - endValue > type.mod / 2) {\n startValue -= type.mod;\n }\n }\n result[index] = clamp((endValue - startValue) * distance + startValue, prop);\n }\n });\n return this[spaceName](result);\n },\n blend: function (opaque) {\n // if we are already opaque - return ourself\n if (this._rgba[3] === 1) {\n return this;\n }\n var rgb = this._rgba.slice(),\n a = rgb.pop(),\n blend = color(opaque)._rgba;\n return color(jQuery.map(rgb, function (v, i) {\n return (1 - a) * blend[i] + a * v;\n }));\n },\n toRgbaString: function () {\n var prefix = \"rgba(\",\n rgba = jQuery.map(this._rgba, function (v, i) {\n if (v != null) {\n return v;\n }\n return i > 2 ? 1 : 0;\n });\n if (rgba[3] === 1) {\n rgba.pop();\n prefix = \"rgb(\";\n }\n return prefix + rgba.join(\", \") + \")\";\n },\n toHslaString: function () {\n var prefix = \"hsla(\",\n hsla = jQuery.map(this.hsla(), function (v, i) {\n if (v == null) {\n v = i > 2 ? 1 : 0;\n }\n\n // catch 1 and 2\n if (i && i < 3) {\n v = Math.round(v * 100) + \"%\";\n }\n return v;\n });\n if (hsla[3] === 1) {\n hsla.pop();\n prefix = \"hsl(\";\n }\n return prefix + hsla.join(\", \") + \")\";\n },\n toHexString: function (includeAlpha) {\n var rgba = this._rgba.slice(),\n alpha = rgba.pop();\n if (includeAlpha) {\n rgba.push(~~(alpha * 255));\n }\n return \"#\" + jQuery.map(rgba, function (v) {\n // default to 0 when nulls exist\n return (\"0\" + (v || 0).toString(16)).substr(-2);\n }).join(\"\");\n },\n toString: function () {\n return this.toRgbaString();\n }\n });\n color.fn.parse.prototype = color.fn;\n\n // hsla conversions adapted from:\n // https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n\n function hue2rgb(p, q, h) {\n h = (h + 1) % 1;\n if (h * 6 < 1) {\n return p + (q - p) * h * 6;\n }\n if (h * 2 < 1) {\n return q;\n }\n if (h * 3 < 2) {\n return p + (q - p) * (2 / 3 - h) * 6;\n }\n return p;\n }\n spaces.hsla.to = function (rgba) {\n if (rgba[0] == null || rgba[1] == null || rgba[2] == null) {\n return [null, null, null, rgba[3]];\n }\n var r = rgba[0] / 255,\n g = rgba[1] / 255,\n b = rgba[2] / 255,\n a = rgba[3],\n max = Math.max(r, g, b),\n min = Math.min(r, g, b),\n diff = max - min,\n add = max + min,\n l = add * 0.5,\n h,\n s;\n if (min === max) {\n h = 0;\n } else if (r === max) {\n h = 60 * (g - b) / diff + 360;\n } else if (g === max) {\n h = 60 * (b - r) / diff + 120;\n } else {\n h = 60 * (r - g) / diff + 240;\n }\n\n // chroma (diff) == 0 means greyscale which, by definition, saturation = 0%\n // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)\n if (diff === 0) {\n s = 0;\n } else if (l <= 0.5) {\n s = diff / add;\n } else {\n s = diff / (2 - add);\n }\n return [Math.round(h) % 360, s, l, a == null ? 1 : a];\n };\n spaces.hsla.from = function (hsla) {\n if (hsla[0] == null || hsla[1] == null || hsla[2] == null) {\n return [null, null, null, hsla[3]];\n }\n var h = hsla[0] / 360,\n s = hsla[1],\n l = hsla[2],\n a = hsla[3],\n q = l <= 0.5 ? l * (1 + s) : l + s - l * s,\n p = 2 * l - q;\n return [Math.round(hue2rgb(p, q, h + 1 / 3) * 255), Math.round(hue2rgb(p, q, h) * 255), Math.round(hue2rgb(p, q, h - 1 / 3) * 255), a];\n };\n each(spaces, function (spaceName, space) {\n var props = space.props,\n cache = space.cache,\n to = space.to,\n from = space.from;\n\n // makes rgba() and hsla()\n color.fn[spaceName] = function (value) {\n // generate a cache for this space if it doesn't exist\n if (to && !this[cache]) {\n this[cache] = to(this._rgba);\n }\n if (value === undefined) {\n return this[cache].slice();\n }\n var ret,\n type = getType(value),\n arr = type === \"array\" || type === \"object\" ? value : arguments,\n local = this[cache].slice();\n each(props, function (key, prop) {\n var val = arr[type === \"object\" ? key : prop.idx];\n if (val == null) {\n val = local[prop.idx];\n }\n local[prop.idx] = clamp(val, prop);\n });\n if (from) {\n ret = color(from(local));\n ret[cache] = local;\n return ret;\n } else {\n return color(local);\n }\n };\n\n // makes red() green() blue() alpha() hue() saturation() lightness()\n each(props, function (key, prop) {\n // alpha is included in more than one space\n if (color.fn[key]) {\n return;\n }\n color.fn[key] = function (value) {\n var local,\n cur,\n match,\n fn,\n vtype = getType(value);\n if (key === \"alpha\") {\n fn = this._hsla ? \"hsla\" : \"rgba\";\n } else {\n fn = spaceName;\n }\n local = this[fn]();\n cur = local[prop.idx];\n if (vtype === \"undefined\") {\n return cur;\n }\n if (vtype === \"function\") {\n value = value.call(this, cur);\n vtype = getType(value);\n }\n if (value == null && prop.empty) {\n return this;\n }\n if (vtype === \"string\") {\n match = rplusequals.exec(value);\n if (match) {\n value = cur + parseFloat(match[2]) * (match[1] === \"+\" ? 1 : -1);\n }\n }\n local[prop.idx] = value;\n return this[fn](local);\n };\n });\n });\n\n // add cssHook and .fx.step function for each named hook.\n // accept a space separated string of properties\n color.hook = function (hook) {\n var hooks = hook.split(\" \");\n each(hooks, function (_i, hook) {\n jQuery.cssHooks[hook] = {\n set: function (elem, value) {\n var parsed;\n if (value !== \"transparent\" && (getType(value) !== \"string\" || (parsed = stringParse(value)))) {\n value = color(parsed || value);\n value = value.toRgbaString();\n }\n elem.style[hook] = value;\n }\n };\n jQuery.fx.step[hook] = function (fx) {\n if (!fx.colorInit) {\n fx.start = color(fx.elem, hook);\n fx.end = color(fx.end);\n fx.colorInit = true;\n }\n jQuery.cssHooks[hook].set(fx.elem, fx.start.transition(fx.end, fx.pos));\n };\n });\n };\n color.hook(stepHooks);\n jQuery.cssHooks.borderColor = {\n expand: function (value) {\n var expanded = {};\n each([\"Top\", \"Right\", \"Bottom\", \"Left\"], function (_i, part) {\n expanded[\"border\" + part + \"Color\"] = value;\n });\n return expanded;\n }\n };\n\n // Basic color names only.\n // Usage of any of the other color names requires adding yourself or including\n // jquery.color.svg-names.js.\n colors = jQuery.Color.names = {\n // 4.1. Basic color keywords\n aqua: \"#00ffff\",\n black: \"#000000\",\n blue: \"#0000ff\",\n fuchsia: \"#ff00ff\",\n gray: \"#808080\",\n green: \"#008000\",\n lime: \"#00ff00\",\n maroon: \"#800000\",\n navy: \"#000080\",\n olive: \"#808000\",\n purple: \"#800080\",\n red: \"#ff0000\",\n silver: \"#c0c0c0\",\n teal: \"#008080\",\n white: \"#ffffff\",\n yellow: \"#ffff00\",\n // 4.2.3. \"transparent\" color keyword\n transparent: [null, null, null, 0],\n _default: \"#ffffff\"\n };\n\n /*!\n * jQuery UI Effects 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Effects Core\n //>>group: Effects\n /* eslint-disable max-len */\n //>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.\n /* eslint-enable max-len */\n //>>docs: https://api.jqueryui.com/category/effects-core/\n //>>demos: https://jqueryui.com/effect/\n\n var dataSpace = \"ui-effects-\",\n dataSpaceStyle = \"ui-effects-style\",\n dataSpaceAnimated = \"ui-effects-animated\";\n $.effects = {\n effect: {}\n };\n\n /******************************************************************************/\n /****************************** CLASS ANIMATIONS ******************************/\n /******************************************************************************/\n (function () {\n var classAnimationActions = [\"add\", \"remove\", \"toggle\"],\n shorthandStyles = {\n border: 1,\n borderBottom: 1,\n borderColor: 1,\n borderLeft: 1,\n borderRight: 1,\n borderTop: 1,\n borderWidth: 1,\n margin: 1,\n padding: 1\n };\n $.each([\"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\"], function (_, prop) {\n $.fx.step[prop] = function (fx) {\n if (fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr) {\n jQuery.style(fx.elem, prop, fx.end);\n fx.setAttr = true;\n }\n };\n });\n function camelCase(string) {\n return string.replace(/-([\\da-z])/gi, function (all, letter) {\n return letter.toUpperCase();\n });\n }\n function getElementStyles(elem) {\n var key,\n len,\n style = elem.ownerDocument.defaultView.getComputedStyle(elem),\n styles = {};\n len = style.length;\n while (len--) {\n key = style[len];\n if (typeof style[key] === \"string\") {\n styles[camelCase(key)] = style[key];\n }\n }\n return styles;\n }\n function styleDifference(oldStyle, newStyle) {\n var diff = {},\n name,\n value;\n for (name in newStyle) {\n value = newStyle[name];\n if (oldStyle[name] !== value) {\n if (!shorthandStyles[name]) {\n if ($.fx.step[name] || !isNaN(parseFloat(value))) {\n diff[name] = value;\n }\n }\n }\n }\n return diff;\n }\n $.effects.animateClass = function (value, duration, easing, callback) {\n var o = $.speed(duration, easing, callback);\n return this.queue(function () {\n var animated = $(this),\n baseClass = animated.attr(\"class\") || \"\",\n applyClassChange,\n allAnimations = o.children ? animated.find(\"*\").addBack() : animated;\n\n // Map the animated objects to store the original styles.\n allAnimations = allAnimations.map(function () {\n var el = $(this);\n return {\n el: el,\n start: getElementStyles(this)\n };\n });\n\n // Apply class change\n applyClassChange = function () {\n $.each(classAnimationActions, function (i, action) {\n if (value[action]) {\n animated[action + \"Class\"](value[action]);\n }\n });\n };\n applyClassChange();\n\n // Map all animated objects again - calculate new styles and diff\n allAnimations = allAnimations.map(function () {\n this.end = getElementStyles(this.el[0]);\n this.diff = styleDifference(this.start, this.end);\n return this;\n });\n\n // Apply original class\n animated.attr(\"class\", baseClass);\n\n // Map all animated objects again - this time collecting a promise\n allAnimations = allAnimations.map(function () {\n var styleInfo = this,\n dfd = $.Deferred(),\n opts = $.extend({}, o, {\n queue: false,\n complete: function () {\n dfd.resolve(styleInfo);\n }\n });\n this.el.animate(this.diff, opts);\n return dfd.promise();\n });\n\n // Once all animations have completed:\n $.when.apply($, allAnimations.get()).done(function () {\n // Set the final class\n applyClassChange();\n\n // For each animated element,\n // clear all css properties that were animated\n $.each(arguments, function () {\n var el = this.el;\n $.each(this.diff, function (key) {\n el.css(key, \"\");\n });\n });\n\n // This is guarnteed to be there if you use jQuery.speed()\n // it also handles dequeuing the next anim...\n o.complete.call(animated[0]);\n });\n });\n };\n $.fn.extend({\n addClass: function (orig) {\n return function (classNames, speed, easing, callback) {\n return speed ? $.effects.animateClass.call(this, {\n add: classNames\n }, speed, easing, callback) : orig.apply(this, arguments);\n };\n }($.fn.addClass),\n removeClass: function (orig) {\n return function (classNames, speed, easing, callback) {\n return arguments.length > 1 ? $.effects.animateClass.call(this, {\n remove: classNames\n }, speed, easing, callback) : orig.apply(this, arguments);\n };\n }($.fn.removeClass),\n toggleClass: function (orig) {\n return function (classNames, force, speed, easing, callback) {\n if (typeof force === \"boolean\" || force === undefined) {\n if (!speed) {\n // Without speed parameter\n return orig.apply(this, arguments);\n } else {\n return $.effects.animateClass.call(this, force ? {\n add: classNames\n } : {\n remove: classNames\n }, speed, easing, callback);\n }\n } else {\n // Without force parameter\n return $.effects.animateClass.call(this, {\n toggle: classNames\n }, force, speed, easing);\n }\n };\n }($.fn.toggleClass),\n switchClass: function (remove, add, speed, easing, callback) {\n return $.effects.animateClass.call(this, {\n add: add,\n remove: remove\n }, speed, easing, callback);\n }\n });\n })();\n\n /******************************************************************************/\n /*********************************** EFFECTS **********************************/\n /******************************************************************************/\n\n (function () {\n if ($.expr && $.expr.pseudos && $.expr.pseudos.animated) {\n $.expr.pseudos.animated = function (orig) {\n return function (elem) {\n return !!$(elem).data(dataSpaceAnimated) || orig(elem);\n };\n }($.expr.pseudos.animated);\n }\n if ($.uiBackCompat === true) {\n $.extend($.effects, {\n // Saves a set of properties in a data storage\n save: function (element, set) {\n var i = 0,\n length = set.length;\n for (; i < length; i++) {\n if (set[i] !== null) {\n element.data(dataSpace + set[i], element[0].style[set[i]]);\n }\n }\n },\n // Restores a set of previously saved properties from a data storage\n restore: function (element, set) {\n var val,\n i = 0,\n length = set.length;\n for (; i < length; i++) {\n if (set[i] !== null) {\n val = element.data(dataSpace + set[i]);\n element.css(set[i], val);\n }\n }\n },\n setMode: function (el, mode) {\n if (mode === \"toggle\") {\n mode = el.is(\":hidden\") ? \"show\" : \"hide\";\n }\n return mode;\n },\n // Wraps the element around a wrapper that copies position properties\n createWrapper: function (element) {\n // If the element is already wrapped, return it\n if (element.parent().is(\".ui-effects-wrapper\")) {\n return element.parent();\n }\n\n // Wrap the element\n var props = {\n width: element.outerWidth(true),\n height: element.outerHeight(true),\n \"float\": element.css(\"float\")\n },\n wrapper = $(\"<div></div>\").addClass(\"ui-effects-wrapper\").css({\n fontSize: \"100%\",\n background: \"transparent\",\n border: \"none\",\n margin: 0,\n padding: 0\n }),\n // Store the size in case width/height are defined in % - Fixes #5245\n size = {\n width: element.width(),\n height: element.height()\n },\n active = document.activeElement;\n\n // Support: Firefox\n // Firefox incorrectly exposes anonymous content\n // https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n try {\n // eslint-disable-next-line no-unused-expressions\n active.id;\n } catch (e) {\n active = document.body;\n }\n element.wrap(wrapper);\n\n // Fixes #7595 - Elements lose focus when wrapped.\n if (element[0] === active || $.contains(element[0], active)) {\n $(active).trigger(\"focus\");\n }\n\n // Hotfix for jQuery 1.4 since some change in wrap() seems to actually\n // lose the reference to the wrapped element\n wrapper = element.parent();\n\n // Transfer positioning properties to the wrapper\n if (element.css(\"position\") === \"static\") {\n wrapper.css({\n position: \"relative\"\n });\n element.css({\n position: \"relative\"\n });\n } else {\n $.extend(props, {\n position: element.css(\"position\"),\n zIndex: element.css(\"z-index\")\n });\n $.each([\"top\", \"left\", \"bottom\", \"right\"], function (i, pos) {\n props[pos] = element.css(pos);\n if (isNaN(parseInt(props[pos], 10))) {\n props[pos] = \"auto\";\n }\n });\n element.css({\n position: \"relative\",\n top: 0,\n left: 0,\n right: \"auto\",\n bottom: \"auto\"\n });\n }\n element.css(size);\n return wrapper.css(props).show();\n },\n removeWrapper: function (element) {\n var active = document.activeElement;\n if (element.parent().is(\".ui-effects-wrapper\")) {\n element.parent().replaceWith(element);\n\n // Fixes #7595 - Elements lose focus when wrapped.\n if (element[0] === active || $.contains(element[0], active)) {\n $(active).trigger(\"focus\");\n }\n }\n return element;\n }\n });\n }\n $.extend($.effects, {\n version: \"1.14.1\",\n define: function (name, mode, effect) {\n if (!effect) {\n effect = mode;\n mode = \"effect\";\n }\n $.effects.effect[name] = effect;\n $.effects.effect[name].mode = mode;\n return effect;\n },\n scaledDimensions: function (element, percent, direction) {\n if (percent === 0) {\n return {\n height: 0,\n width: 0,\n outerHeight: 0,\n outerWidth: 0\n };\n }\n var x = direction !== \"horizontal\" ? (percent || 100) / 100 : 1,\n y = direction !== \"vertical\" ? (percent || 100) / 100 : 1;\n return {\n height: element.height() * y,\n width: element.width() * x,\n outerHeight: element.outerHeight() * y,\n outerWidth: element.outerWidth() * x\n };\n },\n clipToBox: function (animation) {\n return {\n width: animation.clip.right - animation.clip.left,\n height: animation.clip.bottom - animation.clip.top,\n left: animation.clip.left,\n top: animation.clip.top\n };\n },\n // Injects recently queued functions to be first in line (after \"inprogress\")\n unshift: function (element, queueLength, count) {\n var queue = element.queue();\n if (queueLength > 1) {\n queue.splice.apply(queue, [1, 0].concat(queue.splice(queueLength, count)));\n }\n element.dequeue();\n },\n saveStyle: function (element) {\n element.data(dataSpaceStyle, element[0].style.cssText);\n },\n restoreStyle: function (element) {\n element[0].style.cssText = element.data(dataSpaceStyle) || \"\";\n element.removeData(dataSpaceStyle);\n },\n mode: function (element, mode) {\n var hidden = element.is(\":hidden\");\n if (mode === \"toggle\") {\n mode = hidden ? \"show\" : \"hide\";\n }\n if (hidden ? mode === \"hide\" : mode === \"show\") {\n mode = \"none\";\n }\n return mode;\n },\n // Translates a [top,left] array into a baseline value\n getBaseline: function (origin, original) {\n var y, x;\n switch (origin[0]) {\n case \"top\":\n y = 0;\n break;\n case \"middle\":\n y = 0.5;\n break;\n case \"bottom\":\n y = 1;\n break;\n default:\n y = origin[0] / original.height;\n }\n switch (origin[1]) {\n case \"left\":\n x = 0;\n break;\n case \"center\":\n x = 0.5;\n break;\n case \"right\":\n x = 1;\n break;\n default:\n x = origin[1] / original.width;\n }\n return {\n x: x,\n y: y\n };\n },\n // Creates a placeholder element so that the original element can be made absolute\n createPlaceholder: function (element) {\n var placeholder,\n cssPosition = element.css(\"position\"),\n position = element.position();\n\n // Lock in margins first to account for form elements, which\n // will change margin if you explicitly set height\n // see: https://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380\n // Support: Safari\n element.css({\n marginTop: element.css(\"marginTop\"),\n marginBottom: element.css(\"marginBottom\"),\n marginLeft: element.css(\"marginLeft\"),\n marginRight: element.css(\"marginRight\")\n }).outerWidth(element.outerWidth()).outerHeight(element.outerHeight());\n if (/^(static|relative)/.test(cssPosition)) {\n cssPosition = \"absolute\";\n placeholder = $(\"<\" + element[0].nodeName + \">\").insertAfter(element).css({\n // Convert inline to inline block to account for inline elements\n // that turn to inline block based on content (like img)\n display: /^(inline|ruby)/.test(element.css(\"display\")) ? \"inline-block\" : \"block\",\n visibility: \"hidden\",\n // Margins need to be set to account for margin collapse\n marginTop: element.css(\"marginTop\"),\n marginBottom: element.css(\"marginBottom\"),\n marginLeft: element.css(\"marginLeft\"),\n marginRight: element.css(\"marginRight\"),\n \"float\": element.css(\"float\")\n }).outerWidth(element.outerWidth()).outerHeight(element.outerHeight()).addClass(\"ui-effects-placeholder\");\n element.data(dataSpace + \"placeholder\", placeholder);\n }\n element.css({\n position: cssPosition,\n left: position.left,\n top: position.top\n });\n return placeholder;\n },\n removePlaceholder: function (element) {\n var dataKey = dataSpace + \"placeholder\",\n placeholder = element.data(dataKey);\n if (placeholder) {\n placeholder.remove();\n element.removeData(dataKey);\n }\n },\n // Removes a placeholder if it exists and restores\n // properties that were modified during placeholder creation\n cleanUp: function (element) {\n $.effects.restoreStyle(element);\n $.effects.removePlaceholder(element);\n },\n setTransition: function (element, list, factor, value) {\n value = value || {};\n $.each(list, function (i, x) {\n var unit = element.cssUnit(x);\n if (unit[0] > 0) {\n value[x] = unit[0] * factor + unit[1];\n }\n });\n return value;\n }\n });\n\n // Return an effect options object for the given parameters:\n function _normalizeArguments(effect, options, speed, callback) {\n // Allow passing all options as the first parameter\n if ($.isPlainObject(effect)) {\n options = effect;\n effect = effect.effect;\n }\n\n // Convert to an object\n effect = {\n effect: effect\n };\n\n // Catch (effect, null, ...)\n if (options == null) {\n options = {};\n }\n\n // Catch (effect, callback)\n if (typeof options === \"function\") {\n callback = options;\n speed = null;\n options = {};\n }\n\n // Catch (effect, speed, ?)\n if (typeof options === \"number\" || $.fx.speeds[options]) {\n callback = speed;\n speed = options;\n options = {};\n }\n\n // Catch (effect, options, callback)\n if (typeof speed === \"function\") {\n callback = speed;\n speed = null;\n }\n\n // Add options to effect\n if (options) {\n $.extend(effect, options);\n }\n speed = speed || options.duration;\n effect.duration = $.fx.off ? 0 : typeof speed === \"number\" ? speed : speed in $.fx.speeds ? $.fx.speeds[speed] : $.fx.speeds._default;\n effect.complete = callback || options.complete;\n return effect;\n }\n function standardAnimationOption(option) {\n // Valid standard speeds (nothing, number, named speed)\n if (!option || typeof option === \"number\" || $.fx.speeds[option]) {\n return true;\n }\n\n // Invalid strings - treat as \"normal\" speed\n if (typeof option === \"string\" && !$.effects.effect[option]) {\n return true;\n }\n\n // Complete callback\n if (typeof option === \"function\") {\n return true;\n }\n\n // Options hash (but not naming an effect)\n if (typeof option === \"object\" && !option.effect) {\n return true;\n }\n\n // Didn't match any standard API\n return false;\n }\n $.fn.extend({\n effect: function /* effect, options, speed, callback */\n () {\n var args = _normalizeArguments.apply(this, arguments),\n effectMethod = $.effects.effect[args.effect],\n defaultMode = effectMethod.mode,\n queue = args.queue,\n queueName = queue || \"fx\",\n complete = args.complete,\n mode = args.mode,\n modes = [],\n prefilter = function (next) {\n var el = $(this),\n normalizedMode = $.effects.mode(el, mode) || defaultMode;\n\n // Sentinel for duck-punching the :animated pseudo-selector\n el.data(dataSpaceAnimated, true);\n\n // Save effect mode for later use,\n // we can't just call $.effects.mode again later,\n // as the .show() below destroys the initial state\n modes.push(normalizedMode);\n\n // See $.uiBackCompat inside of run() for removal of defaultMode in 1.14\n if (defaultMode && (normalizedMode === \"show\" || normalizedMode === defaultMode && normalizedMode === \"hide\")) {\n el.show();\n }\n if (!defaultMode || normalizedMode !== \"none\") {\n $.effects.saveStyle(el);\n }\n if (typeof next === \"function\") {\n next();\n }\n };\n if ($.fx.off || !effectMethod) {\n // Delegate to the original method (e.g., .show()) if possible\n if (mode) {\n return this[mode](args.duration, complete);\n } else {\n return this.each(function () {\n if (complete) {\n complete.call(this);\n }\n });\n }\n }\n function run(next) {\n var elem = $(this);\n function cleanup() {\n elem.removeData(dataSpaceAnimated);\n $.effects.cleanUp(elem);\n if (args.mode === \"hide\") {\n elem.hide();\n }\n done();\n }\n function done() {\n if (typeof complete === \"function\") {\n complete.call(elem[0]);\n }\n if (typeof next === \"function\") {\n next();\n }\n }\n\n // Override mode option on a per element basis,\n // as toggle can be either show or hide depending on element state\n args.mode = modes.shift();\n if ($.uiBackCompat === true && !defaultMode) {\n if (elem.is(\":hidden\") ? mode === \"hide\" : mode === \"show\") {\n // Call the core method to track \"olddisplay\" properly\n elem[mode]();\n done();\n } else {\n effectMethod.call(elem[0], args, done);\n }\n } else {\n if (args.mode === \"none\") {\n // Call the core method to track \"olddisplay\" properly\n elem[mode]();\n done();\n } else {\n effectMethod.call(elem[0], args, cleanup);\n }\n }\n }\n\n // Run prefilter on all elements first to ensure that\n // any showing or hiding happens before placeholder creation,\n // which ensures that any layout changes are correctly captured.\n return queue === false ? this.each(prefilter).each(run) : this.queue(queueName, prefilter).queue(queueName, run);\n },\n show: function (orig) {\n return function (option) {\n if (standardAnimationOption(option)) {\n return orig.apply(this, arguments);\n } else {\n var args = _normalizeArguments.apply(this, arguments);\n args.mode = \"show\";\n return this.effect.call(this, args);\n }\n };\n }($.fn.show),\n hide: function (orig) {\n return function (option) {\n if (standardAnimationOption(option)) {\n return orig.apply(this, arguments);\n } else {\n var args = _normalizeArguments.apply(this, arguments);\n args.mode = \"hide\";\n return this.effect.call(this, args);\n }\n };\n }($.fn.hide),\n toggle: function (orig) {\n return function (option) {\n if (standardAnimationOption(option) || typeof option === \"boolean\") {\n return orig.apply(this, arguments);\n } else {\n var args = _normalizeArguments.apply(this, arguments);\n args.mode = \"toggle\";\n return this.effect.call(this, args);\n }\n };\n }($.fn.toggle),\n cssUnit: function (key) {\n var style = this.css(key),\n val = [];\n $.each([\"em\", \"px\", \"%\", \"pt\"], function (i, unit) {\n if (style.indexOf(unit) > 0) {\n val = [parseFloat(style), unit];\n }\n });\n return val;\n },\n cssClip: function (clipObj) {\n if (clipObj) {\n return this.css(\"clip\", \"rect(\" + clipObj.top + \"px \" + clipObj.right + \"px \" + clipObj.bottom + \"px \" + clipObj.left + \"px)\");\n }\n return parseClip(this.css(\"clip\"), this);\n },\n transfer: function (options, done) {\n var element = $(this),\n target = $(options.to),\n targetFixed = target.css(\"position\") === \"fixed\",\n body = $(\"body\"),\n fixTop = targetFixed ? body.scrollTop() : 0,\n fixLeft = targetFixed ? body.scrollLeft() : 0,\n endPosition = target.offset(),\n animation = {\n top: endPosition.top - fixTop,\n left: endPosition.left - fixLeft,\n height: target.innerHeight(),\n width: target.innerWidth()\n },\n startPosition = element.offset(),\n transfer = $(\"<div class='ui-effects-transfer'></div>\");\n transfer.appendTo(\"body\").addClass(options.className).css({\n top: startPosition.top - fixTop,\n left: startPosition.left - fixLeft,\n height: element.innerHeight(),\n width: element.innerWidth(),\n position: targetFixed ? \"fixed\" : \"absolute\"\n }).animate(animation, options.duration, options.easing, function () {\n transfer.remove();\n if (typeof done === \"function\") {\n done();\n }\n });\n }\n });\n function parseClip(str, element) {\n var outerWidth = element.outerWidth(),\n outerHeight = element.outerHeight(),\n clipRegex = /^rect\\((-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto)\\)$/,\n values = clipRegex.exec(str) || [\"\", 0, outerWidth, outerHeight, 0];\n return {\n top: parseFloat(values[1]) || 0,\n right: values[2] === \"auto\" ? outerWidth : parseFloat(values[2]),\n bottom: values[3] === \"auto\" ? outerHeight : parseFloat(values[3]),\n left: parseFloat(values[4]) || 0\n };\n }\n $.fx.step.clip = function (fx) {\n if (!fx.clipInit) {\n fx.start = $(fx.elem).cssClip();\n if (typeof fx.end === \"string\") {\n fx.end = parseClip(fx.end, fx.elem);\n }\n fx.clipInit = true;\n }\n $(fx.elem).cssClip({\n top: fx.pos * (fx.end.top - fx.start.top) + fx.start.top,\n right: fx.pos * (fx.end.right - fx.start.right) + fx.start.right,\n bottom: fx.pos * (fx.end.bottom - fx.start.bottom) + fx.start.bottom,\n left: fx.pos * (fx.end.left - fx.start.left) + fx.start.left\n });\n };\n })();\n\n /******************************************************************************/\n /*********************************** EASING ***********************************/\n /******************************************************************************/\n\n (function () {\n // Based on easing equations from Robert Penner (http://robertpenner.com/easing)\n\n var baseEasings = {};\n $.each([\"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\"], function (i, name) {\n baseEasings[name] = function (p) {\n return Math.pow(p, i + 2);\n };\n });\n $.extend(baseEasings, {\n Sine: function (p) {\n return 1 - Math.cos(p * Math.PI / 2);\n },\n Circ: function (p) {\n return 1 - Math.sqrt(1 - p * p);\n },\n Elastic: function (p) {\n return p === 0 || p === 1 ? p : -Math.pow(2, 8 * (p - 1)) * Math.sin(((p - 1) * 80 - 7.5) * Math.PI / 15);\n },\n Back: function (p) {\n return p * p * (3 * p - 2);\n },\n Bounce: function (p) {\n var pow2,\n bounce = 4;\n while (p < ((pow2 = Math.pow(2, --bounce)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - bounce) - 7.5625 * Math.pow((pow2 * 3 - 2) / 22 - p, 2);\n }\n });\n $.each(baseEasings, function (name, easeIn) {\n $.easing[\"easeIn\" + name] = easeIn;\n $.easing[\"easeOut\" + name] = function (p) {\n return 1 - easeIn(1 - p);\n };\n $.easing[\"easeInOut\" + name] = function (p) {\n return p < 0.5 ? easeIn(p * 2) / 2 : 1 - easeIn(p * -2 + 2) / 2;\n };\n });\n })();\n var effect = $.effects;\n\n /*!\n * jQuery UI Effects Blind 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Blind Effect\n //>>group: Effects\n //>>description: Blinds the element.\n //>>docs: https://api.jqueryui.com/blind-effect/\n //>>demos: https://jqueryui.com/effect/\n\n var effectsEffectBlind = $.effects.define(\"blind\", \"hide\", function (options, done) {\n var map = {\n up: [\"bottom\", \"top\"],\n vertical: [\"bottom\", \"top\"],\n down: [\"top\", \"bottom\"],\n left: [\"right\", \"left\"],\n horizontal: [\"right\", \"left\"],\n right: [\"left\", \"right\"]\n },\n element = $(this),\n direction = options.direction || \"up\",\n start = element.cssClip(),\n animate = {\n clip: $.extend({}, start)\n },\n placeholder = $.effects.createPlaceholder(element);\n animate.clip[map[direction][0]] = animate.clip[map[direction][1]];\n if (options.mode === \"show\") {\n element.cssClip(animate.clip);\n if (placeholder) {\n placeholder.css($.effects.clipToBox(animate));\n }\n animate.clip = start;\n }\n if (placeholder) {\n placeholder.animate($.effects.clipToBox(animate), options.duration, options.easing);\n }\n element.animate(animate, {\n queue: false,\n duration: options.duration,\n easing: options.easing,\n complete: done\n });\n });\n\n /*!\n * jQuery UI Effects Bounce 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Bounce Effect\n //>>group: Effects\n //>>description: Bounces an element horizontally or vertically n times.\n //>>docs: https://api.jqueryui.com/bounce-effect/\n //>>demos: https://jqueryui.com/effect/\n\n var effectsEffectBounce = $.effects.define(\"bounce\", function (options, done) {\n var upAnim,\n downAnim,\n refValue,\n element = $(this),\n // Defaults:\n mode = options.mode,\n hide = mode === \"hide\",\n show = mode === \"show\",\n direction = options.direction || \"up\",\n distance = options.distance,\n times = options.times || 5,\n // Number of internal animations\n anims = times * 2 + (show || hide ? 1 : 0),\n speed = options.duration / anims,\n easing = options.easing,\n // Utility:\n ref = direction === \"up\" || direction === \"down\" ? \"top\" : \"left\",\n motion = direction === \"up\" || direction === \"left\",\n i = 0,\n queuelen = element.queue().length;\n $.effects.createPlaceholder(element);\n refValue = element.css(ref);\n\n // Default distance for the BIGGEST bounce is the outer Distance / 3\n if (!distance) {\n distance = element[ref === \"top\" ? \"outerHeight\" : \"outerWidth\"]() / 3;\n }\n if (show) {\n downAnim = {\n opacity: 1\n };\n downAnim[ref] = refValue;\n\n // If we are showing, force opacity 0 and set the initial position\n // then do the \"first\" animation\n element.css(\"opacity\", 0).css(ref, motion ? -distance * 2 : distance * 2).animate(downAnim, speed, easing);\n }\n\n // Start at the smallest distance if we are hiding\n if (hide) {\n distance = distance / Math.pow(2, times - 1);\n }\n downAnim = {};\n downAnim[ref] = refValue;\n\n // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here\n for (; i < times; i++) {\n upAnim = {};\n upAnim[ref] = (motion ? \"-=\" : \"+=\") + distance;\n element.animate(upAnim, speed, easing).animate(downAnim, speed, easing);\n distance = hide ? distance * 2 : distance / 2;\n }\n\n // Last Bounce when Hiding\n if (hide) {\n upAnim = {\n opacity: 0\n };\n upAnim[ref] = (motion ? \"-=\" : \"+=\") + distance;\n element.animate(upAnim, speed, easing);\n }\n element.queue(done);\n $.effects.unshift(element, queuelen, anims + 1);\n });\n\n /*!\n * jQuery UI Effects Clip 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Clip Effect\n //>>group: Effects\n //>>description: Clips the element on and off like an old TV.\n //>>docs: https://api.jqueryui.com/clip-effect/\n //>>demos: https://jqueryui.com/effect/\n\n var effectsEffectClip = $.effects.define(\"clip\", \"hide\", function (options, done) {\n var start,\n animate = {},\n element = $(this),\n direction = options.direction || \"vertical\",\n both = direction === \"both\",\n horizontal = both || direction === \"horizontal\",\n vertical = both || direction === \"vertical\";\n start = element.cssClip();\n animate.clip = {\n top: vertical ? (start.bottom - start.top) / 2 : start.top,\n right: horizontal ? (start.right - start.left) / 2 : start.right,\n bottom: vertical ? (start.bottom - start.top) / 2 : start.bottom,\n left: horizontal ? (start.right - start.left) / 2 : start.left\n };\n $.effects.createPlaceholder(element);\n if (options.mode === \"show\") {\n element.cssClip(animate.clip);\n animate.clip = start;\n }\n element.animate(animate, {\n queue: false,\n duration: options.duration,\n easing: options.easing,\n complete: done\n });\n });\n\n /*!\n * jQuery UI Effects Drop 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Drop Effect\n //>>group: Effects\n //>>description: Moves an element in one direction and hides it at the same time.\n //>>docs: https://api.jqueryui.com/drop-effect/\n //>>demos: https://jqueryui.com/effect/\n\n var effectsEffectDrop = $.effects.define(\"drop\", \"hide\", function (options, done) {\n var distance,\n element = $(this),\n mode = options.mode,\n show = mode === \"show\",\n direction = options.direction || \"left\",\n ref = direction === \"up\" || direction === \"down\" ? \"top\" : \"left\",\n motion = direction === \"up\" || direction === \"left\" ? \"-=\" : \"+=\",\n oppositeMotion = motion === \"+=\" ? \"-=\" : \"+=\",\n animation = {\n opacity: 0\n };\n $.effects.createPlaceholder(element);\n distance = options.distance || element[ref === \"top\" ? \"outerHeight\" : \"outerWidth\"](true) / 2;\n animation[ref] = motion + distance;\n if (show) {\n element.css(animation);\n animation[ref] = oppositeMotion + distance;\n animation.opacity = 1;\n }\n\n // Animate\n element.animate(animation, {\n queue: false,\n duration: options.duration,\n easing: options.easing,\n complete: done\n });\n });\n\n /*!\n * jQuery UI Effects Explode 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Explode Effect\n //>>group: Effects\n /* eslint-disable max-len */\n //>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.\n /* eslint-enable max-len */\n //>>docs: https://api.jqueryui.com/explode-effect/\n //>>demos: https://jqueryui.com/effect/\n\n var effectsEffectExplode = $.effects.define(\"explode\", \"hide\", function (options, done) {\n var i,\n j,\n left,\n top,\n mx,\n my,\n rows = options.pieces ? Math.round(Math.sqrt(options.pieces)) : 3,\n cells = rows,\n element = $(this),\n mode = options.mode,\n show = mode === \"show\",\n // Show and then visibility:hidden the element before calculating offset\n offset = element.show().css(\"visibility\", \"hidden\").offset(),\n // Width and height of a piece\n width = Math.ceil(element.outerWidth() / cells),\n height = Math.ceil(element.outerHeight() / rows),\n pieces = [];\n\n // Children animate complete:\n function childComplete() {\n pieces.push(this);\n if (pieces.length === rows * cells) {\n animComplete();\n }\n }\n\n // Clone the element for each row and cell.\n for (i = 0; i < rows; i++) {\n // ===>\n top = offset.top + i * height;\n my = i - (rows - 1) / 2;\n for (j = 0; j < cells; j++) {\n // |||\n left = offset.left + j * width;\n mx = j - (cells - 1) / 2;\n\n // Create a clone of the now hidden main element that will be absolute positioned\n // within a wrapper div off the -left and -top equal to size of our pieces\n element.clone().appendTo(\"body\").wrap(\"<div></div>\").css({\n position: \"absolute\",\n visibility: \"visible\",\n left: -j * width,\n top: -i * height\n })\n\n // Select the wrapper - make it overflow: hidden and absolute positioned based on\n // where the original was located +left and +top equal to the size of pieces\n .parent().addClass(\"ui-effects-explode\").css({\n position: \"absolute\",\n overflow: \"hidden\",\n width: width,\n height: height,\n left: left + (show ? mx * width : 0),\n top: top + (show ? my * height : 0),\n opacity: show ? 0 : 1\n }).animate({\n left: left + (show ? 0 : mx * width),\n top: top + (show ? 0 : my * height),\n opacity: show ? 1 : 0\n }, options.duration || 500, options.easing, childComplete);\n }\n }\n function animComplete() {\n element.css({\n visibility: \"visible\"\n });\n $(pieces).remove();\n done();\n }\n });\n\n /*!\n * jQuery UI Effects Fade 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Fade Effect\n //>>group: Effects\n //>>description: Fades the element.\n //>>docs: https://api.jqueryui.com/fade-effect/\n //>>demos: https://jqueryui.com/effect/\n\n var effectsEffectFade = $.effects.define(\"fade\", \"toggle\", function (options, done) {\n var show = options.mode === \"show\";\n $(this).css(\"opacity\", show ? 0 : 1).animate({\n opacity: show ? 1 : 0\n }, {\n queue: false,\n duration: options.duration,\n easing: options.easing,\n complete: done\n });\n });\n\n /*!\n * jQuery UI Effects Fold 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Fold Effect\n //>>group: Effects\n //>>description: Folds an element first horizontally and then vertically.\n //>>docs: https://api.jqueryui.com/fold-effect/\n //>>demos: https://jqueryui.com/effect/\n\n var effectsEffectFold = $.effects.define(\"fold\", \"hide\", function (options, done) {\n // Create element\n var element = $(this),\n mode = options.mode,\n show = mode === \"show\",\n hide = mode === \"hide\",\n size = options.size || 15,\n percent = /([0-9]+)%/.exec(size),\n horizFirst = !!options.horizFirst,\n ref = horizFirst ? [\"right\", \"bottom\"] : [\"bottom\", \"right\"],\n duration = options.duration / 2,\n placeholder = $.effects.createPlaceholder(element),\n start = element.cssClip(),\n animation1 = {\n clip: $.extend({}, start)\n },\n animation2 = {\n clip: $.extend({}, start)\n },\n distance = [start[ref[0]], start[ref[1]]],\n queuelen = element.queue().length;\n if (percent) {\n size = parseInt(percent[1], 10) / 100 * distance[hide ? 0 : 1];\n }\n animation1.clip[ref[0]] = size;\n animation2.clip[ref[0]] = size;\n animation2.clip[ref[1]] = 0;\n if (show) {\n element.cssClip(animation2.clip);\n if (placeholder) {\n placeholder.css($.effects.clipToBox(animation2));\n }\n animation2.clip = start;\n }\n\n // Animate\n element.queue(function (next) {\n if (placeholder) {\n placeholder.animate($.effects.clipToBox(animation1), duration, options.easing).animate($.effects.clipToBox(animation2), duration, options.easing);\n }\n next();\n }).animate(animation1, duration, options.easing).animate(animation2, duration, options.easing).queue(done);\n $.effects.unshift(element, queuelen, 4);\n });\n\n /*!\n * jQuery UI Effects Highlight 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Highlight Effect\n //>>group: Effects\n //>>description: Highlights the background of an element in a defined color for a custom duration.\n //>>docs: https://api.jqueryui.com/highlight-effect/\n //>>demos: https://jqueryui.com/effect/\n\n var effectsEffectHighlight = $.effects.define(\"highlight\", \"show\", function (options, done) {\n var element = $(this),\n animation = {\n backgroundColor: element.css(\"backgroundColor\")\n };\n if (options.mode === \"hide\") {\n animation.opacity = 0;\n }\n $.effects.saveStyle(element);\n element.css({\n backgroundImage: \"none\",\n backgroundColor: options.color || \"#ffff99\"\n }).animate(animation, {\n queue: false,\n duration: options.duration,\n easing: options.easing,\n complete: done\n });\n });\n\n /*!\n * jQuery UI Effects Size 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Size Effect\n //>>group: Effects\n //>>description: Resize an element to a specified width and height.\n //>>docs: https://api.jqueryui.com/size-effect/\n //>>demos: https://jqueryui.com/effect/\n\n var effectsEffectSize = $.effects.define(\"size\", function (options, done) {\n // Create element\n var baseline,\n factor,\n temp,\n element = $(this),\n // Copy for children\n cProps = [\"fontSize\"],\n vProps = [\"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\"],\n hProps = [\"borderLeftWidth\", \"borderRightWidth\", \"paddingLeft\", \"paddingRight\"],\n // Set options\n mode = options.mode,\n restore = mode !== \"effect\",\n scale = options.scale || \"both\",\n origin = options.origin || [\"middle\", \"center\"],\n position = element.css(\"position\"),\n pos = element.position(),\n original = $.effects.scaledDimensions(element),\n from = options.from || original,\n to = options.to || $.effects.scaledDimensions(element, 0);\n $.effects.createPlaceholder(element);\n if (mode === \"show\") {\n temp = from;\n from = to;\n to = temp;\n }\n\n // Set scaling factor\n factor = {\n from: {\n y: from.height / original.height,\n x: from.width / original.width\n },\n to: {\n y: to.height / original.height,\n x: to.width / original.width\n }\n };\n\n // Scale the css box\n if (scale === \"box\" || scale === \"both\") {\n // Vertical props scaling\n if (factor.from.y !== factor.to.y) {\n from = $.effects.setTransition(element, vProps, factor.from.y, from);\n to = $.effects.setTransition(element, vProps, factor.to.y, to);\n }\n\n // Horizontal props scaling\n if (factor.from.x !== factor.to.x) {\n from = $.effects.setTransition(element, hProps, factor.from.x, from);\n to = $.effects.setTransition(element, hProps, factor.to.x, to);\n }\n }\n\n // Scale the content\n if (scale === \"content\" || scale === \"both\") {\n // Vertical props scaling\n if (factor.from.y !== factor.to.y) {\n from = $.effects.setTransition(element, cProps, factor.from.y, from);\n to = $.effects.setTransition(element, cProps, factor.to.y, to);\n }\n }\n\n // Adjust the position properties based on the provided origin points\n if (origin) {\n baseline = $.effects.getBaseline(origin, original);\n from.top = (original.outerHeight - from.outerHeight) * baseline.y + pos.top;\n from.left = (original.outerWidth - from.outerWidth) * baseline.x + pos.left;\n to.top = (original.outerHeight - to.outerHeight) * baseline.y + pos.top;\n to.left = (original.outerWidth - to.outerWidth) * baseline.x + pos.left;\n }\n delete from.outerHeight;\n delete from.outerWidth;\n element.css(from);\n\n // Animate the children if desired\n if (scale === \"content\" || scale === \"both\") {\n vProps = vProps.concat([\"marginTop\", \"marginBottom\"]).concat(cProps);\n hProps = hProps.concat([\"marginLeft\", \"marginRight\"]);\n\n // Only animate children with width attributes specified\n // TODO: is this right? should we include anything with css width specified as well\n element.find(\"*[width]\").each(function () {\n var child = $(this),\n childOriginal = $.effects.scaledDimensions(child),\n childFrom = {\n height: childOriginal.height * factor.from.y,\n width: childOriginal.width * factor.from.x,\n outerHeight: childOriginal.outerHeight * factor.from.y,\n outerWidth: childOriginal.outerWidth * factor.from.x\n },\n childTo = {\n height: childOriginal.height * factor.to.y,\n width: childOriginal.width * factor.to.x,\n outerHeight: childOriginal.height * factor.to.y,\n outerWidth: childOriginal.width * factor.to.x\n };\n\n // Vertical props scaling\n if (factor.from.y !== factor.to.y) {\n childFrom = $.effects.setTransition(child, vProps, factor.from.y, childFrom);\n childTo = $.effects.setTransition(child, vProps, factor.to.y, childTo);\n }\n\n // Horizontal props scaling\n if (factor.from.x !== factor.to.x) {\n childFrom = $.effects.setTransition(child, hProps, factor.from.x, childFrom);\n childTo = $.effects.setTransition(child, hProps, factor.to.x, childTo);\n }\n if (restore) {\n $.effects.saveStyle(child);\n }\n\n // Animate children\n child.css(childFrom);\n child.animate(childTo, options.duration, options.easing, function () {\n // Restore children\n if (restore) {\n $.effects.restoreStyle(child);\n }\n });\n });\n }\n\n // Animate\n element.animate(to, {\n queue: false,\n duration: options.duration,\n easing: options.easing,\n complete: function () {\n var offset = element.offset();\n if (to.opacity === 0) {\n element.css(\"opacity\", from.opacity);\n }\n if (!restore) {\n element.css(\"position\", position === \"static\" ? \"relative\" : position).offset(offset);\n\n // Need to save style here so that automatic style restoration\n // doesn't restore to the original styles from before the animation.\n $.effects.saveStyle(element);\n }\n done();\n }\n });\n });\n\n /*!\n * jQuery UI Effects Scale 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Scale Effect\n //>>group: Effects\n //>>description: Grows or shrinks an element and its content.\n //>>docs: https://api.jqueryui.com/scale-effect/\n //>>demos: https://jqueryui.com/effect/\n\n var effectsEffectScale = $.effects.define(\"scale\", function (options, done) {\n // Create element\n var el = $(this),\n mode = options.mode,\n percent = parseInt(options.percent, 10) || (parseInt(options.percent, 10) === 0 ? 0 : mode !== \"effect\" ? 0 : 100),\n newOptions = $.extend(true, {\n from: $.effects.scaledDimensions(el),\n to: $.effects.scaledDimensions(el, percent, options.direction || \"both\"),\n origin: options.origin || [\"middle\", \"center\"]\n }, options);\n\n // Fade option to support puff\n if (options.fade) {\n newOptions.from.opacity = 1;\n newOptions.to.opacity = 0;\n }\n $.effects.effect.size.call(this, newOptions, done);\n });\n\n /*!\n * jQuery UI Effects Puff 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Puff Effect\n //>>group: Effects\n //>>description: Creates a puff effect by scaling the element up and hiding it at the same time.\n //>>docs: https://api.jqueryui.com/puff-effect/\n //>>demos: https://jqueryui.com/effect/\n\n var effectsEffectPuff = $.effects.define(\"puff\", \"hide\", function (options, done) {\n var newOptions = $.extend(true, {}, options, {\n fade: true,\n percent: parseInt(options.percent, 10) || 150\n });\n $.effects.effect.scale.call(this, newOptions, done);\n });\n\n /*!\n * jQuery UI Effects Pulsate 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Pulsate Effect\n //>>group: Effects\n //>>description: Pulsates an element n times by changing the opacity to zero and back.\n //>>docs: https://api.jqueryui.com/pulsate-effect/\n //>>demos: https://jqueryui.com/effect/\n\n var effectsEffectPulsate = $.effects.define(\"pulsate\", \"show\", function (options, done) {\n var element = $(this),\n mode = options.mode,\n show = mode === \"show\",\n hide = mode === \"hide\",\n showhide = show || hide,\n // Showing or hiding leaves off the \"last\" animation\n anims = (options.times || 5) * 2 + (showhide ? 1 : 0),\n duration = options.duration / anims,\n animateTo = 0,\n i = 1,\n queuelen = element.queue().length;\n if (show || !element.is(\":visible\")) {\n element.css(\"opacity\", 0).show();\n animateTo = 1;\n }\n\n // Anims - 1 opacity \"toggles\"\n for (; i < anims; i++) {\n element.animate({\n opacity: animateTo\n }, duration, options.easing);\n animateTo = 1 - animateTo;\n }\n element.animate({\n opacity: animateTo\n }, duration, options.easing);\n element.queue(done);\n $.effects.unshift(element, queuelen, anims + 1);\n });\n\n /*!\n * jQuery UI Effects Shake 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Shake Effect\n //>>group: Effects\n //>>description: Shakes an element horizontally or vertically n times.\n //>>docs: https://api.jqueryui.com/shake-effect/\n //>>demos: https://jqueryui.com/effect/\n\n var effectsEffectShake = $.effects.define(\"shake\", function (options, done) {\n var i = 1,\n element = $(this),\n direction = options.direction || \"left\",\n distance = options.distance || 20,\n times = options.times || 3,\n anims = times * 2 + 1,\n speed = Math.round(options.duration / anims),\n ref = direction === \"up\" || direction === \"down\" ? \"top\" : \"left\",\n positiveMotion = direction === \"up\" || direction === \"left\",\n animation = {},\n animation1 = {},\n animation2 = {},\n queuelen = element.queue().length;\n $.effects.createPlaceholder(element);\n\n // Animation\n animation[ref] = (positiveMotion ? \"-=\" : \"+=\") + distance;\n animation1[ref] = (positiveMotion ? \"+=\" : \"-=\") + distance * 2;\n animation2[ref] = (positiveMotion ? \"-=\" : \"+=\") + distance * 2;\n\n // Animate\n element.animate(animation, speed, options.easing);\n\n // Shakes\n for (; i < times; i++) {\n element.animate(animation1, speed, options.easing).animate(animation2, speed, options.easing);\n }\n element.animate(animation1, speed, options.easing).animate(animation, speed / 2, options.easing).queue(done);\n $.effects.unshift(element, queuelen, anims + 1);\n });\n\n /*!\n * jQuery UI Effects Slide 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Slide Effect\n //>>group: Effects\n //>>description: Slides an element in and out of the viewport.\n //>>docs: https://api.jqueryui.com/slide-effect/\n //>>demos: https://jqueryui.com/effect/\n\n var effectsEffectSlide = $.effects.define(\"slide\", \"show\", function (options, done) {\n var startClip,\n startRef,\n element = $(this),\n map = {\n up: [\"bottom\", \"top\"],\n down: [\"top\", \"bottom\"],\n left: [\"right\", \"left\"],\n right: [\"left\", \"right\"]\n },\n mode = options.mode,\n direction = options.direction || \"left\",\n ref = direction === \"up\" || direction === \"down\" ? \"top\" : \"left\",\n positiveMotion = direction === \"up\" || direction === \"left\",\n distance = options.distance || element[ref === \"top\" ? \"outerHeight\" : \"outerWidth\"](true),\n animation = {};\n $.effects.createPlaceholder(element);\n startClip = element.cssClip();\n startRef = element.position()[ref];\n\n // Define hide animation\n animation[ref] = (positiveMotion ? -1 : 1) * distance + startRef;\n animation.clip = element.cssClip();\n animation.clip[map[direction][1]] = animation.clip[map[direction][0]];\n\n // Reverse the animation if we're showing\n if (mode === \"show\") {\n element.cssClip(animation.clip);\n element.css(ref, animation[ref]);\n animation.clip = startClip;\n animation[ref] = startRef;\n }\n\n // Actually animate\n element.animate(animation, {\n queue: false,\n duration: options.duration,\n easing: options.easing,\n complete: done\n });\n });\n\n /*!\n * jQuery UI Effects Transfer 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Transfer Effect\n //>>group: Effects\n //>>description: Displays a transfer effect from one element to another.\n //>>docs: https://api.jqueryui.com/transfer-effect/\n //>>demos: https://jqueryui.com/effect/\n\n var effect;\n if ($.uiBackCompat === true) {\n effect = $.effects.define(\"transfer\", function (options, done) {\n $(this).transfer(options, done);\n });\n }\n var effectsEffectTransfer = effect;\n\n /*!\n * jQuery UI Focusable 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: :focusable Selector\n //>>group: Core\n //>>description: Selects elements which can be focused.\n //>>docs: https://api.jqueryui.com/focusable-selector/\n\n // Selectors\n $.ui.focusable = function (element, hasTabindex) {\n var map,\n mapName,\n img,\n focusableIfVisible,\n fieldset,\n nodeName = element.nodeName.toLowerCase();\n if (\"area\" === nodeName) {\n map = element.parentNode;\n mapName = map.name;\n if (!element.href || !mapName || map.nodeName.toLowerCase() !== \"map\") {\n return false;\n }\n img = $(\"img[usemap='#\" + mapName + \"']\");\n return img.length > 0 && img.is(\":visible\");\n }\n if (/^(input|select|textarea|button|object)$/.test(nodeName)) {\n focusableIfVisible = !element.disabled;\n if (focusableIfVisible) {\n // Form controls within a disabled fieldset are disabled.\n // However, controls within the fieldset's legend do not get disabled.\n // Since controls generally aren't placed inside legends, we skip\n // this portion of the check.\n fieldset = $(element).closest(\"fieldset\")[0];\n if (fieldset) {\n focusableIfVisible = !fieldset.disabled;\n }\n }\n } else if (\"a\" === nodeName) {\n focusableIfVisible = element.href || hasTabindex;\n } else {\n focusableIfVisible = hasTabindex;\n }\n return focusableIfVisible && $(element).is(\":visible\") && $(element).css(\"visibility\") === \"visible\";\n };\n $.extend($.expr.pseudos, {\n focusable: function (element) {\n return $.ui.focusable(element, $.attr(element, \"tabindex\") != null);\n }\n });\n var focusable = $.ui.focusable;\n\n /*!\n * jQuery UI Form Reset Mixin 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Form Reset Mixin\n //>>group: Core\n //>>description: Refresh input widgets when their form is reset\n //>>docs: https://api.jqueryui.com/form-reset-mixin/\n\n var formResetMixin = $.ui.formResetMixin = {\n _formResetHandler: function () {\n var form = $(this);\n\n // Wait for the form reset to actually happen before refreshing\n setTimeout(function () {\n var instances = form.data(\"ui-form-reset-instances\");\n $.each(instances, function () {\n this.refresh();\n });\n });\n },\n _bindFormResetHandler: function () {\n this.form = $(this.element.prop(\"form\"));\n if (!this.form.length) {\n return;\n }\n var instances = this.form.data(\"ui-form-reset-instances\") || [];\n if (!instances.length) {\n // We don't use _on() here because we use a single event handler per form\n this.form.on(\"reset.ui-form-reset\", this._formResetHandler);\n }\n instances.push(this);\n this.form.data(\"ui-form-reset-instances\", instances);\n },\n _unbindFormResetHandler: function () {\n if (!this.form.length) {\n return;\n }\n var instances = this.form.data(\"ui-form-reset-instances\");\n instances.splice($.inArray(this, instances), 1);\n if (instances.length) {\n this.form.data(\"ui-form-reset-instances\", instances);\n } else {\n this.form.removeData(\"ui-form-reset-instances\").off(\"reset.ui-form-reset\");\n }\n }\n };\n\n /*!\n * jQuery UI Legacy jQuery Core patches 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n *\n */\n\n //>>label: Legacy jQuery Core patches\n //>>group: Core\n //>>description: Backport `.even()`, `.odd()` and `$.escapeSelector` to older jQuery Core versions (deprecated)\n\n // Support: jQuery 2.2.x or older.\n // This method has been defined in jQuery 3.0.0.\n // Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js\n if (!$.escapeSelector) {\n $.escapeSelector = function (id) {\n return CSS.escape(id + \"\");\n };\n }\n\n // Support: jQuery 3.4.x or older\n // These methods have been defined in jQuery 3.5.0.\n if (!$.fn.even || !$.fn.odd) {\n $.fn.extend({\n even: function () {\n return this.filter(function (i) {\n return i % 2 === 0;\n });\n },\n odd: function () {\n return this.filter(function (i) {\n return i % 2 === 1;\n });\n }\n });\n }\n ;\n /*!\n * jQuery UI Keycode 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Keycode\n //>>group: Core\n //>>description: Provide keycodes as keynames\n //>>docs: https://api.jqueryui.com/jQuery.ui.keyCode/\n\n var keycode = $.ui.keyCode = {\n BACKSPACE: 8,\n COMMA: 188,\n DELETE: 46,\n DOWN: 40,\n END: 35,\n ENTER: 13,\n ESCAPE: 27,\n HOME: 36,\n LEFT: 37,\n PAGE_DOWN: 34,\n PAGE_UP: 33,\n PERIOD: 190,\n RIGHT: 39,\n SPACE: 32,\n TAB: 9,\n UP: 38\n };\n\n /*!\n * jQuery UI Labels 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: labels\n //>>group: Core\n //>>description: Find all the labels associated with a given input\n //>>docs: https://api.jqueryui.com/labels/\n\n var labels = $.fn.labels = function () {\n var ancestor, selector, id, labels, ancestors;\n if (!this.length) {\n return this.pushStack([]);\n }\n\n // Check control.labels first\n if (this[0].labels && this[0].labels.length) {\n return this.pushStack(this[0].labels);\n }\n\n // If `control.labels` is empty - e.g. inside of document fragments - find\n // the labels manually\n labels = this.eq(0).parents(\"label\");\n\n // Look for the label based on the id\n id = this.attr(\"id\");\n if (id) {\n // We don't search against the document in case the element\n // is disconnected from the DOM\n ancestor = this.eq(0).parents().last();\n\n // Get a full set of top level ancestors\n ancestors = ancestor.add(ancestor.length ? ancestor.siblings() : this.siblings());\n\n // Create a selector for the label based on the id\n selector = \"label[for='\" + CSS.escape(id) + \"']\";\n labels = labels.add(ancestors.find(selector).addBack(selector));\n }\n\n // Return whatever we have found for labels\n return this.pushStack(labels);\n };\n\n /*!\n * jQuery UI Scroll Parent 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: scrollParent\n //>>group: Core\n //>>description: Get the closest ancestor element that is scrollable.\n //>>docs: https://api.jqueryui.com/scrollParent/\n\n var scrollParent = $.fn.scrollParent = function (includeHidden) {\n var position = this.css(\"position\"),\n excludeStaticParent = position === \"absolute\",\n overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n scrollParent = this.parents().filter(function () {\n var parent = $(this);\n if (excludeStaticParent && parent.css(\"position\") === \"static\") {\n return false;\n }\n return overflowRegex.test(parent.css(\"overflow\") + parent.css(\"overflow-y\") + parent.css(\"overflow-x\"));\n }).eq(0);\n return position === \"fixed\" || !scrollParent.length ? $(this[0].ownerDocument || document) : scrollParent;\n };\n\n /*!\n * jQuery UI Tabbable 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: :tabbable Selector\n //>>group: Core\n //>>description: Selects elements which can be tabbed to.\n //>>docs: https://api.jqueryui.com/tabbable-selector/\n\n var tabbable = $.extend($.expr.pseudos, {\n tabbable: function (element) {\n var tabIndex = $.attr(element, \"tabindex\"),\n hasTabindex = tabIndex != null;\n return (!hasTabindex || tabIndex >= 0) && $.ui.focusable(element, hasTabindex);\n }\n });\n\n /*!\n * jQuery UI Unique ID 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: uniqueId\n //>>group: Core\n //>>description: Functions to generate and remove uniqueId's\n //>>docs: https://api.jqueryui.com/uniqueId/\n\n var uniqueId = $.fn.extend({\n uniqueId: function () {\n var uuid = 0;\n return function () {\n return this.each(function () {\n if (!this.id) {\n this.id = \"ui-id-\" + ++uuid;\n }\n });\n };\n }(),\n removeUniqueId: function () {\n return this.each(function () {\n if (/^ui-id-\\d+$/.test(this.id)) {\n $(this).removeAttr(\"id\");\n }\n });\n }\n });\n\n /*!\n * jQuery UI Accordion 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Accordion\n //>>group: Widgets\n /* eslint-disable max-len */\n //>>description: Displays collapsible content panels for presenting information in a limited amount of space.\n /* eslint-enable max-len */\n //>>docs: https://api.jqueryui.com/accordion/\n //>>demos: https://jqueryui.com/accordion/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/accordion.css\n //>>css.theme: ../../themes/base/theme.css\n\n var widgetsAccordion = $.widget(\"ui.accordion\", {\n version: \"1.14.1\",\n options: {\n active: 0,\n animate: {},\n classes: {\n \"ui-accordion-header\": \"ui-corner-top\",\n \"ui-accordion-header-collapsed\": \"ui-corner-all\",\n \"ui-accordion-content\": \"ui-corner-bottom\"\n },\n collapsible: false,\n event: \"click\",\n header: function (elem) {\n return elem.find(\"> li > :first-child\").add(elem.find(\"> :not(li)\")\n\n // Support: jQuery <3.5 only\n // We could use `.even()` but that's unavailable in older jQuery.\n .filter(function (i) {\n return i % 2 === 0;\n }));\n },\n heightStyle: \"auto\",\n icons: {\n activeHeader: \"ui-icon-triangle-1-s\",\n header: \"ui-icon-triangle-1-e\"\n },\n // Callbacks\n activate: null,\n beforeActivate: null\n },\n hideProps: {\n borderTopWidth: \"hide\",\n borderBottomWidth: \"hide\",\n paddingTop: \"hide\",\n paddingBottom: \"hide\",\n height: \"hide\"\n },\n showProps: {\n borderTopWidth: \"show\",\n borderBottomWidth: \"show\",\n paddingTop: \"show\",\n paddingBottom: \"show\",\n height: \"show\"\n },\n _create: function () {\n var options = this.options;\n this.prevShow = this.prevHide = $();\n this._addClass(\"ui-accordion\", \"ui-widget ui-helper-reset\");\n this.element.attr(\"role\", \"tablist\");\n\n // Don't allow collapsible: false and active: false / null\n if (!options.collapsible && (options.active === false || options.active == null)) {\n options.active = 0;\n }\n this._processPanels();\n\n // handle negative values\n if (options.active < 0) {\n options.active += this.headers.length;\n }\n this._refresh();\n },\n _getCreateEventData: function () {\n return {\n header: this.active,\n panel: !this.active.length ? $() : this.active.next()\n };\n },\n _createIcons: function () {\n var icon,\n children,\n icons = this.options.icons;\n if (icons) {\n icon = $(\"<span>\");\n this._addClass(icon, \"ui-accordion-header-icon\", \"ui-icon \" + icons.header);\n icon.prependTo(this.headers);\n children = this.active.children(\".ui-accordion-header-icon\");\n this._removeClass(children, icons.header)._addClass(children, null, icons.activeHeader)._addClass(this.headers, \"ui-accordion-icons\");\n }\n },\n _destroyIcons: function () {\n this._removeClass(this.headers, \"ui-accordion-icons\");\n this.headers.children(\".ui-accordion-header-icon\").remove();\n },\n _destroy: function () {\n var contents;\n\n // Clean up main element\n this.element.removeAttr(\"role\");\n\n // Clean up headers\n this.headers.removeAttr(\"role aria-expanded aria-selected aria-controls tabIndex\").removeUniqueId();\n this._destroyIcons();\n\n // Clean up content panels\n contents = this.headers.next().css(\"display\", \"\").removeAttr(\"role aria-hidden aria-labelledby\").removeUniqueId();\n if (this.options.heightStyle !== \"content\") {\n contents.css(\"height\", \"\");\n }\n },\n _setOption: function (key, value) {\n if (key === \"active\") {\n // _activate() will handle invalid values and update this.options\n this._activate(value);\n return;\n }\n if (key === \"event\") {\n if (this.options.event) {\n this._off(this.headers, this.options.event);\n }\n this._setupEvents(value);\n }\n this._super(key, value);\n\n // Setting collapsible: false while collapsed; open first panel\n if (key === \"collapsible\" && !value && this.options.active === false) {\n this._activate(0);\n }\n if (key === \"icons\") {\n this._destroyIcons();\n if (value) {\n this._createIcons();\n }\n }\n },\n _setOptionDisabled: function (value) {\n this._super(value);\n this.element.attr(\"aria-disabled\", value);\n this._toggleClass(null, \"ui-state-disabled\", !!value);\n },\n _keydown: function (event) {\n if (event.altKey || event.ctrlKey) {\n return;\n }\n var keyCode = $.ui.keyCode,\n length = this.headers.length,\n currentIndex = this.headers.index(event.target),\n toFocus = false;\n switch (event.keyCode) {\n case keyCode.RIGHT:\n case keyCode.DOWN:\n toFocus = this.headers[(currentIndex + 1) % length];\n break;\n case keyCode.LEFT:\n case keyCode.UP:\n toFocus = this.headers[(currentIndex - 1 + length) % length];\n break;\n case keyCode.SPACE:\n case keyCode.ENTER:\n this._eventHandler(event);\n break;\n case keyCode.HOME:\n toFocus = this.headers[0];\n break;\n case keyCode.END:\n toFocus = this.headers[length - 1];\n break;\n }\n if (toFocus) {\n $(event.target).attr(\"tabIndex\", -1);\n $(toFocus).attr(\"tabIndex\", 0);\n $(toFocus).trigger(\"focus\");\n event.preventDefault();\n }\n },\n _panelKeyDown: function (event) {\n if (event.keyCode === $.ui.keyCode.UP && event.ctrlKey) {\n $(event.currentTarget).prev().trigger(\"focus\");\n }\n },\n refresh: function () {\n var options = this.options;\n this._processPanels();\n\n // Was collapsed or no panel\n if (options.active === false && options.collapsible === true || !this.headers.length) {\n options.active = false;\n this.active = $();\n\n // active false only when collapsible is true\n } else if (options.active === false) {\n this._activate(0);\n\n // was active, but active panel is gone\n } else if (this.active.length && !$.contains(this.element[0], this.active[0])) {\n // all remaining panel are disabled\n if (this.headers.length === this.headers.find(\".ui-state-disabled\").length) {\n options.active = false;\n this.active = $();\n\n // activate previous panel\n } else {\n this._activate(Math.max(0, options.active - 1));\n }\n\n // was active, active panel still exists\n } else {\n // make sure active index is correct\n options.active = this.headers.index(this.active);\n }\n this._destroyIcons();\n this._refresh();\n },\n _processPanels: function () {\n var prevHeaders = this.headers,\n prevPanels = this.panels;\n if (typeof this.options.header === \"function\") {\n this.headers = this.options.header(this.element);\n } else {\n this.headers = this.element.find(this.options.header);\n }\n this._addClass(this.headers, \"ui-accordion-header ui-accordion-header-collapsed\", \"ui-state-default\");\n this.panels = this.headers.next().filter(\":not(.ui-accordion-content-active)\").hide();\n this._addClass(this.panels, \"ui-accordion-content\", \"ui-helper-reset ui-widget-content\");\n\n // Avoid memory leaks (#10056)\n if (prevPanels) {\n this._off(prevHeaders.not(this.headers));\n this._off(prevPanels.not(this.panels));\n }\n },\n _refresh: function () {\n var maxHeight,\n options = this.options,\n heightStyle = options.heightStyle,\n parent = this.element.parent();\n this.active = this._findActive(options.active);\n this._addClass(this.active, \"ui-accordion-header-active\", \"ui-state-active\")._removeClass(this.active, \"ui-accordion-header-collapsed\");\n this._addClass(this.active.next(), \"ui-accordion-content-active\");\n this.active.next().show();\n this.headers.attr(\"role\", \"tab\").each(function () {\n var header = $(this),\n headerId = header.uniqueId().attr(\"id\"),\n panel = header.next(),\n panelId = panel.uniqueId().attr(\"id\");\n header.attr(\"aria-controls\", panelId);\n panel.attr(\"aria-labelledby\", headerId);\n }).next().attr(\"role\", \"tabpanel\");\n this.headers.not(this.active).attr({\n \"aria-selected\": \"false\",\n \"aria-expanded\": \"false\",\n tabIndex: -1\n }).next().attr({\n \"aria-hidden\": \"true\"\n }).hide();\n\n // Make sure at least one header is in the tab order\n if (!this.active.length) {\n this.headers.eq(0).attr(\"tabIndex\", 0);\n } else {\n this.active.attr({\n \"aria-selected\": \"true\",\n \"aria-expanded\": \"true\",\n tabIndex: 0\n }).next().attr({\n \"aria-hidden\": \"false\"\n });\n }\n this._createIcons();\n this._setupEvents(options.event);\n if (heightStyle === \"fill\") {\n maxHeight = parent.height();\n this.element.siblings(\":visible\").each(function () {\n var elem = $(this),\n position = elem.css(\"position\");\n if (position === \"absolute\" || position === \"fixed\") {\n return;\n }\n maxHeight -= elem.outerHeight(true);\n });\n this.headers.each(function () {\n maxHeight -= $(this).outerHeight(true);\n });\n this.headers.next().each(function () {\n $(this).height(Math.max(0, maxHeight - $(this).innerHeight() + $(this).height()));\n }).css(\"overflow\", \"auto\");\n } else if (heightStyle === \"auto\") {\n maxHeight = 0;\n this.headers.next().each(function () {\n var isVisible = $(this).is(\":visible\");\n if (!isVisible) {\n $(this).show();\n }\n maxHeight = Math.max(maxHeight, $(this).css(\"height\", \"\").height());\n if (!isVisible) {\n $(this).hide();\n }\n }).height(maxHeight);\n }\n },\n _activate: function (index) {\n var active = this._findActive(index)[0];\n\n // Trying to activate the already active panel\n if (active === this.active[0]) {\n return;\n }\n\n // Trying to collapse, simulate a click on the currently active header\n active = active || this.active[0];\n this._eventHandler({\n target: active,\n currentTarget: active,\n preventDefault: $.noop\n });\n },\n _findActive: function (selector) {\n return typeof selector === \"number\" ? this.headers.eq(selector) : $();\n },\n _setupEvents: function (event) {\n var events = {\n keydown: \"_keydown\"\n };\n if (event) {\n $.each(event.split(\" \"), function (index, eventName) {\n events[eventName] = \"_eventHandler\";\n });\n }\n this._off(this.headers.add(this.headers.next()));\n this._on(this.headers, events);\n this._on(this.headers.next(), {\n keydown: \"_panelKeyDown\"\n });\n this._hoverable(this.headers);\n this._focusable(this.headers);\n },\n _eventHandler: function (event) {\n var activeChildren,\n clickedChildren,\n options = this.options,\n active = this.active,\n clicked = $(event.currentTarget),\n clickedIsActive = clicked[0] === active[0],\n collapsing = clickedIsActive && options.collapsible,\n toShow = collapsing ? $() : clicked.next(),\n toHide = active.next(),\n eventData = {\n oldHeader: active,\n oldPanel: toHide,\n newHeader: collapsing ? $() : clicked,\n newPanel: toShow\n };\n event.preventDefault();\n if (\n // click on active header, but not collapsible\n clickedIsActive && !options.collapsible ||\n // allow canceling activation\n this._trigger(\"beforeActivate\", event, eventData) === false) {\n return;\n }\n options.active = collapsing ? false : this.headers.index(clicked);\n\n // When the call to ._toggle() comes after the class changes\n // it causes a very odd bug in IE 8 (see #6720)\n this.active = clickedIsActive ? $() : clicked;\n this._toggle(eventData);\n\n // Switch classes\n // corner classes on the previously active header stay after the animation\n this._removeClass(active, \"ui-accordion-header-active\", \"ui-state-active\");\n if (options.icons) {\n activeChildren = active.children(\".ui-accordion-header-icon\");\n this._removeClass(activeChildren, null, options.icons.activeHeader)._addClass(activeChildren, null, options.icons.header);\n }\n if (!clickedIsActive) {\n this._removeClass(clicked, \"ui-accordion-header-collapsed\")._addClass(clicked, \"ui-accordion-header-active\", \"ui-state-active\");\n if (options.icons) {\n clickedChildren = clicked.children(\".ui-accordion-header-icon\");\n this._removeClass(clickedChildren, null, options.icons.header)._addClass(clickedChildren, null, options.icons.activeHeader);\n }\n this._addClass(clicked.next(), \"ui-accordion-content-active\");\n }\n },\n _toggle: function (data) {\n var toShow = data.newPanel,\n toHide = this.prevShow.length ? this.prevShow : data.oldPanel;\n\n // Handle activating a panel during the animation for another activation\n this.prevShow.add(this.prevHide).stop(true, true);\n this.prevShow = toShow;\n this.prevHide = toHide;\n if (this.options.animate) {\n this._animate(toShow, toHide, data);\n } else {\n toHide.hide();\n toShow.show();\n this._toggleComplete(data);\n }\n toHide.attr({\n \"aria-hidden\": \"true\"\n });\n toHide.prev().attr({\n \"aria-selected\": \"false\",\n \"aria-expanded\": \"false\"\n });\n\n // if we're switching panels, remove the old header from the tab order\n // if we're opening from collapsed state, remove the previous header from the tab order\n // if we're collapsing, then keep the collapsing header in the tab order\n if (toShow.length && toHide.length) {\n toHide.prev().attr({\n \"tabIndex\": -1,\n \"aria-expanded\": \"false\"\n });\n } else if (toShow.length) {\n this.headers.filter(function () {\n return parseInt($(this).attr(\"tabIndex\"), 10) === 0;\n }).attr(\"tabIndex\", -1);\n }\n toShow.attr(\"aria-hidden\", \"false\").prev().attr({\n \"aria-selected\": \"true\",\n \"aria-expanded\": \"true\",\n tabIndex: 0\n });\n },\n _animate: function (toShow, toHide, data) {\n var total,\n easing,\n duration,\n that = this,\n adjust = 0,\n boxSizing = toShow.css(\"box-sizing\"),\n down = toShow.length && (!toHide.length || toShow.index() < toHide.index()),\n animate = this.options.animate || {},\n options = down && animate.down || animate,\n complete = function () {\n that._toggleComplete(data);\n };\n if (typeof options === \"number\") {\n duration = options;\n }\n if (typeof options === \"string\") {\n easing = options;\n }\n\n // fall back from options to animation in case of partial down settings\n easing = easing || options.easing || animate.easing;\n duration = duration || options.duration || animate.duration;\n if (!toHide.length) {\n return toShow.animate(this.showProps, duration, easing, complete);\n }\n if (!toShow.length) {\n return toHide.animate(this.hideProps, duration, easing, complete);\n }\n total = toShow.show().outerHeight();\n toHide.animate(this.hideProps, {\n duration: duration,\n easing: easing,\n step: function (now, fx) {\n fx.now = Math.round(now);\n }\n });\n toShow.hide().animate(this.showProps, {\n duration: duration,\n easing: easing,\n complete: complete,\n step: function (now, fx) {\n fx.now = Math.round(now);\n if (fx.prop !== \"height\") {\n if (boxSizing === \"content-box\") {\n adjust += fx.now;\n }\n } else if (that.options.heightStyle !== \"content\") {\n fx.now = Math.round(total - toHide.outerHeight() - adjust);\n adjust = 0;\n }\n }\n });\n },\n _toggleComplete: function (data) {\n var toHide = data.oldPanel,\n prev = toHide.prev();\n this._removeClass(toHide, \"ui-accordion-content-active\");\n this._removeClass(prev, \"ui-accordion-header-active\")._addClass(prev, \"ui-accordion-header-collapsed\");\n this._trigger(\"activate\", null, data);\n }\n });\n\n /*!\n * jQuery UI Menu 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Menu\n //>>group: Widgets\n //>>description: Creates nestable menus.\n //>>docs: https://api.jqueryui.com/menu/\n //>>demos: https://jqueryui.com/menu/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/menu.css\n //>>css.theme: ../../themes/base/theme.css\n\n var widgetsMenu = $.widget(\"ui.menu\", {\n version: \"1.14.1\",\n defaultElement: \"<ul>\",\n delay: 300,\n options: {\n icons: {\n submenu: \"ui-icon-caret-1-e\"\n },\n items: \"> *\",\n menus: \"ul\",\n position: {\n my: \"left top\",\n at: \"right top\"\n },\n role: \"menu\",\n // Callbacks\n blur: null,\n focus: null,\n select: null\n },\n _create: function () {\n this.activeMenu = this.element;\n\n // Flag used to prevent firing of the click handler\n // as the event bubbles up through nested menus\n this.mouseHandled = false;\n this.lastMousePosition = {\n x: null,\n y: null\n };\n this.element.uniqueId().attr({\n role: this.options.role,\n tabIndex: 0\n });\n this._addClass(\"ui-menu\", \"ui-widget ui-widget-content\");\n this._on({\n // Prevent focus from sticking to links inside menu after clicking\n // them (focus should always stay on UL during navigation).\n \"mousedown .ui-menu-item\": function (event) {\n event.preventDefault();\n this._activateItem(event);\n },\n \"click .ui-menu-item\": function (event) {\n var target = $(event.target);\n var active = $(this.document[0].activeElement);\n if (!this.mouseHandled && target.not(\".ui-state-disabled\").length) {\n this.select(event);\n\n // Only set the mouseHandled flag if the event will bubble, see #9469.\n if (!event.isPropagationStopped()) {\n this.mouseHandled = true;\n }\n\n // Open submenu on click\n if (target.has(\".ui-menu\").length) {\n this.expand(event);\n } else if (!this.element.is(\":focus\") && active.closest(\".ui-menu\").length) {\n // Redirect focus to the menu\n this.element.trigger(\"focus\", [true]);\n\n // If the active item is on the top level, let it stay active.\n // Otherwise, blur the active item since it is no longer visible.\n if (this.active && this.active.parents(\".ui-menu\").length === 1) {\n clearTimeout(this.timer);\n }\n }\n }\n },\n \"mouseenter .ui-menu-item\": \"_activateItem\",\n \"mousemove .ui-menu-item\": \"_activateItem\",\n mouseleave: \"collapseAll\",\n \"mouseleave .ui-menu\": \"collapseAll\",\n focus: function (event, keepActiveItem) {\n // If there's already an active item, keep it active\n // If not, activate the first item\n var item = this.active || this._menuItems().first();\n if (!keepActiveItem) {\n this.focus(event, item);\n }\n },\n blur: function (event) {\n this._delay(function () {\n var notContained = !$.contains(this.element[0], this.document[0].activeElement);\n if (notContained) {\n this.collapseAll(event);\n }\n });\n },\n keydown: \"_keydown\"\n });\n this.refresh();\n\n // Clicks outside of a menu collapse any open menus\n this._on(this.document, {\n click: function (event) {\n if (this._closeOnDocumentClick(event)) {\n this.collapseAll(event, true);\n }\n\n // Reset the mouseHandled flag\n this.mouseHandled = false;\n }\n });\n },\n _activateItem: function (event) {\n // Ignore mouse events while typeahead is active, see #10458.\n // Prevents focusing the wrong item when typeahead causes a scroll while the mouse\n // is over an item in the menu\n if (this.previousFilter) {\n return;\n }\n\n // If the mouse didn't actually move, but the page was scrolled, ignore the event (#9356)\n if (event.clientX === this.lastMousePosition.x && event.clientY === this.lastMousePosition.y) {\n return;\n }\n this.lastMousePosition = {\n x: event.clientX,\n y: event.clientY\n };\n var actualTarget = $(event.target).closest(\".ui-menu-item\"),\n target = $(event.currentTarget);\n\n // Ignore bubbled events on parent items, see #11641\n if (actualTarget[0] !== target[0]) {\n return;\n }\n\n // If the item is already active, there's nothing to do\n if (target.is(\".ui-state-active\")) {\n return;\n }\n\n // Remove ui-state-active class from siblings of the newly focused menu item\n // to avoid a jump caused by adjacent elements both having a class with a border\n this._removeClass(target.siblings().children(\".ui-state-active\"), null, \"ui-state-active\");\n this.focus(event, target);\n },\n _destroy: function () {\n var items = this.element.find(\".ui-menu-item\").removeAttr(\"role aria-disabled\"),\n submenus = items.children(\".ui-menu-item-wrapper\").removeUniqueId().removeAttr(\"tabIndex role aria-haspopup\");\n\n // Destroy (sub)menus\n this.element.removeAttr(\"aria-activedescendant\").find(\".ui-menu\").addBack().removeAttr(\"role aria-labelledby aria-expanded aria-hidden aria-disabled \" + \"tabIndex\").removeUniqueId().show();\n submenus.children().each(function () {\n var elem = $(this);\n if (elem.data(\"ui-menu-submenu-caret\")) {\n elem.remove();\n }\n });\n },\n _keydown: function (event) {\n var match,\n prev,\n character,\n skip,\n preventDefault = true;\n switch (event.keyCode) {\n case $.ui.keyCode.PAGE_UP:\n this.previousPage(event);\n break;\n case $.ui.keyCode.PAGE_DOWN:\n this.nextPage(event);\n break;\n case $.ui.keyCode.HOME:\n this._move(\"first\", \"first\", event);\n break;\n case $.ui.keyCode.END:\n this._move(\"last\", \"last\", event);\n break;\n case $.ui.keyCode.UP:\n this.previous(event);\n break;\n case $.ui.keyCode.DOWN:\n this.next(event);\n break;\n case $.ui.keyCode.LEFT:\n this.collapse(event);\n break;\n case $.ui.keyCode.RIGHT:\n if (this.active && !this.active.is(\".ui-state-disabled\")) {\n this.expand(event);\n }\n break;\n case $.ui.keyCode.ENTER:\n case $.ui.keyCode.SPACE:\n this._activate(event);\n break;\n case $.ui.keyCode.ESCAPE:\n this.collapse(event);\n break;\n default:\n preventDefault = false;\n prev = this.previousFilter || \"\";\n skip = false;\n\n // Support number pad values\n character = event.keyCode >= 96 && event.keyCode <= 105 ? (event.keyCode - 96).toString() : String.fromCharCode(event.keyCode);\n clearTimeout(this.filterTimer);\n if (character === prev) {\n skip = true;\n } else {\n character = prev + character;\n }\n match = this._filterMenuItems(character);\n match = skip && match.index(this.active.next()) !== -1 ? this.active.nextAll(\".ui-menu-item\") : match;\n\n // If no matches on the current filter, reset to the last character pressed\n // to move down the menu to the first item that starts with that character\n if (!match.length) {\n character = String.fromCharCode(event.keyCode);\n match = this._filterMenuItems(character);\n }\n if (match.length) {\n this.focus(event, match);\n this.previousFilter = character;\n this.filterTimer = this._delay(function () {\n delete this.previousFilter;\n }, 1000);\n } else {\n delete this.previousFilter;\n }\n }\n if (preventDefault) {\n event.preventDefault();\n }\n },\n _activate: function (event) {\n if (this.active && !this.active.is(\".ui-state-disabled\")) {\n if (this.active.children(\"[aria-haspopup='true']\").length) {\n this.expand(event);\n } else {\n this.select(event);\n }\n }\n },\n refresh: function () {\n var menus,\n items,\n newSubmenus,\n newItems,\n newWrappers,\n that = this,\n icon = this.options.icons.submenu,\n submenus = this.element.find(this.options.menus);\n this._toggleClass(\"ui-menu-icons\", null, !!this.element.find(\".ui-icon\").length);\n\n // Initialize nested menus\n newSubmenus = submenus.filter(\":not(.ui-menu)\").hide().attr({\n role: this.options.role,\n \"aria-hidden\": \"true\",\n \"aria-expanded\": \"false\"\n }).each(function () {\n var menu = $(this),\n item = menu.prev(),\n submenuCaret = $(\"<span>\").data(\"ui-menu-submenu-caret\", true);\n that._addClass(submenuCaret, \"ui-menu-icon\", \"ui-icon \" + icon);\n item.attr(\"aria-haspopup\", \"true\").prepend(submenuCaret);\n menu.attr(\"aria-labelledby\", item.attr(\"id\"));\n });\n this._addClass(newSubmenus, \"ui-menu\", \"ui-widget ui-widget-content ui-front\");\n menus = submenus.add(this.element);\n items = menus.find(this.options.items);\n\n // Initialize menu-items containing spaces and/or dashes only as dividers\n items.not(\".ui-menu-item\").each(function () {\n var item = $(this);\n if (that._isDivider(item)) {\n that._addClass(item, \"ui-menu-divider\", \"ui-widget-content\");\n }\n });\n\n // Don't refresh list items that are already adapted\n newItems = items.not(\".ui-menu-item, .ui-menu-divider\");\n newWrappers = newItems.children().not(\".ui-menu\").uniqueId().attr({\n tabIndex: -1,\n role: this._itemRole()\n });\n this._addClass(newItems, \"ui-menu-item\")._addClass(newWrappers, \"ui-menu-item-wrapper\");\n\n // Add aria-disabled attribute to any disabled menu item\n items.filter(\".ui-state-disabled\").attr(\"aria-disabled\", \"true\");\n\n // If the active item has been removed, blur the menu\n if (this.active && !$.contains(this.element[0], this.active[0])) {\n this.blur();\n }\n },\n _itemRole: function () {\n return {\n menu: \"menuitem\",\n listbox: \"option\"\n }[this.options.role];\n },\n _setOption: function (key, value) {\n if (key === \"icons\") {\n var icons = this.element.find(\".ui-menu-icon\");\n this._removeClass(icons, null, this.options.icons.submenu)._addClass(icons, null, value.submenu);\n }\n this._super(key, value);\n },\n _setOptionDisabled: function (value) {\n this._super(value);\n this.element.attr(\"aria-disabled\", String(value));\n this._toggleClass(null, \"ui-state-disabled\", !!value);\n },\n focus: function (event, item) {\n var nested, focused, activeParent;\n this.blur(event, event && event.type === \"focus\");\n this._scrollIntoView(item);\n this.active = item.first();\n focused = this.active.children(\".ui-menu-item-wrapper\");\n this._addClass(focused, null, \"ui-state-active\");\n\n // Only update aria-activedescendant if there's a role\n // otherwise we assume focus is managed elsewhere\n if (this.options.role) {\n this.element.attr(\"aria-activedescendant\", focused.attr(\"id\"));\n }\n\n // Highlight active parent menu item, if any\n activeParent = this.active.parent().closest(\".ui-menu-item\").children(\".ui-menu-item-wrapper\");\n this._addClass(activeParent, null, \"ui-state-active\");\n if (event && event.type === \"keydown\") {\n this._close();\n } else {\n this.timer = this._delay(function () {\n this._close();\n }, this.delay);\n }\n nested = item.children(\".ui-menu\");\n if (nested.length && event && /^mouse/.test(event.type)) {\n this._startOpening(nested);\n }\n this.activeMenu = item.parent();\n this._trigger(\"focus\", event, {\n item: item\n });\n },\n _scrollIntoView: function (item) {\n var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\n if (this._hasScroll()) {\n borderTop = parseFloat($.css(this.activeMenu[0], \"borderTopWidth\")) || 0;\n paddingTop = parseFloat($.css(this.activeMenu[0], \"paddingTop\")) || 0;\n offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\n scroll = this.activeMenu.scrollTop();\n elementHeight = this.activeMenu.height();\n itemHeight = item.outerHeight();\n if (offset < 0) {\n this.activeMenu.scrollTop(scroll + offset);\n } else if (offset + itemHeight > elementHeight) {\n this.activeMenu.scrollTop(scroll + offset - elementHeight + itemHeight);\n }\n }\n },\n blur: function (event, fromFocus) {\n if (!fromFocus) {\n clearTimeout(this.timer);\n }\n if (!this.active) {\n return;\n }\n this._removeClass(this.active.children(\".ui-menu-item-wrapper\"), null, \"ui-state-active\");\n this._trigger(\"blur\", event, {\n item: this.active\n });\n this.active = null;\n },\n _startOpening: function (submenu) {\n clearTimeout(this.timer);\n\n // Don't open if already open fixes a Firefox bug that caused a .5 pixel\n // shift in the submenu position when mousing over the caret icon\n if (submenu.attr(\"aria-hidden\") !== \"true\") {\n return;\n }\n this.timer = this._delay(function () {\n this._close();\n this._open(submenu);\n }, this.delay);\n },\n _open: function (submenu) {\n var position = $.extend({\n of: this.active\n }, this.options.position);\n clearTimeout(this.timer);\n this.element.find(\".ui-menu\").not(submenu.parents(\".ui-menu\")).hide().attr(\"aria-hidden\", \"true\");\n submenu.show().removeAttr(\"aria-hidden\").attr(\"aria-expanded\", \"true\").position(position);\n },\n collapseAll: function (event, all) {\n clearTimeout(this.timer);\n this.timer = this._delay(function () {\n // If we were passed an event, look for the submenu that contains the event\n var currentMenu = all ? this.element : $(event && event.target).closest(this.element.find(\".ui-menu\"));\n\n // If we found no valid submenu ancestor, use the main menu to close all\n // sub menus anyway\n if (!currentMenu.length) {\n currentMenu = this.element;\n }\n this._close(currentMenu);\n this.blur(event);\n\n // Work around active item staying active after menu is blurred\n this._removeClass(currentMenu.find(\".ui-state-active\"), null, \"ui-state-active\");\n this.activeMenu = currentMenu;\n }, all ? 0 : this.delay);\n },\n // With no arguments, closes the currently active menu - if nothing is active\n // it closes all menus. If passed an argument, it will search for menus BELOW\n _close: function (startMenu) {\n if (!startMenu) {\n startMenu = this.active ? this.active.parent() : this.element;\n }\n startMenu.find(\".ui-menu\").hide().attr(\"aria-hidden\", \"true\").attr(\"aria-expanded\", \"false\");\n },\n _closeOnDocumentClick: function (event) {\n return !$(event.target).closest(\".ui-menu\").length;\n },\n _isDivider: function (item) {\n // Match hyphen, em dash, en dash\n return !/[^\\-\\u2014\\u2013\\s]/.test(item.text());\n },\n collapse: function (event) {\n var newItem = this.active && this.active.parent().closest(\".ui-menu-item\", this.element);\n if (newItem && newItem.length) {\n this._close();\n this.focus(event, newItem);\n }\n },\n expand: function (event) {\n var newItem = this.active && this._menuItems(this.active.children(\".ui-menu\")).first();\n if (newItem && newItem.length) {\n this._open(newItem.parent());\n\n // Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n this._delay(function () {\n this.focus(event, newItem);\n });\n }\n },\n next: function (event) {\n this._move(\"next\", \"first\", event);\n },\n previous: function (event) {\n this._move(\"prev\", \"last\", event);\n },\n isFirstItem: function () {\n return this.active && !this.active.prevAll(\".ui-menu-item\").length;\n },\n isLastItem: function () {\n return this.active && !this.active.nextAll(\".ui-menu-item\").length;\n },\n _menuItems: function (menu) {\n return (menu || this.element).find(this.options.items).filter(\".ui-menu-item\");\n },\n _move: function (direction, filter, event) {\n var next;\n if (this.active) {\n if (direction === \"first\" || direction === \"last\") {\n next = this.active[direction === \"first\" ? \"prevAll\" : \"nextAll\"](\".ui-menu-item\").last();\n } else {\n next = this.active[direction + \"All\"](\".ui-menu-item\").first();\n }\n }\n if (!next || !next.length || !this.active) {\n next = this._menuItems(this.activeMenu)[filter]();\n }\n this.focus(event, next);\n },\n nextPage: function (event) {\n var item, base, height;\n if (!this.active) {\n this.next(event);\n return;\n }\n if (this.isLastItem()) {\n return;\n }\n if (this._hasScroll()) {\n base = this.active.offset().top;\n height = this.element.innerHeight();\n\n // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.\n if ($.fn.jquery.indexOf(\"3.2.\") === 0) {\n height += this.element[0].offsetHeight - this.element.outerHeight();\n }\n this.active.nextAll(\".ui-menu-item\").each(function () {\n item = $(this);\n return item.offset().top - base - height < 0;\n });\n this.focus(event, item);\n } else {\n this.focus(event, this._menuItems(this.activeMenu)[!this.active ? \"first\" : \"last\"]());\n }\n },\n previousPage: function (event) {\n var item, base, height;\n if (!this.active) {\n this.next(event);\n return;\n }\n if (this.isFirstItem()) {\n return;\n }\n if (this._hasScroll()) {\n base = this.active.offset().top;\n height = this.element.innerHeight();\n\n // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.\n if ($.fn.jquery.indexOf(\"3.2.\") === 0) {\n height += this.element[0].offsetHeight - this.element.outerHeight();\n }\n this.active.prevAll(\".ui-menu-item\").each(function () {\n item = $(this);\n return item.offset().top - base + height > 0;\n });\n this.focus(event, item);\n } else {\n this.focus(event, this._menuItems(this.activeMenu).first());\n }\n },\n _hasScroll: function () {\n return this.element.outerHeight() < this.element.prop(\"scrollHeight\");\n },\n select: function (event) {\n // TODO: It should never be possible to not have an active item at this\n // point, but the tests don't trigger mouseenter before click.\n this.active = this.active || $(event.target).closest(\".ui-menu-item\");\n var ui = {\n item: this.active\n };\n if (!this.active.has(\".ui-menu\").length) {\n this.collapseAll(event, true);\n }\n this._trigger(\"select\", event, ui);\n },\n _filterMenuItems: function (character) {\n var escapedCharacter = character.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\"),\n regex = new RegExp(\"^\" + escapedCharacter, \"i\");\n return this.activeMenu.find(this.options.items)\n\n // Only match on items, not dividers or other content (#10571)\n .filter(\".ui-menu-item\").filter(function () {\n return regex.test(String.prototype.trim.call($(this).children(\".ui-menu-item-wrapper\").text()));\n });\n }\n });\n\n /*!\n * jQuery UI Autocomplete 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Autocomplete\n //>>group: Widgets\n //>>description: Lists suggested words as the user is typing.\n //>>docs: https://api.jqueryui.com/autocomplete/\n //>>demos: https://jqueryui.com/autocomplete/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/autocomplete.css\n //>>css.theme: ../../themes/base/theme.css\n\n $.widget(\"ui.autocomplete\", {\n version: \"1.14.1\",\n defaultElement: \"<input>\",\n options: {\n appendTo: null,\n autoFocus: false,\n delay: 300,\n minLength: 1,\n position: {\n my: \"left top\",\n at: \"left bottom\",\n collision: \"none\"\n },\n source: null,\n // Callbacks\n change: null,\n close: null,\n focus: null,\n open: null,\n response: null,\n search: null,\n select: null\n },\n requestIndex: 0,\n pending: 0,\n liveRegionTimer: null,\n _create: function () {\n // Some browsers only repeat keydown events, not keypress events,\n // so we use the suppressKeyPress flag to determine if we've already\n // handled the keydown event. #7269\n // Unfortunately the code for & in keypress is the same as the up arrow,\n // so we use the suppressKeyPressRepeat flag to avoid handling keypress\n // events when we know the keydown event was used to modify the\n // search term. #7799\n var suppressKeyPress,\n suppressKeyPressRepeat,\n suppressInput,\n nodeName = this.element[0].nodeName.toLowerCase(),\n isTextarea = nodeName === \"textarea\",\n isInput = nodeName === \"input\";\n\n // Textareas are always multi-line\n // Inputs are always single-line, even if inside a contentEditable element\n // All other element types are determined by whether they're contentEditable\n this.isMultiLine = isTextarea || !isInput && this.element.prop(\"contentEditable\") === \"true\";\n this.valueMethod = this.element[isTextarea || isInput ? \"val\" : \"text\"];\n this.isNewMenu = true;\n this._addClass(\"ui-autocomplete-input\");\n this.element.attr(\"autocomplete\", \"off\");\n this._on(this.element, {\n keydown: function (event) {\n if (this.element.prop(\"readOnly\")) {\n suppressKeyPress = true;\n suppressInput = true;\n suppressKeyPressRepeat = true;\n return;\n }\n suppressKeyPress = false;\n suppressInput = false;\n suppressKeyPressRepeat = false;\n var keyCode = $.ui.keyCode;\n switch (event.keyCode) {\n case keyCode.PAGE_UP:\n suppressKeyPress = true;\n this._move(\"previousPage\", event);\n break;\n case keyCode.PAGE_DOWN:\n suppressKeyPress = true;\n this._move(\"nextPage\", event);\n break;\n case keyCode.UP:\n suppressKeyPress = true;\n this._keyEvent(\"previous\", event);\n break;\n case keyCode.DOWN:\n suppressKeyPress = true;\n this._keyEvent(\"next\", event);\n break;\n case keyCode.ENTER:\n // when menu is open and has focus\n if (this.menu.active) {\n // #6055 - Opera still allows the keypress to occur\n // which causes forms to submit\n suppressKeyPress = true;\n event.preventDefault();\n this.menu.select(event);\n }\n break;\n case keyCode.TAB:\n if (this.menu.active) {\n this.menu.select(event);\n }\n break;\n case keyCode.ESCAPE:\n if (this.menu.element.is(\":visible\")) {\n if (!this.isMultiLine) {\n this._value(this.term);\n }\n this.close(event);\n\n // Different browsers have different default behavior for escape\n // Single press can mean undo or clear\n event.preventDefault();\n }\n break;\n default:\n suppressKeyPressRepeat = true;\n\n // search timeout should be triggered before the input value is changed\n this._searchTimeout(event);\n break;\n }\n },\n keypress: function (event) {\n if (suppressKeyPress) {\n suppressKeyPress = false;\n if (!this.isMultiLine || this.menu.element.is(\":visible\")) {\n event.preventDefault();\n }\n return;\n }\n if (suppressKeyPressRepeat) {\n return;\n }\n\n // Replicate some key handlers to allow them to repeat in Firefox and Opera\n var keyCode = $.ui.keyCode;\n switch (event.keyCode) {\n case keyCode.PAGE_UP:\n this._move(\"previousPage\", event);\n break;\n case keyCode.PAGE_DOWN:\n this._move(\"nextPage\", event);\n break;\n case keyCode.UP:\n this._keyEvent(\"previous\", event);\n break;\n case keyCode.DOWN:\n this._keyEvent(\"next\", event);\n break;\n }\n },\n input: function (event) {\n if (suppressInput) {\n suppressInput = false;\n event.preventDefault();\n return;\n }\n this._searchTimeout(event);\n },\n focus: function () {\n this.selectedItem = null;\n this.previous = this._value();\n },\n blur: function (event) {\n clearTimeout(this.searching);\n this.close(event);\n this._change(event);\n }\n });\n this._initSource();\n this.menu = $(\"<ul>\").appendTo(this._appendTo()).menu({\n // disable ARIA support, the live region takes care of that\n role: null\n }).hide().menu(\"instance\");\n this._addClass(this.menu.element, \"ui-autocomplete\", \"ui-front\");\n this._on(this.menu.element, {\n mousedown: function (event) {\n // Prevent moving focus out of the text field\n event.preventDefault();\n },\n menufocus: function (event, ui) {\n var label, item;\n\n // Support: Firefox\n // Prevent accidental activation of menu items in Firefox (#7024 #9118)\n if (this.isNewMenu) {\n this.isNewMenu = false;\n if (event.originalEvent && /^mouse/.test(event.originalEvent.type)) {\n this.menu.blur();\n this.document.one(\"mousemove\", function () {\n $(event.target).trigger(event.originalEvent);\n });\n return;\n }\n }\n item = ui.item.data(\"ui-autocomplete-item\");\n if (false !== this._trigger(\"focus\", event, {\n item: item\n })) {\n // use value to match what will end up in the input, if it was a key event\n if (event.originalEvent && /^key/.test(event.originalEvent.type)) {\n this._value(item.value);\n }\n }\n\n // Announce the value in the liveRegion\n label = ui.item.attr(\"aria-label\") || item.value;\n if (label && String.prototype.trim.call(label).length) {\n clearTimeout(this.liveRegionTimer);\n this.liveRegionTimer = this._delay(function () {\n this.liveRegion.html($(\"<div>\").text(label));\n }, 100);\n }\n },\n menuselect: function (event, ui) {\n var item = ui.item.data(\"ui-autocomplete-item\"),\n previous = this.previous;\n\n // Only trigger when focus was lost (click on menu)\n if (this.element[0] !== this.document[0].activeElement) {\n this.element.trigger(\"focus\");\n this.previous = previous;\n }\n if (false !== this._trigger(\"select\", event, {\n item: item\n })) {\n this._value(item.value);\n }\n\n // reset the term after the select event\n // this allows custom select handling to work properly\n this.term = this._value();\n this.close(event);\n this.selectedItem = item;\n }\n });\n this.liveRegion = $(\"<div>\", {\n role: \"status\",\n \"aria-live\": \"assertive\",\n \"aria-relevant\": \"additions\"\n }).appendTo(this.document[0].body);\n this._addClass(this.liveRegion, null, \"ui-helper-hidden-accessible\");\n\n // Turning off autocomplete prevents the browser from remembering the\n // value when navigating through history, so we re-enable autocomplete\n // if the page is unloaded before the widget is destroyed. #7790\n this._on(this.window, {\n beforeunload: function () {\n this.element.removeAttr(\"autocomplete\");\n }\n });\n },\n _destroy: function () {\n clearTimeout(this.searching);\n this.element.removeAttr(\"autocomplete\");\n this.menu.element.remove();\n this.liveRegion.remove();\n },\n _setOption: function (key, value) {\n this._super(key, value);\n if (key === \"source\") {\n this._initSource();\n }\n if (key === \"appendTo\") {\n this.menu.element.appendTo(this._appendTo());\n }\n if (key === \"disabled\" && value && this.xhr) {\n this.xhr.abort();\n }\n },\n _isEventTargetInWidget: function (event) {\n var menuElement = this.menu.element[0];\n return event.target === this.element[0] || event.target === menuElement || $.contains(menuElement, event.target);\n },\n _closeOnClickOutside: function (event) {\n if (!this._isEventTargetInWidget(event)) {\n this.close();\n }\n },\n _appendTo: function () {\n var element = this.options.appendTo;\n if (element) {\n element = element.jquery || element.nodeType ? $(element) : this.document.find(element).eq(0);\n }\n if (!element || !element[0]) {\n element = this.element.closest(\".ui-front, dialog\");\n }\n if (!element.length) {\n element = this.document[0].body;\n }\n return element;\n },\n _initSource: function () {\n var array,\n url,\n that = this;\n if (Array.isArray(this.options.source)) {\n array = this.options.source;\n this.source = function (request, response) {\n response($.ui.autocomplete.filter(array, request.term));\n };\n } else if (typeof this.options.source === \"string\") {\n url = this.options.source;\n this.source = function (request, response) {\n if (that.xhr) {\n that.xhr.abort();\n }\n that.xhr = $.ajax({\n url: url,\n data: request,\n dataType: \"json\",\n success: function (data) {\n response(data);\n },\n error: function () {\n response([]);\n }\n });\n };\n } else {\n this.source = this.options.source;\n }\n },\n _searchTimeout: function (event) {\n clearTimeout(this.searching);\n this.searching = this._delay(function () {\n // Search if the value has changed, or if the user retypes the same value (see #7434)\n var equalValues = this.term === this._value(),\n menuVisible = this.menu.element.is(\":visible\"),\n modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n if (!equalValues || equalValues && !menuVisible && !modifierKey) {\n this.selectedItem = null;\n this.search(null, event);\n }\n }, this.options.delay);\n },\n search: function (value, event) {\n value = value != null ? value : this._value();\n\n // Always save the actual value, not the one passed as an argument\n this.term = this._value();\n if (value.length < this.options.minLength) {\n return this.close(event);\n }\n if (this._trigger(\"search\", event) === false) {\n return;\n }\n return this._search(value);\n },\n _search: function (value) {\n this.pending++;\n this._addClass(\"ui-autocomplete-loading\");\n this.cancelSearch = false;\n this.source({\n term: value\n }, this._response());\n },\n _response: function () {\n var index = ++this.requestIndex;\n return function (content) {\n if (index === this.requestIndex) {\n this.__response(content);\n }\n this.pending--;\n if (!this.pending) {\n this._removeClass(\"ui-autocomplete-loading\");\n }\n }.bind(this);\n },\n __response: function (content) {\n if (content) {\n content = this._normalize(content);\n }\n this._trigger(\"response\", null, {\n content: content\n });\n if (!this.options.disabled && content && content.length && !this.cancelSearch) {\n this._suggest(content);\n this._trigger(\"open\");\n } else {\n // use ._close() instead of .close() so we don't cancel future searches\n this._close();\n }\n },\n close: function (event) {\n this.cancelSearch = true;\n this._close(event);\n },\n _close: function (event) {\n // Remove the handler that closes the menu on outside clicks\n this._off(this.document, \"mousedown\");\n if (this.menu.element.is(\":visible\")) {\n this.menu.element.hide();\n this.menu.blur();\n this.isNewMenu = true;\n this._trigger(\"close\", event);\n }\n },\n _change: function (event) {\n if (this.previous !== this._value()) {\n this._trigger(\"change\", event, {\n item: this.selectedItem\n });\n }\n },\n _normalize: function (items) {\n // assume all items have the right format when the first item is complete\n if (items.length && items[0].label && items[0].value) {\n return items;\n }\n return $.map(items, function (item) {\n if (typeof item === \"string\") {\n return {\n label: item,\n value: item\n };\n }\n return $.extend({}, item, {\n label: item.label || item.value,\n value: item.value || item.label\n });\n });\n },\n _suggest: function (items) {\n var ul = this.menu.element.empty();\n this._renderMenu(ul, items);\n this.isNewMenu = true;\n this.menu.refresh();\n\n // Size and position menu\n ul.show();\n this._resizeMenu();\n ul.position($.extend({\n of: this.element\n }, this.options.position));\n if (this.options.autoFocus) {\n this.menu.next();\n }\n\n // Listen for interactions outside of the widget (#6642)\n this._on(this.document, {\n mousedown: \"_closeOnClickOutside\"\n });\n },\n _resizeMenu: function () {\n var ul = this.menu.element;\n ul.outerWidth(Math.max(\n // Firefox wraps long text (possibly a rounding bug)\n // so we add 1px to avoid the wrapping (#7513)\n ul.width(\"\").outerWidth() + 1, this.element.outerWidth()));\n },\n _renderMenu: function (ul, items) {\n var that = this;\n $.each(items, function (index, item) {\n that._renderItemData(ul, item);\n });\n },\n _renderItemData: function (ul, item) {\n return this._renderItem(ul, item).data(\"ui-autocomplete-item\", item);\n },\n _renderItem: function (ul, item) {\n return $(\"<li>\").append($(\"<div>\").text(item.label)).appendTo(ul);\n },\n _move: function (direction, event) {\n if (!this.menu.element.is(\":visible\")) {\n this.search(null, event);\n return;\n }\n if (this.menu.isFirstItem() && /^previous/.test(direction) || this.menu.isLastItem() && /^next/.test(direction)) {\n if (!this.isMultiLine) {\n this._value(this.term);\n }\n this.menu.blur();\n return;\n }\n this.menu[direction](event);\n },\n widget: function () {\n return this.menu.element;\n },\n _value: function () {\n return this.valueMethod.apply(this.element, arguments);\n },\n _keyEvent: function (keyEvent, event) {\n if (!this.isMultiLine || this.menu.element.is(\":visible\")) {\n this._move(keyEvent, event);\n\n // Prevents moving cursor to beginning/end of the text field in some browsers\n event.preventDefault();\n }\n }\n });\n $.extend($.ui.autocomplete, {\n escapeRegex: function (value) {\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n },\n filter: function (array, term) {\n var matcher = new RegExp($.ui.autocomplete.escapeRegex(term), \"i\");\n return $.grep(array, function (value) {\n return matcher.test(value.label || value.value || value);\n });\n }\n });\n\n // Live region extension, adding a `messages` option\n // NOTE: This is an experimental API. We are still investigating\n // a full solution for string manipulation and internationalization.\n $.widget(\"ui.autocomplete\", $.ui.autocomplete, {\n options: {\n messages: {\n noResults: \"No search results.\",\n results: function (amount) {\n return amount + (amount > 1 ? \" results are\" : \" result is\") + \" available, use up and down arrow keys to navigate.\";\n }\n }\n },\n __response: function (content) {\n var message;\n this._superApply(arguments);\n if (this.options.disabled || this.cancelSearch) {\n return;\n }\n if (content && content.length) {\n message = this.options.messages.results(content.length);\n } else {\n message = this.options.messages.noResults;\n }\n clearTimeout(this.liveRegionTimer);\n this.liveRegionTimer = this._delay(function () {\n this.liveRegion.html($(\"<div>\").text(message));\n }, 100);\n }\n });\n var widgetsAutocomplete = $.ui.autocomplete;\n\n /*!\n * jQuery UI Controlgroup 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Controlgroup\n //>>group: Widgets\n //>>description: Visually groups form control widgets\n //>>docs: https://api.jqueryui.com/controlgroup/\n //>>demos: https://jqueryui.com/controlgroup/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/controlgroup.css\n //>>css.theme: ../../themes/base/theme.css\n\n var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;\n var widgetsControlgroup = $.widget(\"ui.controlgroup\", {\n version: \"1.14.1\",\n defaultElement: \"<div>\",\n options: {\n direction: \"horizontal\",\n disabled: null,\n onlyVisible: true,\n items: {\n \"button\": \"input[type=button], input[type=submit], input[type=reset], button, a\",\n \"controlgroupLabel\": \".ui-controlgroup-label\",\n \"checkboxradio\": \"input[type='checkbox'], input[type='radio']\",\n \"selectmenu\": \"select\",\n \"spinner\": \".ui-spinner-input\"\n }\n },\n _create: function () {\n this._enhance();\n },\n // To support the enhanced option in jQuery Mobile, we isolate DOM manipulation\n _enhance: function () {\n this.element.attr(\"role\", \"toolbar\");\n this.refresh();\n },\n _destroy: function () {\n this._callChildMethod(\"destroy\");\n this.childWidgets.removeData(\"ui-controlgroup-data\");\n this.element.removeAttr(\"role\");\n if (this.options.items.controlgroupLabel) {\n this.element.find(this.options.items.controlgroupLabel).find(\".ui-controlgroup-label-contents\").contents().unwrap();\n }\n },\n _initWidgets: function () {\n var that = this,\n childWidgets = [];\n\n // First we iterate over each of the items options\n $.each(this.options.items, function (widget, selector) {\n var labels;\n var options = {};\n\n // Make sure the widget has a selector set\n if (!selector) {\n return;\n }\n if (widget === \"controlgroupLabel\") {\n labels = that.element.find(selector);\n labels.each(function () {\n var element = $(this);\n if (element.children(\".ui-controlgroup-label-contents\").length) {\n return;\n }\n element.contents().wrapAll(\"<span class='ui-controlgroup-label-contents'></span>\");\n });\n that._addClass(labels, null, \"ui-widget ui-widget-content ui-state-default\");\n childWidgets = childWidgets.concat(labels.get());\n return;\n }\n\n // Make sure the widget actually exists\n if (!$.fn[widget]) {\n return;\n }\n\n // We assume everything is in the middle to start because we can't determine\n // first / last elements until all enhancments are done.\n if (that[\"_\" + widget + \"Options\"]) {\n options = that[\"_\" + widget + \"Options\"](\"middle\");\n } else {\n options = {\n classes: {}\n };\n }\n\n // Find instances of this widget inside controlgroup and init them\n that.element.find(selector).each(function () {\n var element = $(this);\n var instance = element[widget](\"instance\");\n\n // We need to clone the default options for this type of widget to avoid\n // polluting the variable options which has a wider scope than a single widget.\n var instanceOptions = $.widget.extend({}, options);\n\n // If the button is the child of a spinner ignore it\n // TODO: Find a more generic solution\n if (widget === \"button\" && element.parent(\".ui-spinner\").length) {\n return;\n }\n\n // Create the widget if it doesn't exist\n if (!instance) {\n instance = element[widget]()[widget](\"instance\");\n }\n if (instance) {\n instanceOptions.classes = that._resolveClassesValues(instanceOptions.classes, instance);\n }\n element[widget](instanceOptions);\n\n // Store an instance of the controlgroup to be able to reference\n // from the outermost element for changing options and refresh\n var widgetElement = element[widget](\"widget\");\n $.data(widgetElement[0], \"ui-controlgroup-data\", instance ? instance : element[widget](\"instance\"));\n childWidgets.push(widgetElement[0]);\n });\n });\n this.childWidgets = $($.uniqueSort(childWidgets));\n this._addClass(this.childWidgets, \"ui-controlgroup-item\");\n },\n _callChildMethod: function (method) {\n this.childWidgets.each(function () {\n var element = $(this),\n data = element.data(\"ui-controlgroup-data\");\n if (data && data[method]) {\n data[method]();\n }\n });\n },\n _updateCornerClass: function (element, position) {\n var remove = \"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all\";\n var add = this._buildSimpleOptions(position, \"label\").classes.label;\n this._removeClass(element, null, remove);\n this._addClass(element, null, add);\n },\n _buildSimpleOptions: function (position, key) {\n var direction = this.options.direction === \"vertical\";\n var result = {\n classes: {}\n };\n result.classes[key] = {\n \"middle\": \"\",\n \"first\": \"ui-corner-\" + (direction ? \"top\" : \"left\"),\n \"last\": \"ui-corner-\" + (direction ? \"bottom\" : \"right\"),\n \"only\": \"ui-corner-all\"\n }[position];\n return result;\n },\n _spinnerOptions: function (position) {\n var options = this._buildSimpleOptions(position, \"ui-spinner\");\n options.classes[\"ui-spinner-up\"] = \"\";\n options.classes[\"ui-spinner-down\"] = \"\";\n return options;\n },\n _buttonOptions: function (position) {\n return this._buildSimpleOptions(position, \"ui-button\");\n },\n _checkboxradioOptions: function (position) {\n return this._buildSimpleOptions(position, \"ui-checkboxradio-label\");\n },\n _selectmenuOptions: function (position) {\n var direction = this.options.direction === \"vertical\";\n return {\n width: direction ? \"auto\" : false,\n classes: {\n middle: {\n \"ui-selectmenu-button-open\": \"\",\n \"ui-selectmenu-button-closed\": \"\"\n },\n first: {\n \"ui-selectmenu-button-open\": \"ui-corner-\" + (direction ? \"top\" : \"tl\"),\n \"ui-selectmenu-button-closed\": \"ui-corner-\" + (direction ? \"top\" : \"left\")\n },\n last: {\n \"ui-selectmenu-button-open\": direction ? \"\" : \"ui-corner-tr\",\n \"ui-selectmenu-button-closed\": \"ui-corner-\" + (direction ? \"bottom\" : \"right\")\n },\n only: {\n \"ui-selectmenu-button-open\": \"ui-corner-top\",\n \"ui-selectmenu-button-closed\": \"ui-corner-all\"\n }\n }[position]\n };\n },\n _resolveClassesValues: function (classes, instance) {\n var result = {};\n $.each(classes, function (key) {\n var current = instance.options.classes[key] || \"\";\n current = String.prototype.trim.call(current.replace(controlgroupCornerRegex, \"\"));\n result[key] = (current + \" \" + classes[key]).replace(/\\s+/g, \" \");\n });\n return result;\n },\n _setOption: function (key, value) {\n if (key === \"direction\") {\n this._removeClass(\"ui-controlgroup-\" + this.options.direction);\n }\n this._super(key, value);\n if (key === \"disabled\") {\n this._callChildMethod(value ? \"disable\" : \"enable\");\n return;\n }\n this.refresh();\n },\n refresh: function () {\n var children,\n that = this;\n this._addClass(\"ui-controlgroup ui-controlgroup-\" + this.options.direction);\n if (this.options.direction === \"horizontal\") {\n this._addClass(null, \"ui-helper-clearfix\");\n }\n this._initWidgets();\n children = this.childWidgets;\n\n // We filter here because we need to track all childWidgets not just the visible ones\n if (this.options.onlyVisible) {\n children = children.filter(\":visible\");\n }\n if (children.length) {\n // We do this last because we need to make sure all enhancment is done\n // before determining first and last\n $.each([\"first\", \"last\"], function (index, value) {\n var instance = children[value]().data(\"ui-controlgroup-data\");\n if (instance && that[\"_\" + instance.widgetName + \"Options\"]) {\n var options = that[\"_\" + instance.widgetName + \"Options\"](children.length === 1 ? \"only\" : value);\n options.classes = that._resolveClassesValues(options.classes, instance);\n instance.element[instance.widgetName](options);\n } else {\n that._updateCornerClass(children[value](), value);\n }\n });\n\n // Finally call the refresh method on each of the child widgets.\n this._callChildMethod(\"refresh\");\n }\n }\n });\n\n /*!\n * jQuery UI Checkboxradio 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Checkboxradio\n //>>group: Widgets\n //>>description: Enhances a form with multiple themeable checkboxes or radio buttons.\n //>>docs: https://api.jqueryui.com/checkboxradio/\n //>>demos: https://jqueryui.com/checkboxradio/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/button.css\n //>>css.structure: ../../themes/base/checkboxradio.css\n //>>css.theme: ../../themes/base/theme.css\n\n $.widget(\"ui.checkboxradio\", [$.ui.formResetMixin, {\n version: \"1.14.1\",\n options: {\n disabled: null,\n label: null,\n icon: true,\n classes: {\n \"ui-checkboxradio-label\": \"ui-corner-all\",\n \"ui-checkboxradio-icon\": \"ui-corner-all\"\n }\n },\n _getCreateOptions: function () {\n var disabled, labels, labelContents;\n var options = this._super() || {};\n\n // We read the type here, because it makes more sense to throw a element type error first,\n // rather then the error for lack of a label. Often if its the wrong type, it\n // won't have a label (e.g. calling on a div, btn, etc)\n this._readType();\n labels = this.element.labels();\n\n // If there are multiple labels, use the last one\n this.label = $(labels[labels.length - 1]);\n if (!this.label.length) {\n $.error(\"No label found for checkboxradio widget\");\n }\n this.originalLabel = \"\";\n\n // We need to get the label text but this may also need to make sure it does not contain the\n // input itself.\n // The label contents could be text, html, or a mix. We wrap all elements\n // and read the wrapper's `innerHTML` to get a string representation of\n // the label, without the input as part of it.\n labelContents = this.label.contents().not(this.element[0]);\n if (labelContents.length) {\n this.originalLabel += labelContents.clone().wrapAll(\"<div></div>\").parent().html();\n }\n\n // Set the label option if we found label text\n if (this.originalLabel) {\n options.label = this.originalLabel;\n }\n disabled = this.element[0].disabled;\n if (disabled != null) {\n options.disabled = disabled;\n }\n return options;\n },\n _create: function () {\n var checked = this.element[0].checked;\n this._bindFormResetHandler();\n if (this.options.disabled == null) {\n this.options.disabled = this.element[0].disabled;\n }\n this._setOption(\"disabled\", this.options.disabled);\n this._addClass(\"ui-checkboxradio\", \"ui-helper-hidden-accessible\");\n this._addClass(this.label, \"ui-checkboxradio-label\", \"ui-button ui-widget\");\n if (this.type === \"radio\") {\n this._addClass(this.label, \"ui-checkboxradio-radio-label\");\n }\n if (this.options.label && this.options.label !== this.originalLabel) {\n this._updateLabel();\n } else if (this.originalLabel) {\n this.options.label = this.originalLabel;\n }\n this._enhance();\n if (checked) {\n this._addClass(this.label, \"ui-checkboxradio-checked\", \"ui-state-active\");\n }\n this._on({\n change: \"_toggleClasses\",\n focus: function () {\n this._addClass(this.label, null, \"ui-state-focus ui-visual-focus\");\n },\n blur: function () {\n this._removeClass(this.label, null, \"ui-state-focus ui-visual-focus\");\n }\n });\n },\n _readType: function () {\n var nodeName = this.element[0].nodeName.toLowerCase();\n this.type = this.element[0].type;\n if (nodeName !== \"input\" || !/radio|checkbox/.test(this.type)) {\n $.error(\"Can't create checkboxradio on element.nodeName=\" + nodeName + \" and element.type=\" + this.type);\n }\n },\n // Support jQuery Mobile enhanced option\n _enhance: function () {\n this._updateIcon(this.element[0].checked);\n },\n widget: function () {\n return this.label;\n },\n _getRadioGroup: function () {\n var group;\n var name = this.element[0].name;\n var nameSelector = \"input[name='\" + CSS.escape(name) + \"']\";\n if (!name) {\n return $([]);\n }\n if (this.form.length) {\n group = $(this.form[0].elements).filter(nameSelector);\n } else {\n // Not inside a form, check all inputs that also are not inside a form\n group = $(nameSelector).filter(function () {\n return $($(this).prop(\"form\")).length === 0;\n });\n }\n return group.not(this.element);\n },\n _toggleClasses: function () {\n var checked = this.element[0].checked;\n this._toggleClass(this.label, \"ui-checkboxradio-checked\", \"ui-state-active\", checked);\n if (this.options.icon && this.type === \"checkbox\") {\n this._toggleClass(this.icon, null, \"ui-icon-check ui-state-checked\", checked)._toggleClass(this.icon, null, \"ui-icon-blank\", !checked);\n }\n if (this.type === \"radio\") {\n this._getRadioGroup().each(function () {\n var instance = $(this).checkboxradio(\"instance\");\n if (instance) {\n instance._removeClass(instance.label, \"ui-checkboxradio-checked\", \"ui-state-active\");\n }\n });\n }\n },\n _destroy: function () {\n this._unbindFormResetHandler();\n if (this.icon) {\n this.icon.remove();\n this.iconSpace.remove();\n }\n },\n _setOption: function (key, value) {\n // We don't allow the value to be set to nothing\n if (key === \"label\" && !value) {\n return;\n }\n this._super(key, value);\n if (key === \"disabled\") {\n this._toggleClass(this.label, null, \"ui-state-disabled\", value);\n this.element[0].disabled = value;\n\n // Don't refresh when setting disabled\n return;\n }\n this.refresh();\n },\n _updateIcon: function (checked) {\n var toAdd = \"ui-icon ui-icon-background \";\n if (this.options.icon) {\n if (!this.icon) {\n this.icon = $(\"<span>\");\n this.iconSpace = $(\"<span> </span>\");\n this._addClass(this.iconSpace, \"ui-checkboxradio-icon-space\");\n }\n if (this.type === \"checkbox\") {\n toAdd += checked ? \"ui-icon-check ui-state-checked\" : \"ui-icon-blank\";\n this._removeClass(this.icon, null, checked ? \"ui-icon-blank\" : \"ui-icon-check\");\n } else {\n toAdd += \"ui-icon-blank\";\n }\n this._addClass(this.icon, \"ui-checkboxradio-icon\", toAdd);\n if (!checked) {\n this._removeClass(this.icon, null, \"ui-icon-check ui-state-checked\");\n }\n this.icon.prependTo(this.label).after(this.iconSpace);\n } else if (this.icon !== undefined) {\n this.icon.remove();\n this.iconSpace.remove();\n delete this.icon;\n }\n },\n _updateLabel: function () {\n // Remove the contents of the label ( minus the icon, icon space, and input )\n var contents = this.label.contents().not(this.element[0]);\n if (this.icon) {\n contents = contents.not(this.icon[0]);\n }\n if (this.iconSpace) {\n contents = contents.not(this.iconSpace[0]);\n }\n contents.remove();\n this.label.append(this.options.label);\n },\n refresh: function () {\n var checked = this.element[0].checked,\n isDisabled = this.element[0].disabled;\n this._updateIcon(checked);\n this._toggleClass(this.label, \"ui-checkboxradio-checked\", \"ui-state-active\", checked);\n if (this.options.label !== null) {\n this._updateLabel();\n }\n if (isDisabled !== this.options.disabled) {\n this._setOptions({\n \"disabled\": isDisabled\n });\n }\n }\n }]);\n var widgetsCheckboxradio = $.ui.checkboxradio;\n\n /*!\n * jQuery UI Button 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Button\n //>>group: Widgets\n //>>description: Enhances a form with themeable buttons.\n //>>docs: https://api.jqueryui.com/button/\n //>>demos: https://jqueryui.com/button/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/button.css\n //>>css.theme: ../../themes/base/theme.css\n\n $.widget(\"ui.button\", {\n version: \"1.14.1\",\n defaultElement: \"<button>\",\n options: {\n classes: {\n \"ui-button\": \"ui-corner-all\"\n },\n disabled: null,\n icon: null,\n iconPosition: \"beginning\",\n label: null,\n showLabel: true\n },\n _getCreateOptions: function () {\n var disabled,\n // This is to support cases like in jQuery Mobile where the base widget does have\n // an implementation of _getCreateOptions\n options = this._super() || {};\n this.isInput = this.element.is(\"input\");\n disabled = this.element[0].disabled;\n if (disabled != null) {\n options.disabled = disabled;\n }\n this.originalLabel = this.isInput ? this.element.val() : this.element.html();\n if (this.originalLabel) {\n options.label = this.originalLabel;\n }\n return options;\n },\n _create: function () {\n if (!this.option.showLabel & !this.options.icon) {\n this.options.showLabel = true;\n }\n\n // We have to check the option again here even though we did in _getCreateOptions,\n // because null may have been passed on init which would override what was set in\n // _getCreateOptions\n if (this.options.disabled == null) {\n this.options.disabled = this.element[0].disabled || false;\n }\n this.hasTitle = !!this.element.attr(\"title\");\n\n // Check to see if the label needs to be set or if its already correct\n if (this.options.label && this.options.label !== this.originalLabel) {\n if (this.isInput) {\n this.element.val(this.options.label);\n } else {\n this.element.html(this.options.label);\n }\n }\n this._addClass(\"ui-button\", \"ui-widget\");\n this._setOption(\"disabled\", this.options.disabled);\n this._enhance();\n if (this.element.is(\"a\")) {\n this._on({\n \"keyup\": function (event) {\n if (event.keyCode === $.ui.keyCode.SPACE) {\n event.preventDefault();\n\n // If a native click is available use it, so we\n // actually cause navigation. Otherwise, just trigger\n // a click event.\n if (this.element[0].click) {\n this.element[0].click();\n } else {\n this.element.trigger(\"click\");\n }\n }\n }\n });\n }\n },\n _enhance: function () {\n if (!this.element.is(\"button\")) {\n this.element.attr(\"role\", \"button\");\n }\n if (this.options.icon) {\n this._updateIcon(\"icon\", this.options.icon);\n this._updateTooltip();\n }\n },\n _updateTooltip: function () {\n this.title = this.element.attr(\"title\");\n if (!this.options.showLabel && !this.title) {\n this.element.attr(\"title\", this.options.label);\n }\n },\n _updateIcon: function (option, value) {\n var icon = option !== \"iconPosition\",\n position = icon ? this.options.iconPosition : value,\n displayBlock = position === \"top\" || position === \"bottom\";\n\n // Create icon\n if (!this.icon) {\n this.icon = $(\"<span>\");\n this._addClass(this.icon, \"ui-button-icon\", \"ui-icon\");\n if (!this.options.showLabel) {\n this._addClass(\"ui-button-icon-only\");\n }\n } else if (icon) {\n // If we are updating the icon remove the old icon class\n this._removeClass(this.icon, null, this.options.icon);\n }\n\n // If we are updating the icon add the new icon class\n if (icon) {\n this._addClass(this.icon, null, value);\n }\n this._attachIcon(position);\n\n // If the icon is on top or bottom we need to add the ui-widget-icon-block class and remove\n // the iconSpace if there is one.\n if (displayBlock) {\n this._addClass(this.icon, null, \"ui-widget-icon-block\");\n if (this.iconSpace) {\n this.iconSpace.remove();\n }\n } else {\n // Position is beginning or end so remove the ui-widget-icon-block class and add the\n // space if it does not exist\n if (!this.iconSpace) {\n this.iconSpace = $(\"<span> </span>\");\n this._addClass(this.iconSpace, \"ui-button-icon-space\");\n }\n this._removeClass(this.icon, null, \"ui-wiget-icon-block\");\n this._attachIconSpace(position);\n }\n },\n _destroy: function () {\n this.element.removeAttr(\"role\");\n if (this.icon) {\n this.icon.remove();\n }\n if (this.iconSpace) {\n this.iconSpace.remove();\n }\n if (!this.hasTitle) {\n this.element.removeAttr(\"title\");\n }\n },\n _attachIconSpace: function (iconPosition) {\n this.icon[/^(?:end|bottom)/.test(iconPosition) ? \"before\" : \"after\"](this.iconSpace);\n },\n _attachIcon: function (iconPosition) {\n this.element[/^(?:end|bottom)/.test(iconPosition) ? \"append\" : \"prepend\"](this.icon);\n },\n _setOptions: function (options) {\n var newShowLabel = options.showLabel === undefined ? this.options.showLabel : options.showLabel,\n newIcon = options.icon === undefined ? this.options.icon : options.icon;\n if (!newShowLabel && !newIcon) {\n options.showLabel = true;\n }\n this._super(options);\n },\n _setOption: function (key, value) {\n if (key === \"icon\") {\n if (value) {\n this._updateIcon(key, value);\n } else if (this.icon) {\n this.icon.remove();\n if (this.iconSpace) {\n this.iconSpace.remove();\n }\n }\n }\n if (key === \"iconPosition\") {\n this._updateIcon(key, value);\n }\n\n // Make sure we can't end up with a button that has neither text nor icon\n if (key === \"showLabel\") {\n this._toggleClass(\"ui-button-icon-only\", null, !value);\n this._updateTooltip();\n }\n if (key === \"label\") {\n if (this.isInput) {\n this.element.val(value);\n } else {\n // If there is an icon, append it, else nothing then append the value\n // this avoids removal of the icon when setting label text\n this.element.html(value);\n if (this.icon) {\n this._attachIcon(this.options.iconPosition);\n this._attachIconSpace(this.options.iconPosition);\n }\n }\n }\n this._super(key, value);\n if (key === \"disabled\") {\n this._toggleClass(null, \"ui-state-disabled\", value);\n this.element[0].disabled = value;\n if (value) {\n this.element.trigger(\"blur\");\n }\n }\n },\n refresh: function () {\n // Make sure to only check disabled if its an element that supports this otherwise\n // check for the disabled class to determine state\n var isDisabled = this.element.is(\"input, button\") ? this.element[0].disabled : this.element.hasClass(\"ui-button-disabled\");\n if (isDisabled !== this.options.disabled) {\n this._setOptions({\n disabled: isDisabled\n });\n }\n this._updateTooltip();\n }\n });\n\n // DEPRECATED\n if ($.uiBackCompat === true) {\n // Text and Icons options\n $.widget(\"ui.button\", $.ui.button, {\n options: {\n text: true,\n icons: {\n primary: null,\n secondary: null\n }\n },\n _create: function () {\n if (this.options.showLabel && !this.options.text) {\n this.options.showLabel = this.options.text;\n }\n if (!this.options.showLabel && this.options.text) {\n this.options.text = this.options.showLabel;\n }\n if (!this.options.icon && (this.options.icons.primary || this.options.icons.secondary)) {\n if (this.options.icons.primary) {\n this.options.icon = this.options.icons.primary;\n } else {\n this.options.icon = this.options.icons.secondary;\n this.options.iconPosition = \"end\";\n }\n } else if (this.options.icon) {\n this.options.icons.primary = this.options.icon;\n }\n this._super();\n },\n _setOption: function (key, value) {\n if (key === \"text\") {\n this._super(\"showLabel\", value);\n return;\n }\n if (key === \"showLabel\") {\n this.options.text = value;\n }\n if (key === \"icon\") {\n this.options.icons.primary = value;\n }\n if (key === \"icons\") {\n if (value.primary) {\n this._super(\"icon\", value.primary);\n this._super(\"iconPosition\", \"beginning\");\n } else if (value.secondary) {\n this._super(\"icon\", value.secondary);\n this._super(\"iconPosition\", \"end\");\n }\n }\n this._superApply(arguments);\n }\n });\n $.fn.button = function (orig) {\n return function (options) {\n var isMethodCall = typeof options === \"string\";\n var args = Array.prototype.slice.call(arguments, 1);\n var returnValue = this;\n if (isMethodCall) {\n // If this is an empty collection, we need to have the instance method\n // return undefined instead of the jQuery instance\n if (!this.length && options === \"instance\") {\n returnValue = undefined;\n } else {\n this.each(function () {\n var methodValue;\n var type = $(this).attr(\"type\");\n var name = type !== \"checkbox\" && type !== \"radio\" ? \"button\" : \"checkboxradio\";\n var instance = $.data(this, \"ui-\" + name);\n if (options === \"instance\") {\n returnValue = instance;\n return false;\n }\n if (!instance) {\n return $.error(\"cannot call methods on button\" + \" prior to initialization; \" + \"attempted to call method '\" + options + \"'\");\n }\n if (typeof instance[options] !== \"function\" || options.charAt(0) === \"_\") {\n return $.error(\"no such method '\" + options + \"' for button\" + \" widget instance\");\n }\n methodValue = instance[options].apply(instance, args);\n if (methodValue !== instance && methodValue !== undefined) {\n returnValue = methodValue && methodValue.jquery ? returnValue.pushStack(methodValue.get()) : methodValue;\n return false;\n }\n });\n }\n } else {\n // Allow multiple hashes to be passed on init\n if (args.length) {\n options = $.widget.extend.apply(null, [options].concat(args));\n }\n this.each(function () {\n var type = $(this).attr(\"type\");\n var name = type !== \"checkbox\" && type !== \"radio\" ? \"button\" : \"checkboxradio\";\n var instance = $.data(this, \"ui-\" + name);\n if (instance) {\n instance.option(options || {});\n if (instance._init) {\n instance._init();\n }\n } else {\n if (name === \"button\") {\n orig.call($(this), options);\n return;\n }\n $(this).checkboxradio($.extend({\n icon: false\n }, options));\n }\n });\n }\n return returnValue;\n };\n }($.fn.button);\n $.fn.buttonset = function () {\n if (!$.ui.controlgroup) {\n $.error(\"Controlgroup widget missing\");\n }\n if (arguments[0] === \"option\" && arguments[1] === \"items\" && arguments[2]) {\n return this.controlgroup.apply(this, [arguments[0], \"items.button\", arguments[2]]);\n }\n if (arguments[0] === \"option\" && arguments[1] === \"items\") {\n return this.controlgroup.apply(this, [arguments[0], \"items.button\"]);\n }\n if (typeof arguments[0] === \"object\" && arguments[0].items) {\n arguments[0].items = {\n button: arguments[0].items\n };\n }\n return this.controlgroup.apply(this, arguments);\n };\n }\n var widgetsButton = $.ui.button;\n\n /* eslint-disable max-len, camelcase */\n /*!\n * jQuery UI Datepicker 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Datepicker\n //>>group: Widgets\n //>>description: Displays a calendar from an input or inline for selecting dates.\n //>>docs: https://api.jqueryui.com/datepicker/\n //>>demos: https://jqueryui.com/datepicker/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/datepicker.css\n //>>css.theme: ../../themes/base/theme.css\n\n $.extend($.ui, {\n datepicker: {\n version: \"1.14.1\"\n }\n });\n var datepicker_instActive;\n function datepicker_getZindex(elem) {\n var position, value;\n while (elem.length && elem[0] !== document) {\n // Ignore z-index if position is set to a value where z-index is ignored by the browser\n // This makes behavior of this function consistent across browsers\n // WebKit always returns auto if the element is positioned\n position = elem.css(\"position\");\n if (position === \"absolute\" || position === \"relative\" || position === \"fixed\") {\n // IE returns 0 when zIndex is not specified\n // other browsers return a string\n // we ignore the case of nested elements with an explicit value of 0\n // <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n value = parseInt(elem.css(\"zIndex\"), 10);\n if (!isNaN(value) && value !== 0) {\n return value;\n }\n }\n elem = elem.parent();\n }\n return 0;\n }\n\n /* Date picker manager.\n Use the singleton instance of this class, $.datepicker, to interact with the date picker.\n Settings for (groups of) date pickers are maintained in an instance object,\n allowing multiple different settings on the same page. */\n\n function Datepicker() {\n this._curInst = null; // The current instance in use\n this._keyEvent = false; // If the last event was a key event\n this._disabledInputs = []; // List of date picker inputs that have been disabled\n this._datepickerShowing = false; // True if the popup picker is showing , false if not\n this._inDialog = false; // True if showing within a \"dialog\", false if not\n this._mainDivId = \"ui-datepicker-div\"; // The ID of the main datepicker division\n this._inlineClass = \"ui-datepicker-inline\"; // The name of the inline marker class\n this._appendClass = \"ui-datepicker-append\"; // The name of the append marker class\n this._triggerClass = \"ui-datepicker-trigger\"; // The name of the trigger marker class\n this._dialogClass = \"ui-datepicker-dialog\"; // The name of the dialog marker class\n this._disableClass = \"ui-datepicker-disabled\"; // The name of the disabled covering marker class\n this._unselectableClass = \"ui-datepicker-unselectable\"; // The name of the unselectable cell marker class\n this._currentClass = \"ui-datepicker-current-day\"; // The name of the current day marker class\n this._dayOverClass = \"ui-datepicker-days-cell-over\"; // The name of the day hover marker class\n this.regional = []; // Available regional settings, indexed by language code\n this.regional[\"\"] = {\n // Default regional settings\n closeText: \"Done\",\n // Display text for close link\n prevText: \"Prev\",\n // Display text for previous month link\n nextText: \"Next\",\n // Display text for next month link\n currentText: \"Today\",\n // Display text for current month link\n monthNames: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n // Names of months for drop-down and formatting\n monthNamesShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n // For formatting\n dayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n // For formatting\n dayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n // For formatting\n dayNamesMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n // Column headings for days starting at Sunday\n weekHeader: \"Wk\",\n // Column header for week of the year\n dateFormat: \"mm/dd/yy\",\n // See format options on parseDate\n firstDay: 0,\n // The first day of the week, Sun = 0, Mon = 1, ...\n isRTL: false,\n // True if right-to-left language, false if left-to-right\n showMonthAfterYear: false,\n // True if the year select precedes month, false for month then year\n yearSuffix: \"\",\n // Additional text to append to the year in the month headers,\n selectMonthLabel: \"Select month\",\n // Invisible label for month selector\n selectYearLabel: \"Select year\" // Invisible label for year selector\n };\n this._defaults = {\n // Global defaults for all the date picker instances\n showOn: \"focus\",\n // \"focus\" for popup on focus,\n // \"button\" for trigger button, or \"both\" for either\n showAnim: \"fadeIn\",\n // Name of jQuery animation for popup\n showOptions: {},\n // Options for enhanced animations\n defaultDate: null,\n // Used when field is blank: actual date,\n // +/-number for offset from today, null for today\n appendText: \"\",\n // Display text following the input box, e.g. showing the format\n buttonText: \"...\",\n // Text for trigger button\n buttonImage: \"\",\n // URL for trigger button image\n buttonImageOnly: false,\n // True if the image appears alone, false if it appears on a button\n hideIfNoPrevNext: false,\n // True to hide next/previous month links\n // if not applicable, false to just disable them\n navigationAsDateFormat: false,\n // True if date formatting applied to prev/today/next links\n gotoCurrent: false,\n // True if today link goes back to current selection instead\n changeMonth: false,\n // True if month can be selected directly, false if only prev/next\n changeYear: false,\n // True if year can be selected directly, false if only prev/next\n yearRange: \"c-10:c+10\",\n // Range of years to display in drop-down,\n // either relative to today's year (-nn:+nn), relative to currently displayed year\n // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)\n showOtherMonths: false,\n // True to show dates in other months, false to leave blank\n selectOtherMonths: false,\n // True to allow selection of dates in other months, false for unselectable\n showWeek: false,\n // True to show week of the year, false to not show it\n calculateWeek: this.iso8601Week,\n // How to calculate the week of the year,\n // takes a Date and returns the number of the week for it\n shortYearCutoff: \"+10\",\n // Short year values < this are in the current century,\n // > this are in the previous century,\n // string value starting with \"+\" for current year + value\n minDate: null,\n // The earliest selectable date, or null for no limit\n maxDate: null,\n // The latest selectable date, or null for no limit\n duration: \"fast\",\n // Duration of display/closure\n beforeShowDay: null,\n // Function that takes a date and returns an array with\n // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or \"\",\n // [2] = cell title (optional), e.g. $.datepicker.noWeekends\n beforeShow: null,\n // Function that takes an input field and\n // returns a set of custom settings for the date picker\n onSelect: null,\n // Define a callback function when a date is selected\n onChangeMonthYear: null,\n // Define a callback function when the month or year is changed\n onClose: null,\n // Define a callback function when the datepicker is closed\n onUpdateDatepicker: null,\n // Define a callback function when the datepicker is updated\n numberOfMonths: 1,\n // Number of months to show at a time\n showCurrentAtPos: 0,\n // The position in multipe months at which to show the current month (starting at 0)\n stepMonths: 1,\n // Number of months to step back/forward\n stepBigMonths: 12,\n // Number of months to step back/forward for the big links\n altField: \"\",\n // Selector for an alternate field to store selected dates into\n altFormat: \"\",\n // The date format to use for the alternate field\n constrainInput: true,\n // The input is constrained by the current date format\n showButtonPanel: false,\n // True to show button panel, false to not show it\n autoSize: false,\n // True to size the input for the date format, false to leave as is\n disabled: false // The initial disabled state\n };\n $.extend(this._defaults, this.regional[\"\"]);\n this.regional.en = $.extend(true, {}, this.regional[\"\"]);\n this.regional[\"en-US\"] = $.extend(true, {}, this.regional.en);\n this.dpDiv = datepicker_bindHover($(\"<div id='\" + this._mainDivId + \"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\"));\n }\n $.extend(Datepicker.prototype, {\n /* Class name added to elements to indicate already configured with a date picker. */\n markerClassName: \"hasDatepicker\",\n //Keep track of the maximum number of rows displayed (see #7043)\n maxRows: 4,\n // TODO rename to \"widget\" when switching to widget factory\n _widgetDatepicker: function () {\n return this.dpDiv;\n },\n /* Override the default settings for all instances of the date picker.\n * @param settings object - the new settings to use as defaults (anonymous object)\n * @return the manager object\n */\n setDefaults: function (settings) {\n datepicker_extendRemove(this._defaults, settings || {});\n return this;\n },\n /* Attach the date picker to a jQuery selection.\n * @param target\telement - the target input field or division or span\n * @param settings object - the new settings to use for this date picker instance (anonymous)\n */\n _attachDatepicker: function (target, settings) {\n var nodeName, inline, inst;\n nodeName = target.nodeName.toLowerCase();\n inline = nodeName === \"div\" || nodeName === \"span\";\n if (!target.id) {\n this.uuid += 1;\n target.id = \"dp\" + this.uuid;\n }\n inst = this._newInst($(target), inline);\n inst.settings = $.extend({}, settings || {});\n if (nodeName === \"input\") {\n this._connectDatepicker(target, inst);\n } else if (inline) {\n this._inlineDatepicker(target, inst);\n }\n },\n /* Create a new instance object. */\n _newInst: function (target, inline) {\n var id = target[0].id.replace(/([^A-Za-z0-9_\\-])/g, \"\\\\\\\\$1\"); // escape jQuery meta chars\n return {\n id: id,\n input: target,\n // associated target\n selectedDay: 0,\n selectedMonth: 0,\n selectedYear: 0,\n // current selection\n drawMonth: 0,\n drawYear: 0,\n // month being drawn\n inline: inline,\n // is datepicker inline or not\n dpDiv: !inline ? this.dpDiv :\n // presentation div\n datepicker_bindHover($(\"<div class='\" + this._inlineClass + \" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\"))\n };\n },\n /* Attach the date picker to an input field. */\n _connectDatepicker: function (target, inst) {\n var input = $(target);\n inst.append = $([]);\n inst.trigger = $([]);\n if (input.hasClass(this.markerClassName)) {\n return;\n }\n this._attachments(input, inst);\n input.addClass(this.markerClassName).on(\"keydown\", this._doKeyDown).on(\"keypress\", this._doKeyPress).on(\"keyup\", this._doKeyUp);\n this._autoSize(inst);\n $.data(target, \"datepicker\", inst);\n\n //If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)\n if (inst.settings.disabled) {\n this._disableDatepicker(target);\n }\n },\n /* Make attachments based on settings. */\n _attachments: function (input, inst) {\n var showOn,\n buttonText,\n buttonImage,\n appendText = this._get(inst, \"appendText\"),\n isRTL = this._get(inst, \"isRTL\");\n if (inst.append) {\n inst.append.remove();\n }\n if (appendText) {\n inst.append = $(\"<span>\").addClass(this._appendClass).text(appendText);\n input[isRTL ? \"before\" : \"after\"](inst.append);\n }\n input.off(\"focus\", this._showDatepicker);\n if (inst.trigger) {\n inst.trigger.remove();\n }\n showOn = this._get(inst, \"showOn\");\n if (showOn === \"focus\" || showOn === \"both\") {\n // pop-up date picker when in the marked field\n input.on(\"focus\", this._showDatepicker);\n }\n if (showOn === \"button\" || showOn === \"both\") {\n // pop-up date picker when button clicked\n buttonText = this._get(inst, \"buttonText\");\n buttonImage = this._get(inst, \"buttonImage\");\n if (this._get(inst, \"buttonImageOnly\")) {\n inst.trigger = $(\"<img>\").addClass(this._triggerClass).attr({\n src: buttonImage,\n alt: buttonText,\n title: buttonText\n });\n } else {\n inst.trigger = $(\"<button type='button'>\").addClass(this._triggerClass);\n if (buttonImage) {\n inst.trigger.html($(\"<img>\").attr({\n src: buttonImage,\n alt: buttonText,\n title: buttonText\n }));\n } else {\n inst.trigger.text(buttonText);\n }\n }\n input[isRTL ? \"before\" : \"after\"](inst.trigger);\n inst.trigger.on(\"click\", function () {\n if ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) {\n $.datepicker._hideDatepicker();\n } else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) {\n $.datepicker._hideDatepicker();\n $.datepicker._showDatepicker(input[0]);\n } else {\n $.datepicker._showDatepicker(input[0]);\n }\n return false;\n });\n }\n },\n /* Apply the maximum length for the date format. */\n _autoSize: function (inst) {\n if (this._get(inst, \"autoSize\") && !inst.inline) {\n var findMax,\n max,\n maxI,\n i,\n date = new Date(2009, 12 - 1, 20),\n // Ensure double digits\n dateFormat = this._get(inst, \"dateFormat\");\n if (dateFormat.match(/[DM]/)) {\n findMax = function (names) {\n max = 0;\n maxI = 0;\n for (i = 0; i < names.length; i++) {\n if (names[i].length > max) {\n max = names[i].length;\n maxI = i;\n }\n }\n return maxI;\n };\n date.setMonth(findMax(this._get(inst, dateFormat.match(/MM/) ? \"monthNames\" : \"monthNamesShort\")));\n date.setDate(findMax(this._get(inst, dateFormat.match(/DD/) ? \"dayNames\" : \"dayNamesShort\")) + 20 - date.getDay());\n }\n inst.input.attr(\"size\", this._formatDate(inst, date).length);\n }\n },\n /* Attach an inline date picker to a div. */\n _inlineDatepicker: function (target, inst) {\n var divSpan = $(target);\n if (divSpan.hasClass(this.markerClassName)) {\n return;\n }\n divSpan.addClass(this.markerClassName).append(inst.dpDiv);\n $.data(target, \"datepicker\", inst);\n this._setDate(inst, this._getDefaultDate(inst), true);\n this._updateDatepicker(inst);\n this._updateAlternate(inst);\n\n //If disabled option is true, disable the datepicker before showing it (see ticket #5665)\n if (inst.settings.disabled) {\n this._disableDatepicker(target);\n }\n\n // Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements\n // https://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height\n inst.dpDiv.css(\"display\", \"block\");\n },\n /* Pop-up the date picker in a \"dialog\" box.\n * @param input element - ignored\n * @param date\tstring or Date - the initial date to display\n * @param onSelect function - the function to call when a date is selected\n * @param settings object - update the dialog date picker instance's settings (anonymous object)\n * @param pos int[2] - coordinates for the dialog's position within the screen or\n *\t\t\t\t\tevent - with x/y coordinates or\n *\t\t\t\t\tleave empty for default (screen centre)\n * @return the manager object\n */\n _dialogDatepicker: function (input, date, onSelect, settings, pos) {\n var id,\n browserWidth,\n browserHeight,\n scrollX,\n scrollY,\n inst = this._dialogInst; // internal instance\n\n if (!inst) {\n this.uuid += 1;\n id = \"dp\" + this.uuid;\n this._dialogInput = $(\"<input type='text' id='\" + id + \"' style='position: absolute; top: -100px; width: 0px;'/>\");\n this._dialogInput.on(\"keydown\", this._doKeyDown);\n $(\"body\").append(this._dialogInput);\n inst = this._dialogInst = this._newInst(this._dialogInput, false);\n inst.settings = {};\n $.data(this._dialogInput[0], \"datepicker\", inst);\n }\n datepicker_extendRemove(inst.settings, settings || {});\n date = date && date.constructor === Date ? this._formatDate(inst, date) : date;\n this._dialogInput.val(date);\n this._pos = pos ? pos.length ? pos : [pos.pageX, pos.pageY] : null;\n if (!this._pos) {\n browserWidth = document.documentElement.clientWidth;\n browserHeight = document.documentElement.clientHeight;\n scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;\n scrollY = document.documentElement.scrollTop || document.body.scrollTop;\n this._pos =\n // should use actual width/height below\n [browserWidth / 2 - 100 + scrollX, browserHeight / 2 - 150 + scrollY];\n }\n\n // Move input on screen for focus, but hidden behind dialog\n this._dialogInput.css(\"left\", this._pos[0] + 20 + \"px\").css(\"top\", this._pos[1] + \"px\");\n inst.settings.onSelect = onSelect;\n this._inDialog = true;\n this.dpDiv.addClass(this._dialogClass);\n this._showDatepicker(this._dialogInput[0]);\n if ($.blockUI) {\n $.blockUI(this.dpDiv);\n }\n $.data(this._dialogInput[0], \"datepicker\", inst);\n return this;\n },\n /* Detach a datepicker from its control.\n * @param target\telement - the target input field or division or span\n */\n _destroyDatepicker: function (target) {\n var nodeName,\n $target = $(target),\n inst = $.data(target, \"datepicker\");\n if (!$target.hasClass(this.markerClassName)) {\n return;\n }\n nodeName = target.nodeName.toLowerCase();\n $.removeData(target, \"datepicker\");\n if (nodeName === \"input\") {\n inst.append.remove();\n inst.trigger.remove();\n $target.removeClass(this.markerClassName).off(\"focus\", this._showDatepicker).off(\"keydown\", this._doKeyDown).off(\"keypress\", this._doKeyPress).off(\"keyup\", this._doKeyUp);\n } else if (nodeName === \"div\" || nodeName === \"span\") {\n $target.removeClass(this.markerClassName).empty();\n }\n $.datepicker._hideDatepicker();\n if (datepicker_instActive === inst) {\n datepicker_instActive = null;\n this._curInst = null;\n }\n },\n /* Enable the date picker to a jQuery selection.\n * @param target\telement - the target input field or division or span\n */\n _enableDatepicker: function (target) {\n var nodeName,\n inline,\n $target = $(target),\n inst = $.data(target, \"datepicker\");\n if (!$target.hasClass(this.markerClassName)) {\n return;\n }\n nodeName = target.nodeName.toLowerCase();\n if (nodeName === \"input\") {\n target.disabled = false;\n inst.trigger.filter(\"button\").each(function () {\n this.disabled = false;\n }).end().filter(\"img\").css({\n opacity: \"1.0\",\n cursor: \"\"\n });\n } else if (nodeName === \"div\" || nodeName === \"span\") {\n inline = $target.children(\".\" + this._inlineClass);\n inline.children().removeClass(\"ui-state-disabled\");\n inline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").prop(\"disabled\", false);\n }\n this._disabledInputs = $.map(this._disabledInputs,\n // Delete entry\n function (value) {\n return value === target ? null : value;\n });\n },\n /* Disable the date picker to a jQuery selection.\n * @param target\telement - the target input field or division or span\n */\n _disableDatepicker: function (target) {\n var nodeName,\n inline,\n $target = $(target),\n inst = $.data(target, \"datepicker\");\n if (!$target.hasClass(this.markerClassName)) {\n return;\n }\n nodeName = target.nodeName.toLowerCase();\n if (nodeName === \"input\") {\n target.disabled = true;\n inst.trigger.filter(\"button\").each(function () {\n this.disabled = true;\n }).end().filter(\"img\").css({\n opacity: \"0.5\",\n cursor: \"default\"\n });\n } else if (nodeName === \"div\" || nodeName === \"span\") {\n inline = $target.children(\".\" + this._inlineClass);\n inline.children().addClass(\"ui-state-disabled\");\n inline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").prop(\"disabled\", true);\n }\n this._disabledInputs = $.map(this._disabledInputs,\n // Delete entry\n function (value) {\n return value === target ? null : value;\n });\n this._disabledInputs[this._disabledInputs.length] = target;\n },\n /* Is the first field in a jQuery collection disabled as a datepicker?\n * @param target\telement - the target input field or division or span\n * @return boolean - true if disabled, false if enabled\n */\n _isDisabledDatepicker: function (target) {\n if (!target) {\n return false;\n }\n for (var i = 0; i < this._disabledInputs.length; i++) {\n if (this._disabledInputs[i] === target) {\n return true;\n }\n }\n return false;\n },\n /* Retrieve the instance data for the target control.\n * @param target element - the target input field or division or span\n * @return object - the associated instance data\n * @throws error if a jQuery problem getting data\n */\n _getInst: function (target) {\n try {\n return $.data(target, \"datepicker\");\n } catch (err) {\n throw \"Missing instance data for this datepicker\";\n }\n },\n /* Update or retrieve the settings for a date picker attached to an input field or division.\n * @param target element - the target input field or division or span\n * @param name\tobject - the new settings to update or\n *\t\t\t\tstring - the name of the setting to change or retrieve,\n *\t\t\t\twhen retrieving also \"all\" for all instance settings or\n *\t\t\t\t\"defaults\" for all global defaults\n * @param value any - the new value for the setting\n *\t\t\t\t(omit if above is an object or to retrieve a value)\n */\n _optionDatepicker: function (target, name, value) {\n var settings,\n date,\n minDate,\n maxDate,\n inst = this._getInst(target);\n if (arguments.length === 2 && typeof name === \"string\") {\n return name === \"defaults\" ? $.extend({}, $.datepicker._defaults) : inst ? name === \"all\" ? $.extend({}, inst.settings) : this._get(inst, name) : null;\n }\n settings = name || {};\n if (typeof name === \"string\") {\n settings = {};\n settings[name] = value;\n }\n if (inst) {\n if (this._curInst === inst) {\n this._hideDatepicker();\n }\n date = this._getDateDatepicker(target, true);\n minDate = this._getMinMaxDate(inst, \"min\");\n maxDate = this._getMinMaxDate(inst, \"max\");\n datepicker_extendRemove(inst.settings, settings);\n\n // reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided\n if (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) {\n inst.settings.minDate = this._formatDate(inst, minDate);\n }\n if (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) {\n inst.settings.maxDate = this._formatDate(inst, maxDate);\n }\n if (\"disabled\" in settings) {\n if (settings.disabled) {\n this._disableDatepicker(target);\n } else {\n this._enableDatepicker(target);\n }\n }\n this._attachments($(target), inst);\n this._autoSize(inst);\n this._setDate(inst, date);\n this._updateAlternate(inst);\n this._updateDatepicker(inst);\n }\n },\n // Change method deprecated\n _changeDatepicker: function (target, name, value) {\n this._optionDatepicker(target, name, value);\n },\n /* Redraw the date picker attached to an input field or division.\n * @param target element - the target input field or division or span\n */\n _refreshDatepicker: function (target) {\n var inst = this._getInst(target);\n if (inst) {\n this._updateDatepicker(inst);\n }\n },\n /* Set the dates for a jQuery selection.\n * @param target element - the target input field or division or span\n * @param date\tDate - the new date\n */\n _setDateDatepicker: function (target, date) {\n var inst = this._getInst(target);\n if (inst) {\n this._setDate(inst, date);\n this._updateDatepicker(inst);\n this._updateAlternate(inst);\n }\n },\n /* Get the date(s) for the first entry in a jQuery selection.\n * @param target element - the target input field or division or span\n * @param noDefault boolean - true if no default date is to be used\n * @return Date - the current date\n */\n _getDateDatepicker: function (target, noDefault) {\n var inst = this._getInst(target);\n if (inst && !inst.inline) {\n this._setDateFromField(inst, noDefault);\n }\n return inst ? this._getDate(inst) : null;\n },\n /* Handle keystrokes. */\n _doKeyDown: function (event) {\n var onSelect,\n dateStr,\n sel,\n inst = $.datepicker._getInst(event.target),\n handled = true,\n isRTL = inst.dpDiv.is(\".ui-datepicker-rtl\");\n inst._keyEvent = true;\n if ($.datepicker._datepickerShowing) {\n switch (event.keyCode) {\n case 9:\n $.datepicker._hideDatepicker();\n handled = false;\n break;\n // hide on tab out\n case 13:\n sel = $(\"td.\" + $.datepicker._dayOverClass + \":not(.\" + $.datepicker._currentClass + \")\", inst.dpDiv);\n if (sel[0]) {\n $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);\n }\n onSelect = $.datepicker._get(inst, \"onSelect\");\n if (onSelect) {\n dateStr = $.datepicker._formatDate(inst);\n\n // Trigger custom callback\n onSelect.apply(inst.input ? inst.input[0] : null, [dateStr, inst]);\n } else {\n $.datepicker._hideDatepicker();\n }\n return false;\n // don't submit the form\n case 27:\n $.datepicker._hideDatepicker();\n break;\n // hide on escape\n case 33:\n $.datepicker._adjustDate(event.target, event.ctrlKey ? -$.datepicker._get(inst, \"stepBigMonths\") : -$.datepicker._get(inst, \"stepMonths\"), \"M\");\n break;\n // previous month/year on page up/+ ctrl\n case 34:\n $.datepicker._adjustDate(event.target, event.ctrlKey ? +$.datepicker._get(inst, \"stepBigMonths\") : +$.datepicker._get(inst, \"stepMonths\"), \"M\");\n break;\n // next month/year on page down/+ ctrl\n case 35:\n if (event.ctrlKey || event.metaKey) {\n $.datepicker._clearDate(event.target);\n }\n handled = event.ctrlKey || event.metaKey;\n break;\n // clear on ctrl or command +end\n case 36:\n if (event.ctrlKey || event.metaKey) {\n $.datepicker._gotoToday(event.target);\n }\n handled = event.ctrlKey || event.metaKey;\n break;\n // current on ctrl or command +home\n case 37:\n if (event.ctrlKey || event.metaKey) {\n $.datepicker._adjustDate(event.target, isRTL ? +1 : -1, \"D\");\n }\n handled = event.ctrlKey || event.metaKey;\n\n // -1 day on ctrl or command +left\n if (event.originalEvent.altKey) {\n $.datepicker._adjustDate(event.target, event.ctrlKey ? -$.datepicker._get(inst, \"stepBigMonths\") : -$.datepicker._get(inst, \"stepMonths\"), \"M\");\n }\n\n // next month/year on alt +left on Mac\n break;\n case 38:\n if (event.ctrlKey || event.metaKey) {\n $.datepicker._adjustDate(event.target, -7, \"D\");\n }\n handled = event.ctrlKey || event.metaKey;\n break;\n // -1 week on ctrl or command +up\n case 39:\n if (event.ctrlKey || event.metaKey) {\n $.datepicker._adjustDate(event.target, isRTL ? -1 : +1, \"D\");\n }\n handled = event.ctrlKey || event.metaKey;\n\n // +1 day on ctrl or command +right\n if (event.originalEvent.altKey) {\n $.datepicker._adjustDate(event.target, event.ctrlKey ? +$.datepicker._get(inst, \"stepBigMonths\") : +$.datepicker._get(inst, \"stepMonths\"), \"M\");\n }\n\n // next month/year on alt +right\n break;\n case 40:\n if (event.ctrlKey || event.metaKey) {\n $.datepicker._adjustDate(event.target, +7, \"D\");\n }\n handled = event.ctrlKey || event.metaKey;\n break;\n // +1 week on ctrl or command +down\n default:\n handled = false;\n }\n } else if (event.keyCode === 36 && event.ctrlKey) {\n // display the date picker on ctrl+home\n $.datepicker._showDatepicker(this);\n } else {\n handled = false;\n }\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n },\n /* Filter entered characters - based on date format. */\n _doKeyPress: function (event) {\n var chars,\n chr,\n inst = $.datepicker._getInst(event.target);\n if ($.datepicker._get(inst, \"constrainInput\")) {\n chars = $.datepicker._possibleChars($.datepicker._get(inst, \"dateFormat\"));\n chr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode);\n return event.ctrlKey || event.metaKey || chr < \" \" || !chars || chars.indexOf(chr) > -1;\n }\n },\n /* Synchronise manual entry and field/alternate field. */\n _doKeyUp: function (event) {\n var date,\n inst = $.datepicker._getInst(event.target);\n if (inst.input.val() !== inst.lastVal) {\n try {\n date = $.datepicker.parseDate($.datepicker._get(inst, \"dateFormat\"), inst.input ? inst.input.val() : null, $.datepicker._getFormatConfig(inst));\n if (date) {\n // only if valid\n $.datepicker._setDateFromField(inst);\n $.datepicker._updateAlternate(inst);\n $.datepicker._updateDatepicker(inst);\n }\n } catch (err) {}\n }\n return true;\n },\n /* Pop-up the date picker for a given input field.\n * If false returned from beforeShow event handler do not show.\n * @param input element - the input field attached to the date picker or\n *\t\t\t\t\tevent - if triggered by focus\n */\n _showDatepicker: function (input) {\n input = input.target || input;\n if (input.nodeName.toLowerCase() !== \"input\") {\n // find from button/image trigger\n input = $(\"input\", input.parentNode)[0];\n }\n if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) {\n // already here\n return;\n }\n var inst, beforeShow, beforeShowSettings, isFixed, offset, showAnim, duration;\n inst = $.datepicker._getInst(input);\n if ($.datepicker._curInst && $.datepicker._curInst !== inst) {\n $.datepicker._curInst.dpDiv.stop(true, true);\n if (inst && $.datepicker._datepickerShowing) {\n $.datepicker._hideDatepicker($.datepicker._curInst.input[0]);\n }\n }\n beforeShow = $.datepicker._get(inst, \"beforeShow\");\n beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};\n if (beforeShowSettings === false) {\n return;\n }\n datepicker_extendRemove(inst.settings, beforeShowSettings);\n inst.lastVal = null;\n $.datepicker._lastInput = input;\n $.datepicker._setDateFromField(inst);\n if ($.datepicker._inDialog) {\n // hide cursor\n input.value = \"\";\n }\n if (!$.datepicker._pos) {\n // position below input\n $.datepicker._pos = $.datepicker._findPos(input);\n $.datepicker._pos[1] += input.offsetHeight; // add the height\n }\n isFixed = false;\n $(input).parents().each(function () {\n isFixed |= $(this).css(\"position\") === \"fixed\";\n return !isFixed;\n });\n offset = {\n left: $.datepicker._pos[0],\n top: $.datepicker._pos[1]\n };\n $.datepicker._pos = null;\n\n //to avoid flashes on Firefox\n inst.dpDiv.empty();\n\n // determine sizing offscreen\n inst.dpDiv.css({\n position: \"absolute\",\n display: \"block\",\n top: \"-1000px\"\n });\n $.datepicker._updateDatepicker(inst);\n\n // fix width for dynamic number of date pickers\n // and adjust position before showing\n offset = $.datepicker._checkOffset(inst, offset, isFixed);\n inst.dpDiv.css({\n position: $.datepicker._inDialog && $.blockUI ? \"static\" : isFixed ? \"fixed\" : \"absolute\",\n display: \"none\",\n left: offset.left + \"px\",\n top: offset.top + \"px\"\n });\n if (!inst.inline) {\n showAnim = $.datepicker._get(inst, \"showAnim\");\n duration = $.datepicker._get(inst, \"duration\");\n inst.dpDiv.css(\"z-index\", datepicker_getZindex($(input)) + 1);\n $.datepicker._datepickerShowing = true;\n if ($.effects && $.effects.effect[showAnim]) {\n inst.dpDiv.show(showAnim, $.datepicker._get(inst, \"showOptions\"), duration);\n } else {\n inst.dpDiv[showAnim || \"show\"](showAnim ? duration : null);\n }\n if ($.datepicker._shouldFocusInput(inst)) {\n inst.input.trigger(\"focus\");\n }\n $.datepicker._curInst = inst;\n }\n },\n /* Generate the date picker content. */\n _updateDatepicker: function (inst) {\n this.maxRows = 4; //Reset the max number of rows being displayed (see #7043)\n datepicker_instActive = inst; // for delegate hover events\n inst.dpDiv.empty().append(this._generateHTML(inst));\n this._attachHandlers(inst);\n var origyearshtml,\n numMonths = this._getNumberOfMonths(inst),\n cols = numMonths[1],\n width = 17,\n activeCell = inst.dpDiv.find(\".\" + this._dayOverClass + \" a\"),\n onUpdateDatepicker = $.datepicker._get(inst, \"onUpdateDatepicker\");\n if (activeCell.length > 0) {\n datepicker_handleMouseover.apply(activeCell.get(0));\n }\n inst.dpDiv.removeClass(\"ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4\").width(\"\");\n if (cols > 1) {\n inst.dpDiv.addClass(\"ui-datepicker-multi-\" + cols).css(\"width\", width * cols + \"em\");\n }\n inst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? \"add\" : \"remove\") + \"Class\"](\"ui-datepicker-multi\");\n inst.dpDiv[(this._get(inst, \"isRTL\") ? \"add\" : \"remove\") + \"Class\"](\"ui-datepicker-rtl\");\n if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput(inst)) {\n inst.input.trigger(\"focus\");\n }\n\n // Deffered render of the years select (to avoid flashes on Firefox)\n if (inst.yearshtml) {\n origyearshtml = inst.yearshtml;\n setTimeout(function () {\n //assure that inst.yearshtml didn't change.\n if (origyearshtml === inst.yearshtml && inst.yearshtml) {\n inst.dpDiv.find(\"select.ui-datepicker-year\").first().replaceWith(inst.yearshtml);\n }\n origyearshtml = inst.yearshtml = null;\n }, 0);\n }\n if (onUpdateDatepicker) {\n onUpdateDatepicker.apply(inst.input ? inst.input[0] : null, [inst]);\n }\n },\n _shouldFocusInput: function (inst) {\n return inst.input && inst.input.is(\":visible\") && !inst.input.is(\":disabled\");\n },\n /* Check positioning to remain on screen. */\n _checkOffset: function (inst, offset, isFixed) {\n var dpWidth = inst.dpDiv.outerWidth(),\n dpHeight = inst.dpDiv.outerHeight(),\n inputWidth = inst.input ? inst.input.outerWidth() : 0,\n inputHeight = inst.input ? inst.input.outerHeight() : 0,\n viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()),\n viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());\n offset.left -= this._get(inst, \"isRTL\") ? dpWidth - inputWidth : 0;\n offset.left -= isFixed && offset.left === inst.input.offset().left ? $(document).scrollLeft() : 0;\n offset.top -= isFixed && offset.top === inst.input.offset().top + inputHeight ? $(document).scrollTop() : 0;\n\n // Now check if datepicker is showing outside window viewport - move to a better place if so.\n offset.left -= Math.min(offset.left, offset.left + dpWidth > viewWidth && viewWidth > dpWidth ? Math.abs(offset.left + dpWidth - viewWidth) : 0);\n offset.top -= Math.min(offset.top, offset.top + dpHeight > viewHeight && viewHeight > dpHeight ? Math.abs(dpHeight + inputHeight) : 0);\n return offset;\n },\n /* Find an object's position on the screen. */\n _findPos: function (obj) {\n var position,\n inst = this._getInst(obj),\n isRTL = this._get(inst, \"isRTL\");\n while (obj && (obj.type === \"hidden\" || obj.nodeType !== 1 || $.expr.pseudos.hidden(obj))) {\n obj = obj[isRTL ? \"previousSibling\" : \"nextSibling\"];\n }\n position = $(obj).offset();\n return [position.left, position.top];\n },\n /* Hide the date picker from view.\n * @param input element - the input field attached to the date picker\n */\n _hideDatepicker: function (input) {\n var showAnim,\n duration,\n postProcess,\n onClose,\n inst = this._curInst;\n if (!inst || input && inst !== $.data(input, \"datepicker\")) {\n return;\n }\n if (this._datepickerShowing) {\n showAnim = this._get(inst, \"showAnim\");\n duration = this._get(inst, \"duration\");\n postProcess = function () {\n $.datepicker._tidyDialog(inst);\n };\n if ($.effects && $.effects.effect[showAnim]) {\n inst.dpDiv.hide(showAnim, $.datepicker._get(inst, \"showOptions\"), duration, postProcess);\n } else {\n inst.dpDiv[showAnim === \"slideDown\" ? \"slideUp\" : showAnim === \"fadeIn\" ? \"fadeOut\" : \"hide\"](showAnim ? duration : null, postProcess);\n }\n if (!showAnim) {\n postProcess();\n }\n this._datepickerShowing = false;\n onClose = this._get(inst, \"onClose\");\n if (onClose) {\n onClose.apply(inst.input ? inst.input[0] : null, [inst.input ? inst.input.val() : \"\", inst]);\n }\n this._lastInput = null;\n if (this._inDialog) {\n this._dialogInput.css({\n position: \"absolute\",\n left: \"0\",\n top: \"-100px\"\n });\n if ($.blockUI) {\n $.unblockUI();\n $(\"body\").append(this.dpDiv);\n }\n }\n this._inDialog = false;\n }\n },\n /* Tidy up after a dialog display. */\n _tidyDialog: function (inst) {\n inst.dpDiv.removeClass(this._dialogClass).off(\".ui-datepicker-calendar\");\n },\n /* Close date picker if clicked elsewhere. */\n _checkExternalClick: function (event) {\n if (!$.datepicker._curInst) {\n return;\n }\n var $target = $(event.target),\n inst = $.datepicker._getInst($target[0]);\n if ($target[0].id !== $.datepicker._mainDivId && $target.parents(\"#\" + $.datepicker._mainDivId).length === 0 && !$target.hasClass($.datepicker.markerClassName) && !$target.closest(\".\" + $.datepicker._triggerClass).length && $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) || $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst) {\n $.datepicker._hideDatepicker();\n }\n },\n /* Adjust one of the date sub-fields. */\n _adjustDate: function (id, offset, period) {\n var target = $(id),\n inst = this._getInst(target[0]);\n if (this._isDisabledDatepicker(target[0])) {\n return;\n }\n this._adjustInstDate(inst, offset, period);\n this._updateDatepicker(inst);\n },\n /* Action for current link. */\n _gotoToday: function (id) {\n var date,\n target = $(id),\n inst = this._getInst(target[0]);\n if (this._get(inst, \"gotoCurrent\") && inst.currentDay) {\n inst.selectedDay = inst.currentDay;\n inst.drawMonth = inst.selectedMonth = inst.currentMonth;\n inst.drawYear = inst.selectedYear = inst.currentYear;\n } else {\n date = new Date();\n inst.selectedDay = date.getDate();\n inst.drawMonth = inst.selectedMonth = date.getMonth();\n inst.drawYear = inst.selectedYear = date.getFullYear();\n }\n this._notifyChange(inst);\n this._adjustDate(target);\n },\n /* Action for selecting a new month/year. */\n _selectMonthYear: function (id, select, period) {\n var target = $(id),\n inst = this._getInst(target[0]);\n inst[\"selected\" + (period === \"M\" ? \"Month\" : \"Year\")] = inst[\"draw\" + (period === \"M\" ? \"Month\" : \"Year\")] = parseInt(select.options[select.selectedIndex].value, 10);\n this._notifyChange(inst);\n this._adjustDate(target);\n },\n /* Action for selecting a day. */\n _selectDay: function (id, month, year, td) {\n var inst,\n target = $(id);\n if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {\n return;\n }\n inst = this._getInst(target[0]);\n inst.selectedDay = inst.currentDay = parseInt($(\"a\", td).attr(\"data-date\"));\n inst.selectedMonth = inst.currentMonth = month;\n inst.selectedYear = inst.currentYear = year;\n this._selectDate(id, this._formatDate(inst, inst.currentDay, inst.currentMonth, inst.currentYear));\n },\n /* Erase the input field and hide the date picker. */\n _clearDate: function (id) {\n var target = $(id);\n this._selectDate(target, \"\");\n },\n /* Update the input field with the selected date. */\n _selectDate: function (id, dateStr) {\n var onSelect,\n target = $(id),\n inst = this._getInst(target[0]);\n dateStr = dateStr != null ? dateStr : this._formatDate(inst);\n if (inst.input) {\n inst.input.val(dateStr);\n }\n this._updateAlternate(inst);\n onSelect = this._get(inst, \"onSelect\");\n if (onSelect) {\n onSelect.apply(inst.input ? inst.input[0] : null, [dateStr, inst]); // trigger custom callback\n } else if (inst.input) {\n inst.input.trigger(\"change\"); // fire the change event\n }\n if (inst.inline) {\n this._updateDatepicker(inst);\n } else {\n this._hideDatepicker();\n this._lastInput = inst.input[0];\n if (typeof inst.input[0] !== \"object\") {\n inst.input.trigger(\"focus\"); // restore focus\n }\n this._lastInput = null;\n }\n },\n /* Update any alternate field to synchronise with the main field. */\n _updateAlternate: function (inst) {\n var altFormat,\n date,\n dateStr,\n altField = this._get(inst, \"altField\");\n if (altField) {\n // update alternate field too\n altFormat = this._get(inst, \"altFormat\") || this._get(inst, \"dateFormat\");\n date = this._getDate(inst);\n dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));\n $(document).find(altField).val(dateStr);\n }\n },\n /* Set as beforeShowDay function to prevent selection of weekends.\n * @param date Date - the date to customise\n * @return [boolean, string] - is this date selectable?, what is its CSS class?\n */\n noWeekends: function (date) {\n var day = date.getDay();\n return [day > 0 && day < 6, \"\"];\n },\n /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.\n * @param date Date - the date to get the week for\n * @return number - the number of the week within the year that contains this date\n */\n iso8601Week: function (date) {\n var time,\n checkDate = new Date(date.getTime());\n\n // Find Thursday of this week starting on Monday\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n time = checkDate.getTime();\n checkDate.setMonth(0); // Compare with Jan 1\n checkDate.setDate(1);\n return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\n },\n /* Parse a string value into a date object.\n * See formatDate below for the possible formats.\n *\n * @param format string - the expected format of the date\n * @param value string - the date in the above format\n * @param settings Object - attributes include:\n *\t\t\t\t\tshortYearCutoff number - the cutoff year for determining the century (optional)\n *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\n *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\n *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\n *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\n * @return Date - the extracted date value or null if value is blank\n */\n parseDate: function (format, value, settings) {\n if (format == null || value == null) {\n throw \"Invalid arguments\";\n }\n value = typeof value === \"object\" ? value.toString() : value + \"\";\n if (value === \"\") {\n return null;\n }\n var iFormat,\n dim,\n extra,\n iValue = 0,\n shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff,\n shortYearCutoff = typeof shortYearCutoffTemp !== \"string\" ? shortYearCutoffTemp : new Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10),\n dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,\n dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,\n monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,\n monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,\n year = -1,\n month = -1,\n day = -1,\n doy = -1,\n literal = false,\n date,\n // Check whether a format character is doubled\n lookAhead = function (match) {\n var matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;\n if (matches) {\n iFormat++;\n }\n return matches;\n },\n // Extract a number from the string value\n getNumber = function (match) {\n var isDoubled = lookAhead(match),\n size = match === \"@\" ? 14 : match === \"!\" ? 20 : match === \"y\" && isDoubled ? 4 : match === \"o\" ? 3 : 2,\n minSize = match === \"y\" ? size : 1,\n digits = new RegExp(\"^\\\\d{\" + minSize + \",\" + size + \"}\"),\n num = value.substring(iValue).match(digits);\n if (!num) {\n throw \"Missing number at position \" + iValue;\n }\n iValue += num[0].length;\n return parseInt(num[0], 10);\n },\n // Extract a name from the string value and convert to an index\n getName = function (match, shortNames, longNames) {\n var index = -1,\n names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {\n return [[k, v]];\n }).sort(function (a, b) {\n return -(a[1].length - b[1].length);\n });\n $.each(names, function (i, pair) {\n var name = pair[1];\n if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {\n index = pair[0];\n iValue += name.length;\n return false;\n }\n });\n if (index !== -1) {\n return index + 1;\n } else {\n throw \"Unknown name at position \" + iValue;\n }\n },\n // Confirm that a literal character matches the string value\n checkLiteral = function () {\n if (value.charAt(iValue) !== format.charAt(iFormat)) {\n throw \"Unexpected literal at position \" + iValue;\n }\n iValue++;\n };\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n literal = false;\n } else {\n checkLiteral();\n }\n } else {\n switch (format.charAt(iFormat)) {\n case \"d\":\n day = getNumber(\"d\");\n break;\n case \"D\":\n getName(\"D\", dayNamesShort, dayNames);\n break;\n case \"o\":\n doy = getNumber(\"o\");\n break;\n case \"m\":\n month = getNumber(\"m\");\n break;\n case \"M\":\n month = getName(\"M\", monthNamesShort, monthNames);\n break;\n case \"y\":\n year = getNumber(\"y\");\n break;\n case \"@\":\n date = new Date(getNumber(\"@\"));\n year = date.getFullYear();\n month = date.getMonth() + 1;\n day = date.getDate();\n break;\n case \"!\":\n date = new Date((getNumber(\"!\") - this._ticksTo1970) / 10000);\n year = date.getFullYear();\n month = date.getMonth() + 1;\n day = date.getDate();\n break;\n case \"'\":\n if (lookAhead(\"'\")) {\n checkLiteral();\n } else {\n literal = true;\n }\n break;\n default:\n checkLiteral();\n }\n }\n }\n if (iValue < value.length) {\n extra = value.substr(iValue);\n if (!/^\\s+/.test(extra)) {\n throw \"Extra/unparsed characters found in date: \" + extra;\n }\n }\n if (year === -1) {\n year = new Date().getFullYear();\n } else if (year < 100) {\n year += new Date().getFullYear() - new Date().getFullYear() % 100 + (year <= shortYearCutoff ? 0 : -100);\n }\n if (doy > -1) {\n month = 1;\n day = doy;\n do {\n dim = this._getDaysInMonth(year, month - 1);\n if (day <= dim) {\n break;\n }\n month++;\n day -= dim;\n } while (true);\n }\n date = this._daylightSavingAdjust(new Date(year, month - 1, day));\n if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {\n throw \"Invalid date\"; // E.g. 31/02/00\n }\n return date;\n },\n /* Standard date formats. */\n ATOM: \"yy-mm-dd\",\n // RFC 3339 (ISO 8601)\n COOKIE: \"D, dd M yy\",\n ISO_8601: \"yy-mm-dd\",\n RFC_822: \"D, d M y\",\n RFC_850: \"DD, dd-M-y\",\n RFC_1036: \"D, d M y\",\n RFC_1123: \"D, d M yy\",\n RFC_2822: \"D, d M yy\",\n RSS: \"D, d M y\",\n // RFC 822\n TICKS: \"!\",\n TIMESTAMP: \"@\",\n W3C: \"yy-mm-dd\",\n // ISO 8601\n\n _ticksTo1970: ((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000,\n /* Format a date object into a string value.\n * The format can be combinations of the following:\n * d - day of month (no leading zero)\n * dd - day of month (two digit)\n * o - day of year (no leading zeros)\n * oo - day of year (three digit)\n * D - day name short\n * DD - day name long\n * m - month of year (no leading zero)\n * mm - month of year (two digit)\n * M - month name short\n * MM - month name long\n * y - year (two digit)\n * yy - year (four digit)\n * @ - Unix timestamp (ms since 01/01/1970)\n * ! - Windows ticks (100ns since 01/01/0001)\n * \"...\" - literal text\n * '' - single quote\n *\n * @param format string - the desired format of the date\n * @param date Date - the date value to format\n * @param settings Object - attributes include:\n *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\n *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\n *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\n *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\n * @return string - the date in the above format\n */\n formatDate: function (format, date, settings) {\n if (!date) {\n return \"\";\n }\n var iFormat,\n dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,\n dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,\n monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,\n monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,\n // Check whether a format character is doubled\n lookAhead = function (match) {\n var matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;\n if (matches) {\n iFormat++;\n }\n return matches;\n },\n // Format a number, with leading zero if necessary\n formatNumber = function (match, value, len) {\n var num = \"\" + value;\n if (lookAhead(match)) {\n while (num.length < len) {\n num = \"0\" + num;\n }\n }\n return num;\n },\n // Format a name, short or long as requested\n formatName = function (match, value, shortNames, longNames) {\n return lookAhead(match) ? longNames[value] : shortNames[value];\n },\n output = \"\",\n literal = false;\n if (date) {\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n literal = false;\n } else {\n output += format.charAt(iFormat);\n }\n } else {\n switch (format.charAt(iFormat)) {\n case \"d\":\n output += formatNumber(\"d\", date.getDate(), 2);\n break;\n case \"D\":\n output += formatName(\"D\", date.getDay(), dayNamesShort, dayNames);\n break;\n case \"o\":\n output += formatNumber(\"o\", Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n break;\n case \"m\":\n output += formatNumber(\"m\", date.getMonth() + 1, 2);\n break;\n case \"M\":\n output += formatName(\"M\", date.getMonth(), monthNamesShort, monthNames);\n break;\n case \"y\":\n output += lookAhead(\"y\") ? date.getFullYear() : (date.getFullYear() % 100 < 10 ? \"0\" : \"\") + date.getFullYear() % 100;\n break;\n case \"@\":\n output += date.getTime();\n break;\n case \"!\":\n output += date.getTime() * 10000 + this._ticksTo1970;\n break;\n case \"'\":\n if (lookAhead(\"'\")) {\n output += \"'\";\n } else {\n literal = true;\n }\n break;\n default:\n output += format.charAt(iFormat);\n }\n }\n }\n }\n return output;\n },\n /* Extract all possible characters from the date format. */\n _possibleChars: function (format) {\n var iFormat,\n chars = \"\",\n literal = false,\n // Check whether a format character is doubled\n lookAhead = function (match) {\n var matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;\n if (matches) {\n iFormat++;\n }\n return matches;\n };\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n literal = false;\n } else {\n chars += format.charAt(iFormat);\n }\n } else {\n switch (format.charAt(iFormat)) {\n case \"d\":\n case \"m\":\n case \"y\":\n case \"@\":\n chars += \"0123456789\";\n break;\n case \"D\":\n case \"M\":\n return null;\n // Accept anything\n case \"'\":\n if (lookAhead(\"'\")) {\n chars += \"'\";\n } else {\n literal = true;\n }\n break;\n default:\n chars += format.charAt(iFormat);\n }\n }\n }\n return chars;\n },\n /* Get a setting value, defaulting if necessary. */\n _get: function (inst, name) {\n return inst.settings[name] !== undefined ? inst.settings[name] : this._defaults[name];\n },\n /* Parse existing date and initialise date picker. */\n _setDateFromField: function (inst, noDefault) {\n if (inst.input.val() === inst.lastVal) {\n return;\n }\n var dateFormat = this._get(inst, \"dateFormat\"),\n dates = inst.lastVal = inst.input ? inst.input.val() : null,\n defaultDate = this._getDefaultDate(inst),\n date = defaultDate,\n settings = this._getFormatConfig(inst);\n try {\n date = this.parseDate(dateFormat, dates, settings) || defaultDate;\n } catch (event) {\n dates = noDefault ? \"\" : dates;\n }\n inst.selectedDay = date.getDate();\n inst.drawMonth = inst.selectedMonth = date.getMonth();\n inst.drawYear = inst.selectedYear = date.getFullYear();\n inst.currentDay = dates ? date.getDate() : 0;\n inst.currentMonth = dates ? date.getMonth() : 0;\n inst.currentYear = dates ? date.getFullYear() : 0;\n this._adjustInstDate(inst);\n },\n /* Retrieve the default date shown on opening. */\n _getDefaultDate: function (inst) {\n return this._restrictMinMax(inst, this._determineDate(inst, this._get(inst, \"defaultDate\"), new Date()));\n },\n /* A date may be specified as an exact value or a relative one. */\n _determineDate: function (inst, date, defaultDate) {\n var offsetNumeric = function (offset) {\n var date = new Date();\n date.setDate(date.getDate() + offset);\n return date;\n },\n offsetString = function (offset) {\n try {\n return $.datepicker.parseDate($.datepicker._get(inst, \"dateFormat\"), offset, $.datepicker._getFormatConfig(inst));\n } catch (e) {\n\n // Ignore\n }\n var date = (offset.toLowerCase().match(/^c/) ? $.datepicker._getDate(inst) : null) || new Date(),\n year = date.getFullYear(),\n month = date.getMonth(),\n day = date.getDate(),\n pattern = /([+\\-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g,\n matches = pattern.exec(offset);\n while (matches) {\n switch (matches[2] || \"d\") {\n case \"d\":\n case \"D\":\n day += parseInt(matches[1], 10);\n break;\n case \"w\":\n case \"W\":\n day += parseInt(matches[1], 10) * 7;\n break;\n case \"m\":\n case \"M\":\n month += parseInt(matches[1], 10);\n day = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n break;\n case \"y\":\n case \"Y\":\n year += parseInt(matches[1], 10);\n day = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n break;\n }\n matches = pattern.exec(offset);\n }\n return new Date(year, month, day);\n },\n newDate = date == null || date === \"\" ? defaultDate : typeof date === \"string\" ? offsetString(date) : typeof date === \"number\" ? isNaN(date) ? defaultDate : offsetNumeric(date) : new Date(date.getTime());\n newDate = newDate && newDate.toString() === \"Invalid Date\" ? defaultDate : newDate;\n if (newDate) {\n newDate.setHours(0);\n newDate.setMinutes(0);\n newDate.setSeconds(0);\n newDate.setMilliseconds(0);\n }\n return this._daylightSavingAdjust(newDate);\n },\n /* Handle switch to/from daylight saving.\n * Hours may be non-zero on daylight saving cut-over:\n * > 12 when midnight changeover, but then cannot generate\n * midnight datetime, so jump to 1AM, otherwise reset.\n * @param date (Date) the date to check\n * @return (Date) the corrected date\n */\n _daylightSavingAdjust: function (date) {\n if (!date) {\n return null;\n }\n date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n return date;\n },\n /* Set the date(s) directly. */\n _setDate: function (inst, date, noChange) {\n var clear = !date,\n origMonth = inst.selectedMonth,\n origYear = inst.selectedYear,\n newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));\n inst.selectedDay = inst.currentDay = newDate.getDate();\n inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();\n inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();\n if ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) {\n this._notifyChange(inst);\n }\n this._adjustInstDate(inst);\n if (inst.input) {\n inst.input.val(clear ? \"\" : this._formatDate(inst));\n }\n },\n /* Retrieve the date(s) directly. */\n _getDate: function (inst) {\n var startDate = !inst.currentYear || inst.input && inst.input.val() === \"\" ? null : this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay));\n return startDate;\n },\n /* Attach the onxxx handlers. These are declared statically so\n * they work with static code transformers like Caja.\n */\n _attachHandlers: function (inst) {\n var stepMonths = this._get(inst, \"stepMonths\"),\n id = \"#\" + inst.id.replace(/\\\\\\\\/g, \"\\\\\");\n inst.dpDiv.find(\"[data-handler]\").map(function () {\n var handler = {\n prev: function () {\n $.datepicker._adjustDate(id, -stepMonths, \"M\");\n },\n next: function () {\n $.datepicker._adjustDate(id, +stepMonths, \"M\");\n },\n hide: function () {\n $.datepicker._hideDatepicker();\n },\n today: function () {\n $.datepicker._gotoToday(id);\n },\n selectDay: function () {\n $.datepicker._selectDay(id, +this.getAttribute(\"data-month\"), +this.getAttribute(\"data-year\"), this);\n return false;\n },\n selectMonth: function () {\n $.datepicker._selectMonthYear(id, this, \"M\");\n return false;\n },\n selectYear: function () {\n $.datepicker._selectMonthYear(id, this, \"Y\");\n return false;\n }\n };\n $(this).on(this.getAttribute(\"data-event\"), handler[this.getAttribute(\"data-handler\")]);\n });\n },\n /* Generate the HTML for the current state of the date picker. */\n _generateHTML: function (inst) {\n var maxDraw,\n prevText,\n prev,\n nextText,\n next,\n currentText,\n gotoDate,\n controls,\n buttonPanel,\n firstDay,\n showWeek,\n dayNames,\n dayNamesMin,\n monthNames,\n monthNamesShort,\n beforeShowDay,\n showOtherMonths,\n selectOtherMonths,\n defaultDate,\n html,\n dow,\n row,\n group,\n col,\n selectedDate,\n cornerClass,\n calender,\n thead,\n day,\n daysInMonth,\n leadDays,\n curRows,\n numRows,\n printDate,\n dRow,\n tbody,\n daySettings,\n otherMonth,\n unselectable,\n tempDate = new Date(),\n today = this._daylightSavingAdjust(new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())),\n // clear time\n isRTL = this._get(inst, \"isRTL\"),\n showButtonPanel = this._get(inst, \"showButtonPanel\"),\n hideIfNoPrevNext = this._get(inst, \"hideIfNoPrevNext\"),\n navigationAsDateFormat = this._get(inst, \"navigationAsDateFormat\"),\n numMonths = this._getNumberOfMonths(inst),\n showCurrentAtPos = this._get(inst, \"showCurrentAtPos\"),\n stepMonths = this._get(inst, \"stepMonths\"),\n isMultiMonth = numMonths[0] !== 1 || numMonths[1] !== 1,\n currentDate = this._daylightSavingAdjust(!inst.currentDay ? new Date(9999, 9, 9) : new Date(inst.currentYear, inst.currentMonth, inst.currentDay)),\n minDate = this._getMinMaxDate(inst, \"min\"),\n maxDate = this._getMinMaxDate(inst, \"max\"),\n drawMonth = inst.drawMonth - showCurrentAtPos,\n drawYear = inst.drawYear;\n if (drawMonth < 0) {\n drawMonth += 12;\n drawYear--;\n }\n if (maxDate) {\n maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(), maxDate.getMonth() - numMonths[0] * numMonths[1] + 1, maxDate.getDate()));\n maxDraw = minDate && maxDraw < minDate ? minDate : maxDraw;\n while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {\n drawMonth--;\n if (drawMonth < 0) {\n drawMonth = 11;\n drawYear--;\n }\n }\n }\n inst.drawMonth = drawMonth;\n inst.drawYear = drawYear;\n prevText = this._get(inst, \"prevText\");\n prevText = !navigationAsDateFormat ? prevText : this.formatDate(prevText, this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)), this._getFormatConfig(inst));\n if (this._canAdjustMonth(inst, -1, drawYear, drawMonth)) {\n prev = $(\"<a>\").attr({\n \"class\": \"ui-datepicker-prev ui-corner-all\",\n \"data-handler\": \"prev\",\n \"data-event\": \"click\",\n title: prevText\n }).append($(\"<span>\").addClass(\"ui-icon ui-icon-circle-triangle-\" + (isRTL ? \"e\" : \"w\")).text(prevText))[0].outerHTML;\n } else if (hideIfNoPrevNext) {\n prev = \"\";\n } else {\n prev = $(\"<a>\").attr({\n \"class\": \"ui-datepicker-prev ui-corner-all ui-state-disabled\",\n title: prevText\n }).append($(\"<span>\").addClass(\"ui-icon ui-icon-circle-triangle-\" + (isRTL ? \"e\" : \"w\")).text(prevText))[0].outerHTML;\n }\n nextText = this._get(inst, \"nextText\");\n nextText = !navigationAsDateFormat ? nextText : this.formatDate(nextText, this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)), this._getFormatConfig(inst));\n if (this._canAdjustMonth(inst, +1, drawYear, drawMonth)) {\n next = $(\"<a>\").attr({\n \"class\": \"ui-datepicker-next ui-corner-all\",\n \"data-handler\": \"next\",\n \"data-event\": \"click\",\n title: nextText\n }).append($(\"<span>\").addClass(\"ui-icon ui-icon-circle-triangle-\" + (isRTL ? \"w\" : \"e\")).text(nextText))[0].outerHTML;\n } else if (hideIfNoPrevNext) {\n next = \"\";\n } else {\n next = $(\"<a>\").attr({\n \"class\": \"ui-datepicker-next ui-corner-all ui-state-disabled\",\n title: nextText\n }).append($(\"<span>\").attr(\"class\", \"ui-icon ui-icon-circle-triangle-\" + (isRTL ? \"w\" : \"e\")).text(nextText))[0].outerHTML;\n }\n currentText = this._get(inst, \"currentText\");\n gotoDate = this._get(inst, \"gotoCurrent\") && inst.currentDay ? currentDate : today;\n currentText = !navigationAsDateFormat ? currentText : this.formatDate(currentText, gotoDate, this._getFormatConfig(inst));\n controls = \"\";\n if (!inst.inline) {\n controls = $(\"<button>\").attr({\n type: \"button\",\n \"class\": \"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all\",\n \"data-handler\": \"hide\",\n \"data-event\": \"click\"\n }).text(this._get(inst, \"closeText\"))[0].outerHTML;\n }\n buttonPanel = \"\";\n if (showButtonPanel) {\n buttonPanel = $(\"<div class='ui-datepicker-buttonpane ui-widget-content'>\").append(isRTL ? controls : \"\").append(this._isInRange(inst, gotoDate) ? $(\"<button>\").attr({\n type: \"button\",\n \"class\": \"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all\",\n \"data-handler\": \"today\",\n \"data-event\": \"click\"\n }).text(currentText) : \"\").append(isRTL ? \"\" : controls)[0].outerHTML;\n }\n firstDay = parseInt(this._get(inst, \"firstDay\"), 10);\n firstDay = isNaN(firstDay) ? 0 : firstDay;\n showWeek = this._get(inst, \"showWeek\");\n dayNames = this._get(inst, \"dayNames\");\n dayNamesMin = this._get(inst, \"dayNamesMin\");\n monthNames = this._get(inst, \"monthNames\");\n monthNamesShort = this._get(inst, \"monthNamesShort\");\n beforeShowDay = this._get(inst, \"beforeShowDay\");\n showOtherMonths = this._get(inst, \"showOtherMonths\");\n selectOtherMonths = this._get(inst, \"selectOtherMonths\");\n defaultDate = this._getDefaultDate(inst);\n html = \"\";\n for (row = 0; row < numMonths[0]; row++) {\n group = \"\";\n this.maxRows = 4;\n for (col = 0; col < numMonths[1]; col++) {\n selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));\n cornerClass = \" ui-corner-all\";\n calender = \"\";\n if (isMultiMonth) {\n calender += \"<div class='ui-datepicker-group\";\n if (numMonths[1] > 1) {\n switch (col) {\n case 0:\n calender += \" ui-datepicker-group-first\";\n cornerClass = \" ui-corner-\" + (isRTL ? \"right\" : \"left\");\n break;\n case numMonths[1] - 1:\n calender += \" ui-datepicker-group-last\";\n cornerClass = \" ui-corner-\" + (isRTL ? \"left\" : \"right\");\n break;\n default:\n calender += \" ui-datepicker-group-middle\";\n cornerClass = \"\";\n break;\n }\n }\n calender += \"'>\";\n }\n calender += \"<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix\" + cornerClass + \"'>\" + (/all|left/.test(cornerClass) && row === 0 ? isRTL ? next : prev : \"\") + (/all|right/.test(cornerClass) && row === 0 ? isRTL ? prev : next : \"\") + this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate, row > 0 || col > 0, monthNames, monthNamesShort) +\n // draw month headers\n \"</div><table class='ui-datepicker-calendar'><thead>\" + \"<tr>\";\n thead = showWeek ? \"<th class='ui-datepicker-week-col'>\" + this._get(inst, \"weekHeader\") + \"</th>\" : \"\";\n for (dow = 0; dow < 7; dow++) {\n // days of the week\n day = (dow + firstDay) % 7;\n thead += \"<th scope='col'\" + ((dow + firstDay + 6) % 7 >= 5 ? \" class='ui-datepicker-week-end'\" : \"\") + \">\" + \"<span title='\" + dayNames[day] + \"'>\" + dayNamesMin[day] + \"</span></th>\";\n }\n calender += thead + \"</tr></thead><tbody>\";\n daysInMonth = this._getDaysInMonth(drawYear, drawMonth);\n if (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) {\n inst.selectedDay = Math.min(inst.selectedDay, daysInMonth);\n }\n leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;\n curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate\n numRows = isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows; //If multiple months, use the higher number of rows (see #7043)\n this.maxRows = numRows;\n printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));\n for (dRow = 0; dRow < numRows; dRow++) {\n // create date picker rows\n calender += \"<tr>\";\n tbody = !showWeek ? \"\" : \"<td class='ui-datepicker-week-col'>\" + this._get(inst, \"calculateWeek\")(printDate) + \"</td>\";\n for (dow = 0; dow < 7; dow++) {\n // create date picker days\n daySettings = beforeShowDay ? beforeShowDay.apply(inst.input ? inst.input[0] : null, [printDate]) : [true, \"\"];\n otherMonth = printDate.getMonth() !== drawMonth;\n unselectable = otherMonth && !selectOtherMonths || !daySettings[0] || minDate && printDate < minDate || maxDate && printDate > maxDate;\n tbody += \"<td class='\" + ((dow + firstDay + 6) % 7 >= 5 ? \" ui-datepicker-week-end\" : \"\") + (\n // highlight weekends\n otherMonth ? \" ui-datepicker-other-month\" : \"\") + (\n // highlight days from other months\n printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent ||\n // user pressed key\n defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime() ?\n // or defaultDate is current printedDate and defaultDate is selectedDate\n \" \" + this._dayOverClass : \"\") + (\n // highlight selected day\n unselectable ? \" \" + this._unselectableClass + \" ui-state-disabled\" : \"\") + (\n // highlight unselectable days\n otherMonth && !showOtherMonths ? \"\" : \" \" + daySettings[1] + (\n // highlight custom dates\n printDate.getTime() === currentDate.getTime() ? \" \" + this._currentClass : \"\") + (\n // highlight selected day\n printDate.getTime() === today.getTime() ? \" ui-datepicker-today\" : \"\")) + \"'\" + (\n // highlight today (if different)\n (!otherMonth || showOtherMonths) && daySettings[2] ? \" title='\" + daySettings[2].replace(/'/g, \"'\") + \"'\" : \"\") + (\n // cell title\n unselectable ? \"\" : \" data-handler='selectDay' data-event='click' data-month='\" + printDate.getMonth() + \"' data-year='\" + printDate.getFullYear() + \"'\") + \">\" + (\n // actions\n otherMonth && !showOtherMonths ? \" \" :\n // display for other months\n unselectable ? \"<span class='ui-state-default'>\" + printDate.getDate() + \"</span>\" : \"<a class='ui-state-default\" + (printDate.getTime() === today.getTime() ? \" ui-state-highlight\" : \"\") + (printDate.getTime() === currentDate.getTime() ? \" ui-state-active\" : \"\") + (\n // highlight selected day\n otherMonth ? \" ui-priority-secondary\" : \"\") +\n // distinguish dates from other months\n \"' href='#' aria-current='\" + (printDate.getTime() === currentDate.getTime() ? \"true\" : \"false\") +\n // mark date as selected for screen reader\n \"' data-date='\" + printDate.getDate() +\n // store date as data\n \"'>\" + printDate.getDate() + \"</a>\") + \"</td>\"; // display selectable date\n printDate.setDate(printDate.getDate() + 1);\n printDate = this._daylightSavingAdjust(printDate);\n }\n calender += tbody + \"</tr>\";\n }\n drawMonth++;\n if (drawMonth > 11) {\n drawMonth = 0;\n drawYear++;\n }\n calender += \"</tbody></table>\" + (isMultiMonth ? \"</div>\" + (numMonths[0] > 0 && col === numMonths[1] - 1 ? \"<div class='ui-datepicker-row-break'></div>\" : \"\") : \"\");\n group += calender;\n }\n html += group;\n }\n html += buttonPanel;\n inst._keyEvent = false;\n return html;\n },\n /* Generate the month and year header. */\n _generateMonthYearHeader: function (inst, drawMonth, drawYear, minDate, maxDate, secondary, monthNames, monthNamesShort) {\n var inMinYear,\n inMaxYear,\n month,\n years,\n thisYear,\n determineYear,\n year,\n endYear,\n changeMonth = this._get(inst, \"changeMonth\"),\n changeYear = this._get(inst, \"changeYear\"),\n showMonthAfterYear = this._get(inst, \"showMonthAfterYear\"),\n selectMonthLabel = this._get(inst, \"selectMonthLabel\"),\n selectYearLabel = this._get(inst, \"selectYearLabel\"),\n html = \"<div class='ui-datepicker-title'>\",\n monthHtml = \"\";\n\n // Month selection\n if (secondary || !changeMonth) {\n monthHtml += \"<span class='ui-datepicker-month'>\" + monthNames[drawMonth] + \"</span>\";\n } else {\n inMinYear = minDate && minDate.getFullYear() === drawYear;\n inMaxYear = maxDate && maxDate.getFullYear() === drawYear;\n monthHtml += \"<select class='ui-datepicker-month' aria-label='\" + selectMonthLabel + \"' data-handler='selectMonth' data-event='change'>\";\n for (month = 0; month < 12; month++) {\n if ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) {\n monthHtml += \"<option value='\" + month + \"'\" + (month === drawMonth ? \" selected='selected'\" : \"\") + \">\" + monthNamesShort[month] + \"</option>\";\n }\n }\n monthHtml += \"</select>\";\n }\n if (!showMonthAfterYear) {\n html += monthHtml + (secondary || !(changeMonth && changeYear) ? \" \" : \"\");\n }\n\n // Year selection\n if (!inst.yearshtml) {\n inst.yearshtml = \"\";\n if (secondary || !changeYear) {\n html += \"<span class='ui-datepicker-year'>\" + drawYear + \"</span>\";\n } else {\n // determine range of years to display\n years = this._get(inst, \"yearRange\").split(\":\");\n thisYear = new Date().getFullYear();\n determineYear = function (value) {\n var year = value.match(/c[+\\-].*/) ? drawYear + parseInt(value.substring(1), 10) : value.match(/[+\\-].*/) ? thisYear + parseInt(value, 10) : parseInt(value, 10);\n return isNaN(year) ? thisYear : year;\n };\n year = determineYear(years[0]);\n endYear = Math.max(year, determineYear(years[1] || \"\"));\n year = minDate ? Math.max(year, minDate.getFullYear()) : year;\n endYear = maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear;\n inst.yearshtml += \"<select class='ui-datepicker-year' aria-label='\" + selectYearLabel + \"' data-handler='selectYear' data-event='change'>\";\n for (; year <= endYear; year++) {\n inst.yearshtml += \"<option value='\" + year + \"'\" + (year === drawYear ? \" selected='selected'\" : \"\") + \">\" + year + \"</option>\";\n }\n inst.yearshtml += \"</select>\";\n html += inst.yearshtml;\n inst.yearshtml = null;\n }\n }\n html += this._get(inst, \"yearSuffix\");\n if (showMonthAfterYear) {\n html += (secondary || !(changeMonth && changeYear) ? \" \" : \"\") + monthHtml;\n }\n html += \"</div>\"; // Close datepicker_header\n return html;\n },\n /* Adjust one of the date sub-fields. */\n _adjustInstDate: function (inst, offset, period) {\n var year = inst.selectedYear + (period === \"Y\" ? offset : 0),\n month = inst.selectedMonth + (period === \"M\" ? offset : 0),\n day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === \"D\" ? offset : 0),\n date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day)));\n inst.selectedDay = date.getDate();\n inst.drawMonth = inst.selectedMonth = date.getMonth();\n inst.drawYear = inst.selectedYear = date.getFullYear();\n if (period === \"M\" || period === \"Y\") {\n this._notifyChange(inst);\n }\n },\n /* Ensure a date is within any min/max bounds. */\n _restrictMinMax: function (inst, date) {\n var minDate = this._getMinMaxDate(inst, \"min\"),\n maxDate = this._getMinMaxDate(inst, \"max\"),\n newDate = minDate && date < minDate ? minDate : date;\n return maxDate && newDate > maxDate ? maxDate : newDate;\n },\n /* Notify change of month/year. */\n _notifyChange: function (inst) {\n var onChange = this._get(inst, \"onChangeMonthYear\");\n if (onChange) {\n onChange.apply(inst.input ? inst.input[0] : null, [inst.selectedYear, inst.selectedMonth + 1, inst]);\n }\n },\n /* Determine the number of months to show. */\n _getNumberOfMonths: function (inst) {\n var numMonths = this._get(inst, \"numberOfMonths\");\n return numMonths == null ? [1, 1] : typeof numMonths === \"number\" ? [1, numMonths] : numMonths;\n },\n /* Determine the current maximum date - ensure no time components are set. */\n _getMinMaxDate: function (inst, minMax) {\n return this._determineDate(inst, this._get(inst, minMax + \"Date\"), null);\n },\n /* Find the number of days in a given month. */\n _getDaysInMonth: function (year, month) {\n return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();\n },\n /* Find the day of the week of the first of a month. */\n _getFirstDayOfMonth: function (year, month) {\n return new Date(year, month, 1).getDay();\n },\n /* Determines if we should allow a \"next/prev\" month display change. */\n _canAdjustMonth: function (inst, offset, curYear, curMonth) {\n var numMonths = this._getNumberOfMonths(inst),\n date = this._daylightSavingAdjust(new Date(curYear, curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));\n if (offset < 0) {\n date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));\n }\n return this._isInRange(inst, date);\n },\n /* Is the given date in the accepted range? */\n _isInRange: function (inst, date) {\n var yearSplit,\n currentYear,\n minDate = this._getMinMaxDate(inst, \"min\"),\n maxDate = this._getMinMaxDate(inst, \"max\"),\n minYear = null,\n maxYear = null,\n years = this._get(inst, \"yearRange\");\n if (years) {\n yearSplit = years.split(\":\");\n currentYear = new Date().getFullYear();\n minYear = parseInt(yearSplit[0], 10);\n maxYear = parseInt(yearSplit[1], 10);\n if (yearSplit[0].match(/[+\\-].*/)) {\n minYear += currentYear;\n }\n if (yearSplit[1].match(/[+\\-].*/)) {\n maxYear += currentYear;\n }\n }\n return (!minDate || date.getTime() >= minDate.getTime()) && (!maxDate || date.getTime() <= maxDate.getTime()) && (!minYear || date.getFullYear() >= minYear) && (!maxYear || date.getFullYear() <= maxYear);\n },\n /* Provide the configuration settings for formatting/parsing. */\n _getFormatConfig: function (inst) {\n var shortYearCutoff = this._get(inst, \"shortYearCutoff\");\n shortYearCutoff = typeof shortYearCutoff !== \"string\" ? shortYearCutoff : new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10);\n return {\n shortYearCutoff: shortYearCutoff,\n dayNamesShort: this._get(inst, \"dayNamesShort\"),\n dayNames: this._get(inst, \"dayNames\"),\n monthNamesShort: this._get(inst, \"monthNamesShort\"),\n monthNames: this._get(inst, \"monthNames\")\n };\n },\n /* Format the given date for display. */\n _formatDate: function (inst, day, month, year) {\n if (!day) {\n inst.currentDay = inst.selectedDay;\n inst.currentMonth = inst.selectedMonth;\n inst.currentYear = inst.selectedYear;\n }\n var date = day ? typeof day === \"object\" ? day : this._daylightSavingAdjust(new Date(year, month, day)) : this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay));\n return this.formatDate(this._get(inst, \"dateFormat\"), date, this._getFormatConfig(inst));\n }\n });\n\n /*\n * Bind hover events for datepicker elements.\n * Done via delegate so the binding only occurs once in the lifetime of the parent div.\n * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.\n */\n function datepicker_bindHover(dpDiv) {\n var selector = \"button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a\";\n return dpDiv.on(\"mouseout\", selector, function () {\n $(this).removeClass(\"ui-state-hover\");\n if (this.className.indexOf(\"ui-datepicker-prev\") !== -1) {\n $(this).removeClass(\"ui-datepicker-prev-hover\");\n }\n if (this.className.indexOf(\"ui-datepicker-next\") !== -1) {\n $(this).removeClass(\"ui-datepicker-next-hover\");\n }\n }).on(\"mouseover\", selector, datepicker_handleMouseover);\n }\n function datepicker_handleMouseover() {\n if (!$.datepicker._isDisabledDatepicker(datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[0] : datepicker_instActive.input[0])) {\n $(this).parents(\".ui-datepicker-calendar\").find(\"a\").removeClass(\"ui-state-hover\");\n $(this).addClass(\"ui-state-hover\");\n if (this.className.indexOf(\"ui-datepicker-prev\") !== -1) {\n $(this).addClass(\"ui-datepicker-prev-hover\");\n }\n if (this.className.indexOf(\"ui-datepicker-next\") !== -1) {\n $(this).addClass(\"ui-datepicker-next-hover\");\n }\n }\n }\n\n /* jQuery extend now ignores nulls! */\n function datepicker_extendRemove(target, props) {\n $.extend(target, props);\n for (var name in props) {\n if (props[name] == null) {\n target[name] = props[name];\n }\n }\n return target;\n }\n\n /* Invoke the datepicker functionality.\n @param options string - a command, optionally followed by additional parameters or\n \t\t\t\t\tObject - settings for attaching new datepicker functionality\n @return jQuery object */\n $.fn.datepicker = function (options) {\n /* Verify an empty collection wasn't passed - Fixes #6976 */\n if (!this.length) {\n return this;\n }\n\n /* Initialise the date picker. */\n if (!$.datepicker.initialized) {\n $(document).on(\"mousedown\", $.datepicker._checkExternalClick);\n $.datepicker.initialized = true;\n }\n\n /* Append datepicker main container to body if not exist. */\n if ($(\"#\" + $.datepicker._mainDivId).length === 0) {\n $(\"body\").append($.datepicker.dpDiv);\n }\n var otherArgs = Array.prototype.slice.call(arguments, 1);\n if (typeof options === \"string\" && (options === \"isDisabled\" || options === \"getDate\" || options === \"widget\")) {\n return $.datepicker[\"_\" + options + \"Datepicker\"].apply($.datepicker, [this[0]].concat(otherArgs));\n }\n if (options === \"option\" && arguments.length === 2 && typeof arguments[1] === \"string\") {\n return $.datepicker[\"_\" + options + \"Datepicker\"].apply($.datepicker, [this[0]].concat(otherArgs));\n }\n return this.each(function () {\n if (typeof options === \"string\") {\n $.datepicker[\"_\" + options + \"Datepicker\"].apply($.datepicker, [this].concat(otherArgs));\n } else {\n $.datepicker._attachDatepicker(this, options);\n }\n });\n };\n $.datepicker = new Datepicker(); // singleton instance\n $.datepicker.initialized = false;\n $.datepicker.uuid = new Date().getTime();\n $.datepicker.version = \"1.14.1\";\n var widgetsDatepicker = $.datepicker;\n\n /*!\n * jQuery UI Mouse 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Mouse\n //>>group: Widgets\n //>>description: Abstracts mouse-based interactions to assist in creating certain widgets.\n //>>docs: https://api.jqueryui.com/mouse/\n\n var mouseHandled = false;\n $(document).on(\"mouseup\", function () {\n mouseHandled = false;\n });\n var widgetsMouse = $.widget(\"ui.mouse\", {\n version: \"1.14.1\",\n options: {\n cancel: \"input, textarea, button, select, option\",\n distance: 1,\n delay: 0\n },\n _mouseInit: function () {\n var that = this;\n this.element.on(\"mousedown.\" + this.widgetName, function (event) {\n return that._mouseDown(event);\n }).on(\"click.\" + this.widgetName, function (event) {\n if (true === $.data(event.target, that.widgetName + \".preventClickEvent\")) {\n $.removeData(event.target, that.widgetName + \".preventClickEvent\");\n event.stopImmediatePropagation();\n return false;\n }\n });\n this.started = false;\n },\n // TODO: make sure destroying one instance of mouse doesn't mess with\n // other instances of mouse\n _mouseDestroy: function () {\n this.element.off(\".\" + this.widgetName);\n if (this._mouseMoveDelegate) {\n this.document.off(\"mousemove.\" + this.widgetName, this._mouseMoveDelegate).off(\"mouseup.\" + this.widgetName, this._mouseUpDelegate);\n }\n },\n _mouseDown: function (event) {\n // don't let more than one widget handle mouseStart\n if (mouseHandled) {\n return;\n }\n this._mouseMoved = false;\n\n // We may have missed mouseup (out of window)\n if (this._mouseStarted) {\n this._mouseUp(event);\n }\n this._mouseDownEvent = event;\n var that = this,\n btnIsLeft = event.which === 1,\n elIsCancel = typeof this.options.cancel === \"string\" ? $(event.target).closest(this.options.cancel).length : false;\n if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {\n return true;\n }\n this.mouseDelayMet = !this.options.delay;\n if (!this.mouseDelayMet) {\n this._mouseDelayTimer = setTimeout(function () {\n that.mouseDelayMet = true;\n }, this.options.delay);\n }\n if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n this._mouseStarted = this._mouseStart(event) !== false;\n if (!this._mouseStarted) {\n event.preventDefault();\n return true;\n }\n }\n\n // Click event may never have fired (Gecko & Opera)\n if (true === $.data(event.target, this.widgetName + \".preventClickEvent\")) {\n $.removeData(event.target, this.widgetName + \".preventClickEvent\");\n }\n\n // These delegates are required to keep context\n this._mouseMoveDelegate = function (event) {\n return that._mouseMove(event);\n };\n this._mouseUpDelegate = function (event) {\n return that._mouseUp(event);\n };\n this.document.on(\"mousemove.\" + this.widgetName, this._mouseMoveDelegate).on(\"mouseup.\" + this.widgetName, this._mouseUpDelegate);\n event.preventDefault();\n mouseHandled = true;\n return true;\n },\n _mouseMove: function (event) {\n // Only check for mouseups outside the document if you've moved inside the document\n // at least once.\n if (this._mouseMoved && !event.which) {\n // Support: Safari <=8 - 9\n // Safari sets which to 0 if you press any of the following keys\n // during a drag (#14461)\n if (event.originalEvent.altKey || event.originalEvent.ctrlKey || event.originalEvent.metaKey || event.originalEvent.shiftKey) {\n this.ignoreMissingWhich = true;\n } else if (!this.ignoreMissingWhich) {\n return this._mouseUp(event);\n }\n }\n if (event.which || event.button) {\n this._mouseMoved = true;\n }\n if (this._mouseStarted) {\n this._mouseDrag(event);\n return event.preventDefault();\n }\n if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n this._mouseStarted = this._mouseStart(this._mouseDownEvent, event) !== false;\n if (this._mouseStarted) {\n this._mouseDrag(event);\n } else {\n this._mouseUp(event);\n }\n }\n return !this._mouseStarted;\n },\n _mouseUp: function (event) {\n this.document.off(\"mousemove.\" + this.widgetName, this._mouseMoveDelegate).off(\"mouseup.\" + this.widgetName, this._mouseUpDelegate);\n if (this._mouseStarted) {\n this._mouseStarted = false;\n if (event.target === this._mouseDownEvent.target) {\n $.data(event.target, this.widgetName + \".preventClickEvent\", true);\n }\n this._mouseStop(event);\n }\n if (this._mouseDelayTimer) {\n clearTimeout(this._mouseDelayTimer);\n delete this._mouseDelayTimer;\n }\n this.ignoreMissingWhich = false;\n mouseHandled = false;\n event.preventDefault();\n },\n _mouseDistanceMet: function (event) {\n return Math.max(Math.abs(this._mouseDownEvent.pageX - event.pageX), Math.abs(this._mouseDownEvent.pageY - event.pageY)) >= this.options.distance;\n },\n _mouseDelayMet: function /* event */\n () {\n return this.mouseDelayMet;\n },\n // These are placeholder methods, to be overriden by extending plugin\n _mouseStart: function /* event */ () {},\n _mouseDrag: function /* event */ () {},\n _mouseStop: function /* event */ () {},\n _mouseCapture: function /* event */\n () {\n return true;\n }\n });\n\n // $.ui.plugin is deprecated. Use $.widget() extensions instead.\n var plugin = $.ui.plugin = {\n add: function (module, option, set) {\n var i,\n proto = $.ui[module].prototype;\n for (i in set) {\n proto.plugins[i] = proto.plugins[i] || [];\n proto.plugins[i].push([option, set[i]]);\n }\n },\n call: function (instance, name, args, allowDisconnected) {\n var i,\n set = instance.plugins[name];\n if (!set) {\n return;\n }\n if (!allowDisconnected && (!instance.element[0].parentNode || instance.element[0].parentNode.nodeType === 11)) {\n return;\n }\n for (i = 0; i < set.length; i++) {\n if (instance.options[set[i][0]]) {\n set[i][1].apply(instance.element, args);\n }\n }\n }\n };\n\n /*!\n * jQuery UI Draggable 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Draggable\n //>>group: Interactions\n //>>description: Enables dragging functionality for any element.\n //>>docs: https://api.jqueryui.com/draggable/\n //>>demos: https://jqueryui.com/draggable/\n //>>css.structure: ../../themes/base/draggable.css\n\n $.widget(\"ui.draggable\", $.ui.mouse, {\n version: \"1.14.1\",\n widgetEventPrefix: \"drag\",\n options: {\n addClasses: true,\n appendTo: \"parent\",\n axis: false,\n connectToSortable: false,\n containment: false,\n cursor: \"auto\",\n cursorAt: false,\n grid: false,\n handle: false,\n helper: \"original\",\n iframeFix: false,\n opacity: false,\n refreshPositions: false,\n revert: false,\n revertDuration: 500,\n scope: \"default\",\n scroll: true,\n scrollSensitivity: 20,\n scrollSpeed: 20,\n snap: false,\n snapMode: \"both\",\n snapTolerance: 20,\n stack: false,\n zIndex: false,\n // Callbacks\n drag: null,\n start: null,\n stop: null\n },\n _create: function () {\n if (this.options.helper === \"original\") {\n this._setPositionRelative();\n }\n if (this.options.addClasses) {\n this._addClass(\"ui-draggable\");\n }\n this._setHandleClassName();\n this._mouseInit();\n },\n _setOption: function (key, value) {\n this._super(key, value);\n if (key === \"handle\") {\n this._removeHandleClassName();\n this._setHandleClassName();\n }\n },\n _destroy: function () {\n if ((this.helper || this.element).is(\".ui-draggable-dragging\")) {\n this.destroyOnClear = true;\n return;\n }\n this._removeHandleClassName();\n this._mouseDestroy();\n },\n _mouseCapture: function (event) {\n var o = this.options;\n\n // Among others, prevent a drag on a resizable-handle\n if (this.helper || o.disabled || $(event.target).closest(\".ui-resizable-handle\").length > 0) {\n return false;\n }\n\n //Quit if we're not on a valid handle\n this.handle = this._getHandle(event);\n if (!this.handle) {\n return false;\n }\n this._blurActiveElement(event);\n this._blockFrames(o.iframeFix === true ? \"iframe\" : o.iframeFix);\n return true;\n },\n _blockFrames: function (selector) {\n this.iframeBlocks = this.document.find(selector).map(function () {\n var iframe = $(this);\n return $(\"<div>\").css(\"position\", \"absolute\").appendTo(iframe.parent()).outerWidth(iframe.outerWidth()).outerHeight(iframe.outerHeight()).offset(iframe.offset())[0];\n });\n },\n _unblockFrames: function () {\n if (this.iframeBlocks) {\n this.iframeBlocks.remove();\n delete this.iframeBlocks;\n }\n },\n _blurActiveElement: function (event) {\n var activeElement = this.document[0].activeElement,\n target = $(event.target);\n\n // Don't blur if the event occurred on an element that is within\n // the currently focused element\n // See #10527, #12472\n if (target.closest(activeElement).length) {\n return;\n }\n\n // Blur any element that currently has focus, see #4261\n $(activeElement).trigger(\"blur\");\n },\n _mouseStart: function (event) {\n var o = this.options;\n\n //Create and append the visible helper\n this.helper = this._createHelper(event);\n this._addClass(this.helper, \"ui-draggable-dragging\");\n\n //Cache the helper size\n this._cacheHelperProportions();\n\n //If ddmanager is used for droppables, set the global draggable\n if ($.ui.ddmanager) {\n $.ui.ddmanager.current = this;\n }\n\n /*\n * - Position generation -\n * This block generates everything position related - it's the core of draggables.\n */\n\n //Cache the margins of the original element\n this._cacheMargins();\n\n //Store the helper's css position\n this.cssPosition = this.helper.css(\"position\");\n this.scrollParent = this.helper.scrollParent(true);\n this.offsetParent = this.helper.offsetParent();\n this.hasFixedAncestor = this.helper.parents().filter(function () {\n return $(this).css(\"position\") === \"fixed\";\n }).length > 0;\n\n //The element's absolute position on the page minus margins\n this.positionAbs = this.element.offset();\n this._refreshOffsets(event);\n\n //Generate the original position\n this.originalPosition = this.position = this._generatePosition(event, false);\n this.originalPageX = event.pageX;\n this.originalPageY = event.pageY;\n\n //Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n if (o.cursorAt) {\n this._adjustOffsetFromHelper(o.cursorAt);\n }\n\n //Set a containment if given in the options\n this._setContainment();\n\n //Trigger event + callbacks\n if (this._trigger(\"start\", event) === false) {\n this._clear();\n return false;\n }\n\n //Recache the helper size\n this._cacheHelperProportions();\n\n //Prepare the droppable offsets\n if ($.ui.ddmanager && !o.dropBehaviour) {\n $.ui.ddmanager.prepareOffsets(this, event);\n }\n\n // Execute the drag once - this causes the helper not to be visible before getting its\n // correct position\n this._mouseDrag(event, true);\n\n // If the ddmanager is used for droppables, inform the manager that dragging has started\n // (see #5003)\n if ($.ui.ddmanager) {\n $.ui.ddmanager.dragStart(this, event);\n }\n return true;\n },\n _refreshOffsets: function (event) {\n this.offset = {\n top: this.positionAbs.top - this.margins.top,\n left: this.positionAbs.left - this.margins.left,\n scroll: false,\n parent: this._getParentOffset(),\n relative: this._getRelativeOffset()\n };\n this.offset.click = {\n left: event.pageX - this.offset.left,\n top: event.pageY - this.offset.top\n };\n },\n _mouseDrag: function (event, noPropagation) {\n // reset any necessary cached properties (see #5009)\n if (this.hasFixedAncestor) {\n this.offset.parent = this._getParentOffset();\n }\n\n //Compute the helpers position\n this.position = this._generatePosition(event, true);\n this.positionAbs = this._convertPositionTo(\"absolute\");\n\n //Call plugins and callbacks and use the resulting position if something is returned\n if (!noPropagation) {\n var ui = this._uiHash();\n if (this._trigger(\"drag\", event, ui) === false) {\n this._mouseUp(new $.Event(\"mouseup\", event));\n return false;\n }\n this.position = ui.position;\n }\n this.helper[0].style.left = this.position.left + \"px\";\n this.helper[0].style.top = this.position.top + \"px\";\n if ($.ui.ddmanager) {\n $.ui.ddmanager.drag(this, event);\n }\n return false;\n },\n _mouseStop: function (event) {\n //If we are using droppables, inform the manager about the drop\n var that = this,\n dropped = false;\n if ($.ui.ddmanager && !this.options.dropBehaviour) {\n dropped = $.ui.ddmanager.drop(this, event);\n }\n\n //if a drop comes from outside (a sortable)\n if (this.dropped) {\n dropped = this.dropped;\n this.dropped = false;\n }\n if (this.options.revert === \"invalid\" && !dropped || this.options.revert === \"valid\" && dropped || this.options.revert === true || typeof this.options.revert === \"function\" && this.options.revert.call(this.element, dropped)) {\n $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function () {\n if (that._trigger(\"stop\", event) !== false) {\n that._clear();\n }\n });\n } else {\n if (this._trigger(\"stop\", event) !== false) {\n this._clear();\n }\n }\n return false;\n },\n _mouseUp: function (event) {\n this._unblockFrames();\n\n // If the ddmanager is used for droppables, inform the manager that dragging has stopped\n // (see #5003)\n if ($.ui.ddmanager) {\n $.ui.ddmanager.dragStop(this, event);\n }\n\n // Only need to focus if the event occurred on the draggable itself, see #10527\n if (this.handleElement.is(event.target)) {\n // The interaction is over; whether or not the click resulted in a drag,\n // focus the element\n this.element.trigger(\"focus\");\n }\n return $.ui.mouse.prototype._mouseUp.call(this, event);\n },\n cancel: function () {\n if (this.helper.is(\".ui-draggable-dragging\")) {\n this._mouseUp(new $.Event(\"mouseup\", {\n target: this.element[0]\n }));\n } else {\n this._clear();\n }\n return this;\n },\n _getHandle: function (event) {\n return this.options.handle ? !!$(event.target).closest(this.element.find(this.options.handle)).length : true;\n },\n _setHandleClassName: function () {\n this.handleElement = this.options.handle ? this.element.find(this.options.handle) : this.element;\n this._addClass(this.handleElement, \"ui-draggable-handle\");\n },\n _removeHandleClassName: function () {\n this._removeClass(this.handleElement, \"ui-draggable-handle\");\n },\n _createHelper: function (event) {\n var o = this.options,\n helperIsFunction = typeof o.helper === \"function\",\n helper = helperIsFunction ? $(o.helper.apply(this.element[0], [event])) : o.helper === \"clone\" ? this.element.clone().removeAttr(\"id\") : this.element;\n if (!helper.parents(\"body\").length) {\n helper.appendTo(o.appendTo === \"parent\" ? this.element[0].parentNode : o.appendTo);\n }\n\n // https://bugs.jqueryui.com/ticket/9446\n // a helper function can return the original element\n // which wouldn't have been set to relative in _create\n if (helperIsFunction && helper[0] === this.element[0]) {\n this._setPositionRelative();\n }\n if (helper[0] !== this.element[0] && !/(fixed|absolute)/.test(helper.css(\"position\"))) {\n helper.css(\"position\", \"absolute\");\n }\n return helper;\n },\n _setPositionRelative: function () {\n if (!/^(?:r|a|f)/.test(this.element.css(\"position\"))) {\n this.element[0].style.position = \"relative\";\n }\n },\n _adjustOffsetFromHelper: function (obj) {\n if (typeof obj === \"string\") {\n obj = obj.split(\" \");\n }\n if (Array.isArray(obj)) {\n obj = {\n left: +obj[0],\n top: +obj[1] || 0\n };\n }\n if (\"left\" in obj) {\n this.offset.click.left = obj.left + this.margins.left;\n }\n if (\"right\" in obj) {\n this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n }\n if (\"top\" in obj) {\n this.offset.click.top = obj.top + this.margins.top;\n }\n if (\"bottom\" in obj) {\n this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n }\n },\n _isRootNode: function (element) {\n return /(html|body)/i.test(element.tagName) || element === this.document[0];\n },\n _getParentOffset: function () {\n //Get the offsetParent and cache its position\n var po = this.offsetParent.offset(),\n document = this.document[0];\n\n // This is a special case where we need to modify a offset calculated on start, since the\n // following happened:\n // 1. The position of the helper is absolute, so it's position is calculated based on the\n // next positioned parent\n // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't\n // the document, which means that the scroll is included in the initial calculation of the\n // offset of the parent, and never recalculated upon drag\n if (this.cssPosition === \"absolute\" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n po.left += this.scrollParent.scrollLeft();\n po.top += this.scrollParent.scrollTop();\n }\n if (this._isRootNode(this.offsetParent[0])) {\n po = {\n top: 0,\n left: 0\n };\n }\n return {\n top: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"), 10) || 0),\n left: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"), 10) || 0)\n };\n },\n _getRelativeOffset: function () {\n if (this.cssPosition !== \"relative\") {\n return {\n top: 0,\n left: 0\n };\n }\n var p = this.element.position(),\n scrollIsRootNode = this._isRootNode(this.scrollParent[0]);\n return {\n top: p.top - (parseInt(this.helper.css(\"top\"), 10) || 0) + (!scrollIsRootNode ? this.scrollParent.scrollTop() : 0),\n left: p.left - (parseInt(this.helper.css(\"left\"), 10) || 0) + (!scrollIsRootNode ? this.scrollParent.scrollLeft() : 0)\n };\n },\n _cacheMargins: function () {\n this.margins = {\n left: parseInt(this.element.css(\"marginLeft\"), 10) || 0,\n top: parseInt(this.element.css(\"marginTop\"), 10) || 0,\n right: parseInt(this.element.css(\"marginRight\"), 10) || 0,\n bottom: parseInt(this.element.css(\"marginBottom\"), 10) || 0\n };\n },\n _cacheHelperProportions: function () {\n this.helperProportions = {\n width: this.helper.outerWidth(),\n height: this.helper.outerHeight()\n };\n },\n _setContainment: function () {\n var isUserScrollable,\n c,\n ce,\n o = this.options,\n document = this.document[0];\n this.relativeContainer = null;\n if (!o.containment) {\n this.containment = null;\n return;\n }\n if (o.containment === \"window\") {\n this.containment = [$(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, $(window).scrollLeft() + $(window).width() - this.helperProportions.width - this.margins.left, $(window).scrollTop() + ($(window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top];\n return;\n }\n if (o.containment === \"document\") {\n this.containment = [0, 0, $(document).width() - this.helperProportions.width - this.margins.left, ($(document).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top];\n return;\n }\n if (o.containment.constructor === Array) {\n this.containment = o.containment;\n return;\n }\n if (o.containment === \"parent\") {\n o.containment = this.helper[0].parentNode;\n }\n c = $(o.containment);\n ce = c[0];\n if (!ce) {\n return;\n }\n isUserScrollable = /(scroll|auto)/.test(c.css(\"overflow\"));\n this.containment = [(parseInt(c.css(\"borderLeftWidth\"), 10) || 0) + (parseInt(c.css(\"paddingLeft\"), 10) || 0), (parseInt(c.css(\"borderTopWidth\"), 10) || 0) + (parseInt(c.css(\"paddingTop\"), 10) || 0), (isUserScrollable ? Math.max(ce.scrollWidth, ce.offsetWidth) : ce.offsetWidth) - (parseInt(c.css(\"borderRightWidth\"), 10) || 0) - (parseInt(c.css(\"paddingRight\"), 10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, (isUserScrollable ? Math.max(ce.scrollHeight, ce.offsetHeight) : ce.offsetHeight) - (parseInt(c.css(\"borderBottomWidth\"), 10) || 0) - (parseInt(c.css(\"paddingBottom\"), 10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom];\n this.relativeContainer = c;\n },\n _convertPositionTo: function (d, pos) {\n if (!pos) {\n pos = this.position;\n }\n var mod = d === \"absolute\" ? 1 : -1,\n scrollIsRootNode = this._isRootNode(this.scrollParent[0]);\n return {\n top:\n // The absolute mouse position\n pos.top +\n // Only for relative positioned nodes: Relative offset from element to offset parent\n this.offset.relative.top * mod +\n // The offsetParent's offset without borders (offset + border)\n this.offset.parent.top * mod - (this.cssPosition === \"fixed\" ? -this.offset.scroll.top : scrollIsRootNode ? 0 : this.offset.scroll.top) * mod,\n left:\n // The absolute mouse position\n pos.left +\n // Only for relative positioned nodes: Relative offset from element to offset parent\n this.offset.relative.left * mod +\n // The offsetParent's offset without borders (offset + border)\n this.offset.parent.left * mod - (this.cssPosition === \"fixed\" ? -this.offset.scroll.left : scrollIsRootNode ? 0 : this.offset.scroll.left) * mod\n };\n },\n _generatePosition: function (event, constrainPosition) {\n var containment,\n co,\n top,\n left,\n o = this.options,\n scrollIsRootNode = this._isRootNode(this.scrollParent[0]),\n pageX = event.pageX,\n pageY = event.pageY;\n\n // Cache the scroll\n if (!scrollIsRootNode || !this.offset.scroll) {\n this.offset.scroll = {\n top: this.scrollParent.scrollTop(),\n left: this.scrollParent.scrollLeft()\n };\n }\n\n /*\n * - Position constraining -\n * Constrain the position to a mix of grid, containment.\n */\n\n // If we are not dragging yet, we won't check for options\n if (constrainPosition) {\n if (this.containment) {\n if (this.relativeContainer) {\n co = this.relativeContainer.offset();\n containment = [this.containment[0] + co.left, this.containment[1] + co.top, this.containment[2] + co.left, this.containment[3] + co.top];\n } else {\n containment = this.containment;\n }\n if (event.pageX - this.offset.click.left < containment[0]) {\n pageX = containment[0] + this.offset.click.left;\n }\n if (event.pageY - this.offset.click.top < containment[1]) {\n pageY = containment[1] + this.offset.click.top;\n }\n if (event.pageX - this.offset.click.left > containment[2]) {\n pageX = containment[2] + this.offset.click.left;\n }\n if (event.pageY - this.offset.click.top > containment[3]) {\n pageY = containment[3] + this.offset.click.top;\n }\n }\n if (o.grid) {\n //Check for grid elements set to 0 to prevent divide by 0 error causing invalid\n // argument errors in IE (see ticket #6950)\n top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;\n pageY = containment ? top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3] ? top : top - this.offset.click.top >= containment[1] ? top - o.grid[1] : top + o.grid[1] : top;\n left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;\n pageX = containment ? left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2] ? left : left - this.offset.click.left >= containment[0] ? left - o.grid[0] : left + o.grid[0] : left;\n }\n if (o.axis === \"y\") {\n pageX = this.originalPageX;\n }\n if (o.axis === \"x\") {\n pageY = this.originalPageY;\n }\n }\n return {\n top:\n // The absolute mouse position\n pageY -\n // Click offset (relative to the element)\n this.offset.click.top -\n // Only for relative positioned nodes: Relative offset from element to offset parent\n this.offset.relative.top -\n // The offsetParent's offset without borders (offset + border)\n this.offset.parent.top + (this.cssPosition === \"fixed\" ? -this.offset.scroll.top : scrollIsRootNode ? 0 : this.offset.scroll.top),\n left:\n // The absolute mouse position\n pageX -\n // Click offset (relative to the element)\n this.offset.click.left -\n // Only for relative positioned nodes: Relative offset from element to offset parent\n this.offset.relative.left -\n // The offsetParent's offset without borders (offset + border)\n this.offset.parent.left + (this.cssPosition === \"fixed\" ? -this.offset.scroll.left : scrollIsRootNode ? 0 : this.offset.scroll.left)\n };\n },\n _clear: function () {\n this._removeClass(this.helper, \"ui-draggable-dragging\");\n if (this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) {\n this.helper.remove();\n }\n this.helper = null;\n this.cancelHelperRemoval = false;\n if (this.destroyOnClear) {\n this.destroy();\n }\n },\n // From now on bulk stuff - mainly helpers\n\n _trigger: function (type, event, ui) {\n ui = ui || this._uiHash();\n $.ui.plugin.call(this, type, [event, ui, this], true);\n\n // Absolute position and offset (see #6884 ) have to be recalculated after plugins\n if (/^(drag|start|stop)/.test(type)) {\n this.positionAbs = this._convertPositionTo(\"absolute\");\n ui.offset = this.positionAbs;\n }\n return $.Widget.prototype._trigger.call(this, type, event, ui);\n },\n plugins: {},\n _uiHash: function () {\n return {\n helper: this.helper,\n position: this.position,\n originalPosition: this.originalPosition,\n offset: this.positionAbs\n };\n }\n });\n $.ui.plugin.add(\"draggable\", \"connectToSortable\", {\n start: function (event, ui, draggable) {\n var uiSortable = $.extend({}, ui, {\n item: draggable.element\n });\n draggable.sortables = [];\n $(draggable.options.connectToSortable).each(function () {\n var sortable = $(this).sortable(\"instance\");\n if (sortable && !sortable.options.disabled) {\n draggable.sortables.push(sortable);\n\n // RefreshPositions is called at drag start to refresh the containerCache\n // which is used in drag. This ensures it's initialized and synchronized\n // with any changes that might have happened on the page since initialization.\n sortable.refreshPositions();\n sortable._trigger(\"activate\", event, uiSortable);\n }\n });\n },\n stop: function (event, ui, draggable) {\n var uiSortable = $.extend({}, ui, {\n item: draggable.element\n });\n draggable.cancelHelperRemoval = false;\n $.each(draggable.sortables, function () {\n var sortable = this;\n if (sortable.isOver) {\n sortable.isOver = 0;\n\n // Allow this sortable to handle removing the helper\n draggable.cancelHelperRemoval = true;\n sortable.cancelHelperRemoval = false;\n\n // Use _storedCSS To restore properties in the sortable,\n // as this also handles revert (#9675) since the draggable\n // may have modified them in unexpected ways (#8809)\n sortable._storedCSS = {\n position: sortable.placeholder.css(\"position\"),\n top: sortable.placeholder.css(\"top\"),\n left: sortable.placeholder.css(\"left\")\n };\n sortable._mouseStop(event);\n\n // Once drag has ended, the sortable should return to using\n // its original helper, not the shared helper from draggable\n sortable.options.helper = sortable.options._helper;\n } else {\n // Prevent this Sortable from removing the helper.\n // However, don't set the draggable to remove the helper\n // either as another connected Sortable may yet handle the removal.\n sortable.cancelHelperRemoval = true;\n sortable._trigger(\"deactivate\", event, uiSortable);\n }\n });\n },\n drag: function (event, ui, draggable) {\n $.each(draggable.sortables, function () {\n var innermostIntersecting = false,\n sortable = this;\n\n // Copy over variables that sortable's _intersectsWith uses\n sortable.positionAbs = draggable.positionAbs;\n sortable.helperProportions = draggable.helperProportions;\n sortable.offset.click = draggable.offset.click;\n if (sortable._intersectsWith(sortable.containerCache)) {\n innermostIntersecting = true;\n $.each(draggable.sortables, function () {\n // Copy over variables that sortable's _intersectsWith uses\n this.positionAbs = draggable.positionAbs;\n this.helperProportions = draggable.helperProportions;\n this.offset.click = draggable.offset.click;\n if (this !== sortable && this._intersectsWith(this.containerCache) && $.contains(sortable.element[0], this.element[0])) {\n innermostIntersecting = false;\n }\n return innermostIntersecting;\n });\n }\n if (innermostIntersecting) {\n // If it intersects, we use a little isOver variable and set it once,\n // so that the move-in stuff gets fired only once.\n if (!sortable.isOver) {\n sortable.isOver = 1;\n\n // Store draggable's parent in case we need to reappend to it later.\n draggable._parent = ui.helper.parent();\n sortable.currentItem = ui.helper.appendTo(sortable.element).data(\"ui-sortable-item\", true);\n\n // Store helper option to later restore it\n sortable.options._helper = sortable.options.helper;\n sortable.options.helper = function () {\n return ui.helper[0];\n };\n\n // Fire the start events of the sortable with our passed browser event,\n // and our own helper (so it doesn't create a new one)\n event.target = sortable.currentItem[0];\n sortable._mouseCapture(event, true);\n sortable._mouseStart(event, true, true);\n\n // Because the browser event is way off the new appended portlet,\n // modify necessary variables to reflect the changes\n sortable.offset.click.top = draggable.offset.click.top;\n sortable.offset.click.left = draggable.offset.click.left;\n sortable.offset.parent.left -= draggable.offset.parent.left - sortable.offset.parent.left;\n sortable.offset.parent.top -= draggable.offset.parent.top - sortable.offset.parent.top;\n draggable._trigger(\"toSortable\", event);\n\n // Inform draggable that the helper is in a valid drop zone,\n // used solely in the revert option to handle \"valid/invalid\".\n draggable.dropped = sortable.element;\n\n // Need to refreshPositions of all sortables in the case that\n // adding to one sortable changes the location of the other sortables (#9675)\n $.each(draggable.sortables, function () {\n this.refreshPositions();\n });\n\n // Hack so receive/update callbacks work (mostly)\n draggable.currentItem = draggable.element;\n sortable.fromOutside = draggable;\n }\n if (sortable.currentItem) {\n sortable._mouseDrag(event);\n\n // Copy the sortable's position because the draggable's can potentially reflect\n // a relative position, while sortable is always absolute, which the dragged\n // element has now become. (#8809)\n ui.position = sortable.position;\n }\n } else {\n // If it doesn't intersect with the sortable, and it intersected before,\n // we fake the drag stop of the sortable, but make sure it doesn't remove\n // the helper by using cancelHelperRemoval.\n if (sortable.isOver) {\n sortable.isOver = 0;\n sortable.cancelHelperRemoval = true;\n\n // Calling sortable's mouseStop would trigger a revert,\n // so revert must be temporarily false until after mouseStop is called.\n sortable.options._revert = sortable.options.revert;\n sortable.options.revert = false;\n sortable._trigger(\"out\", event, sortable._uiHash(sortable));\n sortable._mouseStop(event, true);\n\n // Restore sortable behaviors that were modfied\n // when the draggable entered the sortable area (#9481)\n sortable.options.revert = sortable.options._revert;\n sortable.options.helper = sortable.options._helper;\n if (sortable.placeholder) {\n sortable.placeholder.remove();\n }\n\n // Restore and recalculate the draggable's offset considering the sortable\n // may have modified them in unexpected ways. (#8809, #10669)\n ui.helper.appendTo(draggable._parent);\n draggable._refreshOffsets(event);\n ui.position = draggable._generatePosition(event, true);\n draggable._trigger(\"fromSortable\", event);\n\n // Inform draggable that the helper is no longer in a valid drop zone\n draggable.dropped = false;\n\n // Need to refreshPositions of all sortables just in case removing\n // from one sortable changes the location of other sortables (#9675)\n $.each(draggable.sortables, function () {\n this.refreshPositions();\n });\n }\n }\n });\n }\n });\n $.ui.plugin.add(\"draggable\", \"cursor\", {\n start: function (event, ui, instance) {\n var t = $(\"body\"),\n o = instance.options;\n if (t.css(\"cursor\")) {\n o._cursor = t.css(\"cursor\");\n }\n t.css(\"cursor\", o.cursor);\n },\n stop: function (event, ui, instance) {\n var o = instance.options;\n if (o._cursor) {\n $(\"body\").css(\"cursor\", o._cursor);\n }\n }\n });\n $.ui.plugin.add(\"draggable\", \"opacity\", {\n start: function (event, ui, instance) {\n var t = $(ui.helper),\n o = instance.options;\n if (t.css(\"opacity\")) {\n o._opacity = t.css(\"opacity\");\n }\n t.css(\"opacity\", o.opacity);\n },\n stop: function (event, ui, instance) {\n var o = instance.options;\n if (o._opacity) {\n $(ui.helper).css(\"opacity\", o._opacity);\n }\n }\n });\n $.ui.plugin.add(\"draggable\", \"scroll\", {\n start: function (event, ui, i) {\n if (!i.scrollParentNotHidden) {\n i.scrollParentNotHidden = i.helper.scrollParent(false);\n }\n if (i.scrollParentNotHidden[0] !== i.document[0] && i.scrollParentNotHidden[0].tagName !== \"HTML\") {\n i.overflowOffset = i.scrollParentNotHidden.offset();\n }\n },\n drag: function (event, ui, i) {\n var o = i.options,\n scrolled = false,\n scrollParent = i.scrollParentNotHidden[0],\n document = i.document[0];\n if (scrollParent !== document && scrollParent.tagName !== \"HTML\") {\n if (!o.axis || o.axis !== \"x\") {\n if (i.overflowOffset.top + scrollParent.offsetHeight - event.pageY < o.scrollSensitivity) {\n scrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;\n } else if (event.pageY - i.overflowOffset.top < o.scrollSensitivity) {\n scrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;\n }\n }\n if (!o.axis || o.axis !== \"y\") {\n if (i.overflowOffset.left + scrollParent.offsetWidth - event.pageX < o.scrollSensitivity) {\n scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;\n } else if (event.pageX - i.overflowOffset.left < o.scrollSensitivity) {\n scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;\n }\n }\n } else {\n if (!o.axis || o.axis !== \"x\") {\n if (event.pageY - $(document).scrollTop() < o.scrollSensitivity) {\n scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n } else if ($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {\n scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n }\n }\n if (!o.axis || o.axis !== \"y\") {\n if (event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {\n scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n } else if ($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {\n scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n }\n }\n }\n if (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {\n $.ui.ddmanager.prepareOffsets(i, event);\n }\n }\n });\n $.ui.plugin.add(\"draggable\", \"snap\", {\n start: function (event, ui, i) {\n var o = i.options;\n i.snapElements = [];\n $(o.snap.constructor !== String ? o.snap.items || \":data(ui-draggable)\" : o.snap).each(function () {\n var $t = $(this),\n $o = $t.offset();\n if (this !== i.element[0]) {\n i.snapElements.push({\n item: this,\n width: $t.outerWidth(),\n height: $t.outerHeight(),\n top: $o.top,\n left: $o.left\n });\n }\n });\n },\n drag: function (event, ui, inst) {\n var ts,\n bs,\n ls,\n rs,\n l,\n r,\n t,\n b,\n i,\n first,\n o = inst.options,\n d = o.snapTolerance,\n x1 = ui.offset.left,\n x2 = x1 + inst.helperProportions.width,\n y1 = ui.offset.top,\n y2 = y1 + inst.helperProportions.height;\n for (i = inst.snapElements.length - 1; i >= 0; i--) {\n l = inst.snapElements[i].left - inst.margins.left;\n r = l + inst.snapElements[i].width;\n t = inst.snapElements[i].top - inst.margins.top;\n b = t + inst.snapElements[i].height;\n if (x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains(inst.snapElements[i].item.ownerDocument, inst.snapElements[i].item)) {\n if (inst.snapElements[i].snapping) {\n if (inst.options.snap.release) {\n inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), {\n snapItem: inst.snapElements[i].item\n }));\n }\n }\n inst.snapElements[i].snapping = false;\n continue;\n }\n if (o.snapMode !== \"inner\") {\n ts = Math.abs(t - y2) <= d;\n bs = Math.abs(b - y1) <= d;\n ls = Math.abs(l - x2) <= d;\n rs = Math.abs(r - x1) <= d;\n if (ts) {\n ui.position.top = inst._convertPositionTo(\"relative\", {\n top: t - inst.helperProportions.height,\n left: 0\n }).top;\n }\n if (bs) {\n ui.position.top = inst._convertPositionTo(\"relative\", {\n top: b,\n left: 0\n }).top;\n }\n if (ls) {\n ui.position.left = inst._convertPositionTo(\"relative\", {\n top: 0,\n left: l - inst.helperProportions.width\n }).left;\n }\n if (rs) {\n ui.position.left = inst._convertPositionTo(\"relative\", {\n top: 0,\n left: r\n }).left;\n }\n }\n first = ts || bs || ls || rs;\n if (o.snapMode !== \"outer\") {\n ts = Math.abs(t - y1) <= d;\n bs = Math.abs(b - y2) <= d;\n ls = Math.abs(l - x1) <= d;\n rs = Math.abs(r - x2) <= d;\n if (ts) {\n ui.position.top = inst._convertPositionTo(\"relative\", {\n top: t,\n left: 0\n }).top;\n }\n if (bs) {\n ui.position.top = inst._convertPositionTo(\"relative\", {\n top: b - inst.helperProportions.height,\n left: 0\n }).top;\n }\n if (ls) {\n ui.position.left = inst._convertPositionTo(\"relative\", {\n top: 0,\n left: l\n }).left;\n }\n if (rs) {\n ui.position.left = inst._convertPositionTo(\"relative\", {\n top: 0,\n left: r - inst.helperProportions.width\n }).left;\n }\n }\n if (!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) {\n if (inst.options.snap.snap) {\n inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), {\n snapItem: inst.snapElements[i].item\n }));\n }\n }\n inst.snapElements[i].snapping = ts || bs || ls || rs || first;\n }\n }\n });\n $.ui.plugin.add(\"draggable\", \"stack\", {\n start: function (event, ui, instance) {\n var min,\n o = instance.options,\n group = $.makeArray($(o.stack)).sort(function (a, b) {\n return (parseInt($(a).css(\"zIndex\"), 10) || 0) - (parseInt($(b).css(\"zIndex\"), 10) || 0);\n });\n if (!group.length) {\n return;\n }\n min = parseInt($(group[0]).css(\"zIndex\"), 10) || 0;\n $(group).each(function (i) {\n $(this).css(\"zIndex\", min + i);\n });\n this.css(\"zIndex\", min + group.length);\n }\n });\n $.ui.plugin.add(\"draggable\", \"zIndex\", {\n start: function (event, ui, instance) {\n var t = $(ui.helper),\n o = instance.options;\n if (t.css(\"zIndex\")) {\n o._zIndex = t.css(\"zIndex\");\n }\n t.css(\"zIndex\", o.zIndex);\n },\n stop: function (event, ui, instance) {\n var o = instance.options;\n if (o._zIndex) {\n $(ui.helper).css(\"zIndex\", o._zIndex);\n }\n }\n });\n var widgetsDraggable = $.ui.draggable;\n\n /*!\n * jQuery UI Resizable 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Resizable\n //>>group: Interactions\n //>>description: Enables resize functionality for any element.\n //>>docs: https://api.jqueryui.com/resizable/\n //>>demos: https://jqueryui.com/resizable/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/resizable.css\n //>>css.theme: ../../themes/base/theme.css\n\n $.widget(\"ui.resizable\", $.ui.mouse, {\n version: \"1.14.1\",\n widgetEventPrefix: \"resize\",\n options: {\n alsoResize: false,\n animate: false,\n animateDuration: \"slow\",\n animateEasing: \"swing\",\n aspectRatio: false,\n autoHide: false,\n classes: {\n \"ui-resizable-se\": \"ui-icon ui-icon-gripsmall-diagonal-se\"\n },\n containment: false,\n ghost: false,\n grid: false,\n handles: \"e,s,se\",\n helper: false,\n maxHeight: null,\n maxWidth: null,\n minHeight: 10,\n minWidth: 10,\n // See #7960\n zIndex: 90,\n // Callbacks\n resize: null,\n start: null,\n stop: null\n },\n _num: function (value) {\n return parseFloat(value) || 0;\n },\n _isNumber: function (value) {\n return !isNaN(parseFloat(value));\n },\n _hasScroll: function (el, a) {\n var scroll,\n has = false,\n overflow = $(el).css(\"overflow\");\n if (overflow === \"hidden\") {\n return false;\n }\n if (overflow === \"scroll\") {\n return true;\n }\n scroll = a && a === \"left\" ? \"scrollLeft\" : \"scrollTop\";\n if (el[scroll] > 0) {\n return true;\n }\n\n // TODO: determine which cases actually cause this to happen\n // if the element doesn't have the scroll set, see if it's possible to\n // set the scroll\n try {\n el[scroll] = 1;\n has = el[scroll] > 0;\n el[scroll] = 0;\n } catch (e) {\n\n // `el` might be a string, then setting `scroll` will throw\n // an error in strict mode; ignore it.\n }\n return has;\n },\n _create: function () {\n var margins,\n o = this.options,\n that = this;\n this._addClass(\"ui-resizable\");\n $.extend(this, {\n _aspectRatio: !!o.aspectRatio,\n aspectRatio: o.aspectRatio,\n originalElement: this.element,\n _proportionallyResizeElements: [],\n _helper: o.helper || o.ghost || o.animate ? o.helper || \"ui-resizable-helper\" : null\n });\n\n // Wrap the element if it cannot hold child nodes\n if (this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)) {\n this.element.wrap($(\"<div class='ui-wrapper'></div>\").css({\n overflow: \"hidden\",\n position: this.element.css(\"position\"),\n width: this.element.outerWidth(),\n height: this.element.outerHeight(),\n top: this.element.css(\"top\"),\n left: this.element.css(\"left\")\n }));\n this.element = this.element.parent().data(\"ui-resizable\", this.element.resizable(\"instance\"));\n this.elementIsWrapper = true;\n margins = {\n marginTop: this.originalElement.css(\"marginTop\"),\n marginRight: this.originalElement.css(\"marginRight\"),\n marginBottom: this.originalElement.css(\"marginBottom\"),\n marginLeft: this.originalElement.css(\"marginLeft\")\n };\n this.element.css(margins);\n\n // Support: Safari\n // Prevent Safari textarea resize\n this.originalResizeStyle = this.originalElement.css(\"resize\");\n this.originalElement.css(\"resize\", \"none\");\n this._proportionallyResizeElements.push(this.originalElement.css({\n position: \"static\",\n zoom: 1,\n display: \"block\"\n }));\n this._proportionallyResize();\n }\n this._setupHandles();\n if (o.autoHide) {\n $(this.element).on(\"mouseenter\", function () {\n if (o.disabled) {\n return;\n }\n that._removeClass(\"ui-resizable-autohide\");\n that._handles.show();\n }).on(\"mouseleave\", function () {\n if (o.disabled) {\n return;\n }\n if (!that.resizing) {\n that._addClass(\"ui-resizable-autohide\");\n that._handles.hide();\n }\n });\n }\n this._mouseInit();\n },\n _destroy: function () {\n this._mouseDestroy();\n this._addedHandles.remove();\n var wrapper,\n _destroy = function (exp) {\n $(exp).removeData(\"resizable\").removeData(\"ui-resizable\").off(\".resizable\");\n };\n\n // TODO: Unwrap at same DOM position\n if (this.elementIsWrapper) {\n _destroy(this.element);\n wrapper = this.element;\n this.originalElement.css({\n position: wrapper.css(\"position\"),\n width: wrapper.outerWidth(),\n height: wrapper.outerHeight(),\n top: wrapper.css(\"top\"),\n left: wrapper.css(\"left\")\n }).insertAfter(wrapper);\n wrapper.remove();\n }\n this.originalElement.css(\"resize\", this.originalResizeStyle);\n _destroy(this.originalElement);\n return this;\n },\n _setOption: function (key, value) {\n this._super(key, value);\n switch (key) {\n case \"handles\":\n this._removeHandles();\n this._setupHandles();\n break;\n case \"aspectRatio\":\n this._aspectRatio = !!value;\n break;\n default:\n break;\n }\n },\n _setupHandles: function () {\n var o = this.options,\n handle,\n i,\n n,\n hname,\n axis,\n that = this;\n this.handles = o.handles || (!$(\".ui-resizable-handle\", this.element).length ? \"e,s,se\" : {\n n: \".ui-resizable-n\",\n e: \".ui-resizable-e\",\n s: \".ui-resizable-s\",\n w: \".ui-resizable-w\",\n se: \".ui-resizable-se\",\n sw: \".ui-resizable-sw\",\n ne: \".ui-resizable-ne\",\n nw: \".ui-resizable-nw\"\n });\n this._handles = $();\n this._addedHandles = $();\n if (this.handles.constructor === String) {\n if (this.handles === \"all\") {\n this.handles = \"n,e,s,w,se,sw,ne,nw\";\n }\n n = this.handles.split(\",\");\n this.handles = {};\n for (i = 0; i < n.length; i++) {\n handle = String.prototype.trim.call(n[i]);\n hname = \"ui-resizable-\" + handle;\n axis = $(\"<div>\");\n this._addClass(axis, \"ui-resizable-handle \" + hname);\n axis.css({\n zIndex: o.zIndex\n });\n this.handles[handle] = \".ui-resizable-\" + handle;\n if (!this.element.children(this.handles[handle]).length) {\n this.element.append(axis);\n this._addedHandles = this._addedHandles.add(axis);\n }\n }\n }\n this._renderAxis = function (target) {\n var i, axis, padPos, padWrapper;\n target = target || this.element;\n for (i in this.handles) {\n if (this.handles[i].constructor === String) {\n this.handles[i] = this.element.children(this.handles[i]).first().show();\n } else if (this.handles[i].jquery || this.handles[i].nodeType) {\n this.handles[i] = $(this.handles[i]);\n this._on(this.handles[i], {\n \"mousedown\": that._mouseDown\n });\n }\n if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)) {\n axis = $(this.handles[i], this.element);\n padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();\n padPos = [\"padding\", /ne|nw|n/.test(i) ? \"Top\" : /se|sw|s/.test(i) ? \"Bottom\" : /^e$/.test(i) ? \"Right\" : \"Left\"].join(\"\");\n target.css(padPos, padWrapper);\n this._proportionallyResize();\n }\n this._handles = this._handles.add(this.handles[i]);\n }\n };\n\n // TODO: make renderAxis a prototype function\n this._renderAxis(this.element);\n this._handles = this._handles.add(this.element.find(\".ui-resizable-handle\"));\n this._handles.disableSelection();\n this._handles.on(\"mouseover\", function () {\n if (!that.resizing) {\n if (this.className) {\n axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);\n }\n that.axis = axis && axis[1] ? axis[1] : \"se\";\n }\n });\n if (o.autoHide) {\n this._handles.hide();\n this._addClass(\"ui-resizable-autohide\");\n }\n },\n _removeHandles: function () {\n this._addedHandles.remove();\n },\n _mouseCapture: function (event) {\n var i,\n handle,\n capture = false;\n for (i in this.handles) {\n handle = $(this.handles[i])[0];\n if (handle === event.target || $.contains(handle, event.target)) {\n capture = true;\n }\n }\n return !this.options.disabled && capture;\n },\n _mouseStart: function (event) {\n var curleft,\n curtop,\n cursor,\n calculatedSize,\n o = this.options,\n el = this.element;\n this.resizing = true;\n this._renderProxy();\n curleft = this._num(this.helper.css(\"left\"));\n curtop = this._num(this.helper.css(\"top\"));\n if (o.containment) {\n curleft += $(o.containment).scrollLeft() || 0;\n curtop += $(o.containment).scrollTop() || 0;\n }\n this.offset = this.helper.offset();\n this.position = {\n left: curleft,\n top: curtop\n };\n if (!this._helper) {\n calculatedSize = this._calculateAdjustedElementDimensions(el);\n }\n this.size = this._helper ? {\n width: this.helper.width(),\n height: this.helper.height()\n } : {\n width: calculatedSize.width,\n height: calculatedSize.height\n };\n this.originalSize = this._helper ? {\n width: el.outerWidth(),\n height: el.outerHeight()\n } : {\n width: calculatedSize.width,\n height: calculatedSize.height\n };\n this.sizeDiff = {\n width: el.outerWidth() - el.width(),\n height: el.outerHeight() - el.height()\n };\n this.originalPosition = {\n left: curleft,\n top: curtop\n };\n this.originalMousePosition = {\n left: event.pageX,\n top: event.pageY\n };\n this.aspectRatio = typeof o.aspectRatio === \"number\" ? o.aspectRatio : this.originalSize.width / this.originalSize.height || 1;\n cursor = $(\".ui-resizable-\" + this.axis).css(\"cursor\");\n $(\"body\").css(\"cursor\", cursor === \"auto\" ? this.axis + \"-resize\" : cursor);\n this._addClass(\"ui-resizable-resizing\");\n this._propagate(\"start\", event);\n return true;\n },\n _mouseDrag: function (event) {\n var data,\n props,\n smp = this.originalMousePosition,\n a = this.axis,\n dx = event.pageX - smp.left || 0,\n dy = event.pageY - smp.top || 0,\n trigger = this._change[a];\n this._updatePrevProperties();\n if (!trigger) {\n return false;\n }\n data = trigger.apply(this, [event, dx, dy]);\n this._updateVirtualBoundaries(event.shiftKey);\n if (this._aspectRatio || event.shiftKey) {\n data = this._updateRatio(data, event);\n }\n data = this._respectSize(data, event);\n this._updateCache(data);\n this._propagate(\"resize\", event);\n props = this._applyChanges();\n if (!this._helper && this._proportionallyResizeElements.length) {\n this._proportionallyResize();\n }\n if (!$.isEmptyObject(props)) {\n this._updatePrevProperties();\n this._trigger(\"resize\", event, this.ui());\n this._applyChanges();\n }\n return false;\n },\n _mouseStop: function (event) {\n this.resizing = false;\n var pr,\n ista,\n soffseth,\n soffsetw,\n s,\n left,\n top,\n o = this.options,\n that = this;\n if (this._helper) {\n pr = this._proportionallyResizeElements;\n ista = pr.length && /textarea/i.test(pr[0].nodeName);\n soffseth = ista && this._hasScroll(pr[0], \"left\") ? 0 : that.sizeDiff.height;\n soffsetw = ista ? 0 : that.sizeDiff.width;\n s = {\n width: that.helper.width() - soffsetw,\n height: that.helper.height() - soffseth\n };\n left = parseFloat(that.element.css(\"left\")) + (that.position.left - that.originalPosition.left) || null;\n top = parseFloat(that.element.css(\"top\")) + (that.position.top - that.originalPosition.top) || null;\n if (!o.animate) {\n this.element.css($.extend(s, {\n top: top,\n left: left\n }));\n }\n that.helper.height(that.size.height);\n that.helper.width(that.size.width);\n if (this._helper && !o.animate) {\n this._proportionallyResize();\n }\n }\n $(\"body\").css(\"cursor\", \"auto\");\n this._removeClass(\"ui-resizable-resizing\");\n this._propagate(\"stop\", event);\n if (this._helper) {\n this.helper.remove();\n }\n return false;\n },\n _updatePrevProperties: function () {\n this.prevPosition = {\n top: this.position.top,\n left: this.position.left\n };\n this.prevSize = {\n width: this.size.width,\n height: this.size.height\n };\n },\n _applyChanges: function () {\n var props = {};\n if (this.position.top !== this.prevPosition.top) {\n props.top = this.position.top + \"px\";\n }\n if (this.position.left !== this.prevPosition.left) {\n props.left = this.position.left + \"px\";\n }\n this.helper.css(props);\n if (this.size.width !== this.prevSize.width) {\n props.width = this.size.width + \"px\";\n this.helper.width(props.width);\n }\n if (this.size.height !== this.prevSize.height) {\n props.height = this.size.height + \"px\";\n this.helper.height(props.height);\n }\n return props;\n },\n _updateVirtualBoundaries: function (forceAspectRatio) {\n var pMinWidth,\n pMaxWidth,\n pMinHeight,\n pMaxHeight,\n b,\n o = this.options;\n b = {\n minWidth: this._isNumber(o.minWidth) ? o.minWidth : 0,\n maxWidth: this._isNumber(o.maxWidth) ? o.maxWidth : Infinity,\n minHeight: this._isNumber(o.minHeight) ? o.minHeight : 0,\n maxHeight: this._isNumber(o.maxHeight) ? o.maxHeight : Infinity\n };\n if (this._aspectRatio || forceAspectRatio) {\n pMinWidth = b.minHeight * this.aspectRatio;\n pMinHeight = b.minWidth / this.aspectRatio;\n pMaxWidth = b.maxHeight * this.aspectRatio;\n pMaxHeight = b.maxWidth / this.aspectRatio;\n if (pMinWidth > b.minWidth) {\n b.minWidth = pMinWidth;\n }\n if (pMinHeight > b.minHeight) {\n b.minHeight = pMinHeight;\n }\n if (pMaxWidth < b.maxWidth) {\n b.maxWidth = pMaxWidth;\n }\n if (pMaxHeight < b.maxHeight) {\n b.maxHeight = pMaxHeight;\n }\n }\n this._vBoundaries = b;\n },\n _updateCache: function (data) {\n this.offset = this.helper.offset();\n if (this._isNumber(data.left)) {\n this.position.left = data.left;\n }\n if (this._isNumber(data.top)) {\n this.position.top = data.top;\n }\n if (this._isNumber(data.height)) {\n this.size.height = data.height;\n }\n if (this._isNumber(data.width)) {\n this.size.width = data.width;\n }\n },\n _updateRatio: function (data) {\n var cpos = this.position,\n csize = this.size,\n a = this.axis;\n if (this._isNumber(data.height)) {\n data.width = data.height * this.aspectRatio;\n } else if (this._isNumber(data.width)) {\n data.height = data.width / this.aspectRatio;\n }\n if (a === \"sw\") {\n data.left = cpos.left + (csize.width - data.width);\n data.top = null;\n }\n if (a === \"nw\") {\n data.top = cpos.top + (csize.height - data.height);\n data.left = cpos.left + (csize.width - data.width);\n }\n return data;\n },\n _respectSize: function (data) {\n var o = this._vBoundaries,\n a = this.axis,\n ismaxw = this._isNumber(data.width) && o.maxWidth && o.maxWidth < data.width,\n ismaxh = this._isNumber(data.height) && o.maxHeight && o.maxHeight < data.height,\n isminw = this._isNumber(data.width) && o.minWidth && o.minWidth > data.width,\n isminh = this._isNumber(data.height) && o.minHeight && o.minHeight > data.height,\n dw = this.originalPosition.left + this.originalSize.width,\n dh = this.originalPosition.top + this.originalSize.height,\n cw = /sw|nw|w/.test(a),\n ch = /nw|ne|n/.test(a);\n if (isminw) {\n data.width = o.minWidth;\n }\n if (isminh) {\n data.height = o.minHeight;\n }\n if (ismaxw) {\n data.width = o.maxWidth;\n }\n if (ismaxh) {\n data.height = o.maxHeight;\n }\n if (isminw && cw) {\n data.left = dw - o.minWidth;\n }\n if (ismaxw && cw) {\n data.left = dw - o.maxWidth;\n }\n if (isminh && ch) {\n data.top = dh - o.minHeight;\n }\n if (ismaxh && ch) {\n data.top = dh - o.maxHeight;\n }\n\n // Fixing jump error on top/left - bug #2330\n if (!data.width && !data.height && !data.left && data.top) {\n data.top = null;\n } else if (!data.width && !data.height && !data.top && data.left) {\n data.left = null;\n }\n return data;\n },\n _getPaddingPlusBorderDimensions: function (element) {\n var i = 0,\n widths = [],\n borders = [element.css(\"borderTopWidth\"), element.css(\"borderRightWidth\"), element.css(\"borderBottomWidth\"), element.css(\"borderLeftWidth\")],\n paddings = [element.css(\"paddingTop\"), element.css(\"paddingRight\"), element.css(\"paddingBottom\"), element.css(\"paddingLeft\")];\n for (; i < 4; i++) {\n widths[i] = parseFloat(borders[i]) || 0;\n widths[i] += parseFloat(paddings[i]) || 0;\n }\n return {\n height: widths[0] + widths[2],\n width: widths[1] + widths[3]\n };\n },\n _calculateAdjustedElementDimensions: function (element) {\n var elWidth,\n elHeight,\n paddingBorder,\n ce = element.get(0);\n if (element.css(\"box-sizing\") !== \"content-box\" || !this._hasScroll(ce) && !this._hasScroll(ce, \"left\")) {\n return {\n height: parseFloat(element.css(\"height\")),\n width: parseFloat(element.css(\"width\"))\n };\n }\n\n // Check if CSS inline styles are set and use those (usually from previous resizes)\n elWidth = parseFloat(ce.style.width);\n elHeight = parseFloat(ce.style.height);\n paddingBorder = this._getPaddingPlusBorderDimensions(element);\n elWidth = isNaN(elWidth) ? this._getElementTheoreticalSize(element, paddingBorder, \"width\") : elWidth;\n elHeight = isNaN(elHeight) ? this._getElementTheoreticalSize(element, paddingBorder, \"height\") : elHeight;\n return {\n height: elHeight,\n width: elWidth\n };\n },\n _getElementTheoreticalSize: function (element, extraSize, dimension) {\n // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n var size = Math.max(0, Math.ceil(element.get(0)[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - extraSize[dimension] - 0.5\n\n // If offsetWidth/offsetHeight is unknown, then we can't determine theoretical size.\n // Use an explicit zero to avoid NaN.\n // See https://github.com/jquery/jquery/issues/3964\n )) || 0;\n return size;\n },\n _proportionallyResize: function () {\n if (!this._proportionallyResizeElements.length) {\n return;\n }\n var prel,\n i = 0,\n element = this.helper || this.element;\n for (; i < this._proportionallyResizeElements.length; i++) {\n prel = this._proportionallyResizeElements[i];\n\n // TODO: Seems like a bug to cache this.outerDimensions\n // considering that we are in a loop.\n if (!this.outerDimensions) {\n this.outerDimensions = this._getPaddingPlusBorderDimensions(prel);\n }\n prel.css({\n height: element.height() - this.outerDimensions.height || 0,\n width: element.width() - this.outerDimensions.width || 0\n });\n }\n },\n _renderProxy: function () {\n var el = this.element,\n o = this.options;\n this.elementOffset = el.offset();\n if (this._helper) {\n this.helper = this.helper || $(\"<div></div>\").css({\n overflow: \"hidden\"\n });\n this._addClass(this.helper, this._helper);\n this.helper.css({\n width: this.element.outerWidth(),\n height: this.element.outerHeight(),\n position: \"absolute\",\n left: this.elementOffset.left + \"px\",\n top: this.elementOffset.top + \"px\",\n zIndex: ++o.zIndex //TODO: Don't modify option\n });\n this.helper.appendTo(\"body\").disableSelection();\n } else {\n this.helper = this.element;\n }\n },\n _change: {\n e: function (event, dx) {\n return {\n width: this.originalSize.width + dx\n };\n },\n w: function (event, dx) {\n var cs = this.originalSize,\n sp = this.originalPosition;\n return {\n left: sp.left + dx,\n width: cs.width - dx\n };\n },\n n: function (event, dx, dy) {\n var cs = this.originalSize,\n sp = this.originalPosition;\n return {\n top: sp.top + dy,\n height: cs.height - dy\n };\n },\n s: function (event, dx, dy) {\n return {\n height: this.originalSize.height + dy\n };\n },\n se: function (event, dx, dy) {\n return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n },\n sw: function (event, dx, dy) {\n return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n },\n ne: function (event, dx, dy) {\n return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n },\n nw: function (event, dx, dy) {\n return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n }\n },\n _propagate: function (n, event) {\n $.ui.plugin.call(this, n, [event, this.ui()]);\n if (n !== \"resize\") {\n this._trigger(n, event, this.ui());\n }\n },\n plugins: {},\n ui: function () {\n return {\n originalElement: this.originalElement,\n element: this.element,\n helper: this.helper,\n position: this.position,\n size: this.size,\n originalSize: this.originalSize,\n originalPosition: this.originalPosition\n };\n }\n });\n\n /*\n * Resizable Extensions\n */\n\n $.ui.plugin.add(\"resizable\", \"animate\", {\n stop: function (event) {\n var that = $(this).resizable(\"instance\"),\n o = that.options,\n pr = that._proportionallyResizeElements,\n ista = pr.length && /textarea/i.test(pr[0].nodeName),\n soffseth = ista && that._hasScroll(pr[0], \"left\") ? 0 : that.sizeDiff.height,\n soffsetw = ista ? 0 : that.sizeDiff.width,\n style = {\n width: that.size.width - soffsetw,\n height: that.size.height - soffseth\n },\n left = parseFloat(that.element.css(\"left\")) + (that.position.left - that.originalPosition.left) || null,\n top = parseFloat(that.element.css(\"top\")) + (that.position.top - that.originalPosition.top) || null;\n that.element.animate($.extend(style, top && left ? {\n top: top,\n left: left\n } : {}), {\n duration: o.animateDuration,\n easing: o.animateEasing,\n step: function () {\n var data = {\n width: parseFloat(that.element.css(\"width\")),\n height: parseFloat(that.element.css(\"height\")),\n top: parseFloat(that.element.css(\"top\")),\n left: parseFloat(that.element.css(\"left\"))\n };\n if (pr && pr.length) {\n $(pr[0]).css({\n width: data.width,\n height: data.height\n });\n }\n\n // Propagating resize, and updating values for each animation step\n that._updateCache(data);\n that._propagate(\"resize\", event);\n }\n });\n }\n });\n $.ui.plugin.add(\"resizable\", \"containment\", {\n start: function () {\n var element,\n p,\n co,\n ch,\n cw,\n width,\n height,\n that = $(this).resizable(\"instance\"),\n o = that.options,\n el = that.element,\n oc = o.containment,\n ce = oc instanceof $ ? oc.get(0) : /parent/.test(oc) ? el.parent().get(0) : oc;\n if (!ce) {\n return;\n }\n that.containerElement = $(ce);\n if (/document/.test(oc) || oc === document) {\n that.containerOffset = {\n left: 0,\n top: 0\n };\n that.containerPosition = {\n left: 0,\n top: 0\n };\n that.parentData = {\n element: $(document),\n left: 0,\n top: 0,\n width: $(document).width(),\n height: $(document).height() || document.body.parentNode.scrollHeight\n };\n } else {\n element = $(ce);\n p = [];\n $([\"Top\", \"Right\", \"Left\", \"Bottom\"]).each(function (i, name) {\n p[i] = that._num(element.css(\"padding\" + name));\n });\n that.containerOffset = element.offset();\n that.containerPosition = element.position();\n that.containerSize = {\n height: element.innerHeight() - p[3],\n width: element.innerWidth() - p[1]\n };\n co = that.containerOffset;\n ch = that.containerSize.height;\n cw = that.containerSize.width;\n width = that._hasScroll(ce, \"left\") ? ce.scrollWidth : cw;\n height = that._hasScroll(ce) ? ce.scrollHeight : ch;\n that.parentData = {\n element: ce,\n left: co.left,\n top: co.top,\n width: width,\n height: height\n };\n }\n },\n resize: function (event) {\n var woset,\n hoset,\n isParent,\n isOffsetRelative,\n that = $(this).resizable(\"instance\"),\n o = that.options,\n co = that.containerOffset,\n cp = that.position,\n pRatio = that._aspectRatio || event.shiftKey,\n cop = {\n top: 0,\n left: 0\n },\n ce = that.containerElement,\n continueResize = true;\n if (ce[0] !== document && /static/.test(ce.css(\"position\"))) {\n cop = co;\n }\n if (cp.left < (that._helper ? co.left : 0)) {\n that.size.width = that.size.width + (that._helper ? that.position.left - co.left : that.position.left - cop.left);\n if (pRatio) {\n that.size.height = that.size.width / that.aspectRatio;\n continueResize = false;\n }\n that.position.left = o.helper ? co.left : 0;\n }\n if (cp.top < (that._helper ? co.top : 0)) {\n that.size.height = that.size.height + (that._helper ? that.position.top - co.top : that.position.top);\n if (pRatio) {\n that.size.width = that.size.height * that.aspectRatio;\n continueResize = false;\n }\n that.position.top = that._helper ? co.top : 0;\n }\n isParent = that.containerElement.get(0) === that.element.parent().get(0);\n isOffsetRelative = /relative|absolute/.test(that.containerElement.css(\"position\"));\n if (isParent && isOffsetRelative) {\n that.offset.left = that.parentData.left + that.position.left;\n that.offset.top = that.parentData.top + that.position.top;\n } else {\n that.offset.left = that.element.offset().left;\n that.offset.top = that.element.offset().top;\n }\n woset = Math.abs(that.sizeDiff.width + (that._helper ? that.offset.left - cop.left : that.offset.left - co.left));\n hoset = Math.abs(that.sizeDiff.height + (that._helper ? that.offset.top - cop.top : that.offset.top - co.top));\n if (woset + that.size.width >= that.parentData.width) {\n that.size.width = that.parentData.width - woset;\n if (pRatio) {\n that.size.height = that.size.width / that.aspectRatio;\n continueResize = false;\n }\n }\n if (hoset + that.size.height >= that.parentData.height) {\n that.size.height = that.parentData.height - hoset;\n if (pRatio) {\n that.size.width = that.size.height * that.aspectRatio;\n continueResize = false;\n }\n }\n if (!continueResize) {\n that.position.left = that.prevPosition.left;\n that.position.top = that.prevPosition.top;\n that.size.width = that.prevSize.width;\n that.size.height = that.prevSize.height;\n }\n },\n stop: function () {\n var that = $(this).resizable(\"instance\"),\n o = that.options,\n co = that.containerOffset,\n cop = that.containerPosition,\n ce = that.containerElement,\n helper = $(that.helper),\n ho = helper.offset(),\n w = helper.outerWidth() - that.sizeDiff.width,\n h = helper.outerHeight() - that.sizeDiff.height;\n if (that._helper && !o.animate && /relative/.test(ce.css(\"position\"))) {\n $(this).css({\n left: ho.left - cop.left - co.left,\n width: w,\n height: h\n });\n }\n if (that._helper && !o.animate && /static/.test(ce.css(\"position\"))) {\n $(this).css({\n left: ho.left - cop.left - co.left,\n width: w,\n height: h\n });\n }\n }\n });\n $.ui.plugin.add(\"resizable\", \"alsoResize\", {\n start: function () {\n var that = $(this).resizable(\"instance\"),\n o = that.options;\n $(o.alsoResize).each(function () {\n var el = $(this),\n elSize = that._calculateAdjustedElementDimensions(el);\n el.data(\"ui-resizable-alsoresize\", {\n width: elSize.width,\n height: elSize.height,\n left: parseFloat(el.css(\"left\")),\n top: parseFloat(el.css(\"top\"))\n });\n });\n },\n resize: function (event, ui) {\n var that = $(this).resizable(\"instance\"),\n o = that.options,\n os = that.originalSize,\n op = that.originalPosition,\n delta = {\n height: that.size.height - os.height || 0,\n width: that.size.width - os.width || 0,\n top: that.position.top - op.top || 0,\n left: that.position.left - op.left || 0\n };\n $(o.alsoResize).each(function () {\n var el = $(this),\n start = $(this).data(\"ui-resizable-alsoresize\"),\n style = {},\n css = el.parents(ui.originalElement[0]).length ? [\"width\", \"height\"] : [\"width\", \"height\", \"top\", \"left\"];\n $.each(css, function (i, prop) {\n var sum = (start[prop] || 0) + (delta[prop] || 0);\n if (sum && sum >= 0) {\n style[prop] = sum || null;\n }\n });\n el.css(style);\n });\n },\n stop: function () {\n $(this).removeData(\"ui-resizable-alsoresize\");\n }\n });\n $.ui.plugin.add(\"resizable\", \"ghost\", {\n start: function () {\n var that = $(this).resizable(\"instance\"),\n cs = that.size;\n that.ghost = that.originalElement.clone();\n that.ghost.css({\n opacity: 0.25,\n display: \"block\",\n position: \"relative\",\n height: cs.height,\n width: cs.width,\n margin: 0,\n left: 0,\n top: 0\n });\n that._addClass(that.ghost, \"ui-resizable-ghost\");\n\n // DEPRECATED\n // TODO: remove after 1.12\n if ($.uiBackCompat === true && typeof that.options.ghost === \"string\") {\n // Ghost option\n that.ghost.addClass(this.options.ghost);\n }\n that.ghost.appendTo(that.helper);\n },\n resize: function () {\n var that = $(this).resizable(\"instance\");\n if (that.ghost) {\n that.ghost.css({\n position: \"relative\",\n height: that.size.height,\n width: that.size.width\n });\n }\n },\n stop: function () {\n var that = $(this).resizable(\"instance\");\n if (that.ghost && that.helper) {\n that.helper.get(0).removeChild(that.ghost.get(0));\n }\n }\n });\n $.ui.plugin.add(\"resizable\", \"grid\", {\n resize: function () {\n var outerDimensions,\n that = $(this).resizable(\"instance\"),\n o = that.options,\n cs = that.size,\n os = that.originalSize,\n op = that.originalPosition,\n a = that.axis,\n grid = typeof o.grid === \"number\" ? [o.grid, o.grid] : o.grid,\n gridX = grid[0] || 1,\n gridY = grid[1] || 1,\n ox = Math.round((cs.width - os.width) / gridX) * gridX,\n oy = Math.round((cs.height - os.height) / gridY) * gridY,\n newWidth = os.width + ox,\n newHeight = os.height + oy,\n isMaxWidth = o.maxWidth && o.maxWidth < newWidth,\n isMaxHeight = o.maxHeight && o.maxHeight < newHeight,\n isMinWidth = o.minWidth && o.minWidth > newWidth,\n isMinHeight = o.minHeight && o.minHeight > newHeight;\n o.grid = grid;\n if (isMinWidth) {\n newWidth += gridX;\n }\n if (isMinHeight) {\n newHeight += gridY;\n }\n if (isMaxWidth) {\n newWidth -= gridX;\n }\n if (isMaxHeight) {\n newHeight -= gridY;\n }\n if (/^(se|s|e)$/.test(a)) {\n that.size.width = newWidth;\n that.size.height = newHeight;\n } else if (/^(ne)$/.test(a)) {\n that.size.width = newWidth;\n that.size.height = newHeight;\n that.position.top = op.top - oy;\n } else if (/^(sw)$/.test(a)) {\n that.size.width = newWidth;\n that.size.height = newHeight;\n that.position.left = op.left - ox;\n } else {\n if (newHeight - gridY <= 0 || newWidth - gridX <= 0) {\n outerDimensions = that._getPaddingPlusBorderDimensions(this);\n }\n if (newHeight - gridY > 0) {\n that.size.height = newHeight;\n that.position.top = op.top - oy;\n } else {\n newHeight = gridY - outerDimensions.height;\n that.size.height = newHeight;\n that.position.top = op.top + os.height - newHeight;\n }\n if (newWidth - gridX > 0) {\n that.size.width = newWidth;\n that.position.left = op.left - ox;\n } else {\n newWidth = gridX - outerDimensions.width;\n that.size.width = newWidth;\n that.position.left = op.left + os.width - newWidth;\n }\n }\n }\n });\n var widgetsResizable = $.ui.resizable;\n\n /*!\n * jQuery UI Dialog 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Dialog\n //>>group: Widgets\n //>>description: Displays customizable dialog windows.\n //>>docs: https://api.jqueryui.com/dialog/\n //>>demos: https://jqueryui.com/dialog/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/dialog.css\n //>>css.theme: ../../themes/base/theme.css\n\n $.widget(\"ui.dialog\", {\n version: \"1.14.1\",\n options: {\n appendTo: \"body\",\n autoOpen: true,\n buttons: [],\n classes: {\n \"ui-dialog\": \"ui-corner-all\",\n \"ui-dialog-titlebar\": \"ui-corner-all\"\n },\n closeOnEscape: true,\n closeText: \"Close\",\n draggable: true,\n hide: null,\n height: \"auto\",\n maxHeight: null,\n maxWidth: null,\n minHeight: 150,\n minWidth: 150,\n modal: false,\n position: {\n my: \"center\",\n at: \"center\",\n of: window,\n collision: \"fit\",\n // Ensure the titlebar is always visible\n using: function (pos) {\n var topOffset = $(this).css(pos).offset().top;\n if (topOffset < 0) {\n $(this).css(\"top\", pos.top - topOffset);\n }\n }\n },\n resizable: true,\n show: null,\n title: null,\n uiDialogTitleHeadingLevel: 0,\n width: 300,\n // Callbacks\n beforeClose: null,\n close: null,\n drag: null,\n dragStart: null,\n dragStop: null,\n focus: null,\n open: null,\n resize: null,\n resizeStart: null,\n resizeStop: null\n },\n sizeRelatedOptions: {\n buttons: true,\n height: true,\n maxHeight: true,\n maxWidth: true,\n minHeight: true,\n minWidth: true,\n width: true\n },\n resizableRelatedOptions: {\n maxHeight: true,\n maxWidth: true,\n minHeight: true,\n minWidth: true\n },\n _create: function () {\n this.originalCss = {\n display: this.element[0].style.display,\n width: this.element[0].style.width,\n minHeight: this.element[0].style.minHeight,\n maxHeight: this.element[0].style.maxHeight,\n height: this.element[0].style.height\n };\n this.originalPosition = {\n parent: this.element.parent(),\n index: this.element.parent().children().index(this.element)\n };\n this.originalTitle = this.element.attr(\"title\");\n if (this.options.title == null && this.originalTitle != null) {\n this.options.title = this.originalTitle;\n }\n\n // Dialogs can't be disabled\n if (this.options.disabled) {\n this.options.disabled = false;\n }\n this._createWrapper();\n this.element.show().removeAttr(\"title\").appendTo(this.uiDialog);\n this._addClass(\"ui-dialog-content\", \"ui-widget-content\");\n this._createTitlebar();\n this._createButtonPane();\n if (this.options.draggable && $.fn.draggable) {\n this._makeDraggable();\n }\n if (this.options.resizable && $.fn.resizable) {\n this._makeResizable();\n }\n this._isOpen = false;\n this._trackFocus();\n },\n _init: function () {\n if (this.options.autoOpen) {\n this.open();\n }\n },\n _appendTo: function () {\n var element = this.options.appendTo;\n if (element && (element.jquery || element.nodeType)) {\n return $(element);\n }\n return this.document.find(element || \"body\").eq(0);\n },\n _destroy: function () {\n var next,\n originalPosition = this.originalPosition;\n this._untrackInstance();\n this._destroyOverlay();\n this.element.removeUniqueId().css(this.originalCss)\n\n // Without detaching first, the following becomes really slow\n .detach();\n this.uiDialog.remove();\n if (this.originalTitle) {\n this.element.attr(\"title\", this.originalTitle);\n }\n next = originalPosition.parent.children().eq(originalPosition.index);\n\n // Don't try to place the dialog next to itself (#8613)\n if (next.length && next[0] !== this.element[0]) {\n next.before(this.element);\n } else {\n originalPosition.parent.append(this.element);\n }\n },\n widget: function () {\n return this.uiDialog;\n },\n disable: $.noop,\n enable: $.noop,\n close: function (event) {\n var that = this;\n if (!this._isOpen || this._trigger(\"beforeClose\", event) === false) {\n return;\n }\n this._isOpen = false;\n this._focusedElement = null;\n this._destroyOverlay();\n this._untrackInstance();\n if (!this.opener.filter(\":focusable\").trigger(\"focus\").length) {\n // Hiding a focused element doesn't trigger blur in WebKit\n // so in case we have nothing to focus on, explicitly blur the active element\n // https://bugs.webkit.org/show_bug.cgi?id=47182\n $(this.document[0].activeElement).trigger(\"blur\");\n }\n this._hide(this.uiDialog, this.options.hide, function () {\n that._trigger(\"close\", event);\n });\n },\n isOpen: function () {\n return this._isOpen;\n },\n moveToTop: function () {\n this._moveToTop();\n },\n _moveToTop: function (event, silent) {\n var moved = false,\n zIndices = this.uiDialog.siblings(\".ui-front:visible\").map(function () {\n return +$(this).css(\"z-index\");\n }).get(),\n zIndexMax = Math.max.apply(null, zIndices);\n if (zIndexMax >= +this.uiDialog.css(\"z-index\")) {\n this.uiDialog.css(\"z-index\", zIndexMax + 1);\n moved = true;\n }\n if (moved && !silent) {\n this._trigger(\"focus\", event);\n }\n return moved;\n },\n open: function () {\n var that = this;\n if (this._isOpen) {\n if (this._moveToTop()) {\n this._focusTabbable();\n }\n return;\n }\n this._isOpen = true;\n this.opener = $(this.document[0].activeElement);\n this._size();\n this._position();\n this._createOverlay();\n this._moveToTop(null, true);\n\n // Ensure the overlay is moved to the top with the dialog, but only when\n // opening. The overlay shouldn't move after the dialog is open so that\n // modeless dialogs opened after the modal dialog stack properly.\n if (this.overlay) {\n this.overlay.css(\"z-index\", this.uiDialog.css(\"z-index\") - 1);\n }\n this._show(this.uiDialog, this.options.show, function () {\n that._focusTabbable();\n that._trigger(\"focus\");\n });\n\n // Track the dialog immediately upon opening in case a focus event\n // somehow occurs outside of the dialog before an element inside the\n // dialog is focused (#10152)\n this._makeFocusTarget();\n this._trigger(\"open\");\n },\n _focusTabbable: function () {\n // Set focus to the first match:\n // 1. An element that was focused previously\n // 2. First element inside the dialog matching [autofocus]\n // 3. Tabbable element inside the content element\n // 4. Tabbable element inside the buttonpane\n // 5. The close button\n // 6. The dialog itself\n var hasFocus = this._focusedElement;\n if (!hasFocus) {\n hasFocus = this.element.find(\"[autofocus]\");\n }\n if (!hasFocus.length) {\n hasFocus = this.element.find(\":tabbable\");\n }\n if (!hasFocus.length) {\n hasFocus = this.uiDialogButtonPane.find(\":tabbable\");\n }\n if (!hasFocus.length) {\n hasFocus = this.uiDialogTitlebarClose.filter(\":tabbable\");\n }\n if (!hasFocus.length) {\n hasFocus = this.uiDialog;\n }\n hasFocus.eq(0).trigger(\"focus\");\n },\n _restoreTabbableFocus: function () {\n var activeElement = this.document[0].activeElement,\n isActive = this.uiDialog[0] === activeElement || $.contains(this.uiDialog[0], activeElement);\n if (!isActive) {\n this._focusTabbable();\n }\n },\n _keepFocus: function (event) {\n event.preventDefault();\n this._restoreTabbableFocus();\n },\n _createWrapper: function () {\n this.uiDialog = $(\"<div>\").hide().attr({\n // Setting tabIndex makes the div focusable\n tabIndex: -1,\n role: \"dialog\",\n \"aria-modal\": this.options.modal ? \"true\" : null\n }).appendTo(this._appendTo());\n this._addClass(this.uiDialog, \"ui-dialog\", \"ui-widget ui-widget-content ui-front\");\n this._on(this.uiDialog, {\n keydown: function (event) {\n if (this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && event.keyCode === $.ui.keyCode.ESCAPE) {\n event.preventDefault();\n this.close(event);\n return;\n }\n\n // Prevent tabbing out of dialogs\n if (event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented()) {\n return;\n }\n var tabbables = this.uiDialog.find(\":tabbable\"),\n first = tabbables.first(),\n last = tabbables.last();\n if ((event.target === last[0] || event.target === this.uiDialog[0]) && !event.shiftKey) {\n this._delay(function () {\n first.trigger(\"focus\");\n });\n event.preventDefault();\n } else if ((event.target === first[0] || event.target === this.uiDialog[0]) && event.shiftKey) {\n this._delay(function () {\n last.trigger(\"focus\");\n });\n event.preventDefault();\n }\n },\n mousedown: function (event) {\n if (this._moveToTop(event)) {\n this._focusTabbable();\n }\n }\n });\n\n // We assume that any existing aria-describedby attribute means\n // that the dialog content is marked up properly\n // otherwise we brute force the content as the description\n if (!this.element.find(\"[aria-describedby]\").length) {\n this.uiDialog.attr({\n \"aria-describedby\": this.element.uniqueId().attr(\"id\")\n });\n }\n },\n _createTitlebar: function () {\n var uiDialogTitle;\n this.uiDialogTitlebar = $(\"<div>\");\n this._addClass(this.uiDialogTitlebar, \"ui-dialog-titlebar\", \"ui-widget-header ui-helper-clearfix\");\n this._on(this.uiDialogTitlebar, {\n mousedown: function (event) {\n // Don't prevent click on close button (#8838)\n // Focusing a dialog that is partially scrolled out of view\n // causes the browser to scroll it into view, preventing the click event\n if (!$(event.target).closest(\".ui-dialog-titlebar-close\")) {\n // Dialog isn't getting focus when dragging (#8063)\n this.uiDialog.trigger(\"focus\");\n }\n }\n });\n this.uiDialogTitlebarClose = $(\"<button type='button'></button>\").button({\n label: $(\"<a>\").text(this.options.closeText).html(),\n icon: \"ui-icon-closethick\",\n showLabel: false\n }).appendTo(this.uiDialogTitlebar);\n this._addClass(this.uiDialogTitlebarClose, \"ui-dialog-titlebar-close\");\n this._on(this.uiDialogTitlebarClose, {\n click: function (event) {\n event.preventDefault();\n this.close(event);\n }\n });\n var uiDialogHeadingLevel = Number.isInteger(this.options.uiDialogTitleHeadingLevel) && this.options.uiDialogTitleHeadingLevel > 0 && this.options.uiDialogTitleHeadingLevel <= 6 ? \"h\" + this.options.uiDialogTitleHeadingLevel : \"span\";\n uiDialogTitle = $(\"<\" + uiDialogHeadingLevel + \">\").uniqueId().prependTo(this.uiDialogTitlebar);\n this._addClass(uiDialogTitle, \"ui-dialog-title\");\n this._title(uiDialogTitle);\n this.uiDialogTitlebar.prependTo(this.uiDialog);\n this.uiDialog.attr({\n \"aria-labelledby\": uiDialogTitle.attr(\"id\")\n });\n },\n _title: function (title) {\n if (this.options.title) {\n title.text(this.options.title);\n } else {\n title.html(\" \");\n }\n },\n _createButtonPane: function () {\n this.uiDialogButtonPane = $(\"<div>\");\n this._addClass(this.uiDialogButtonPane, \"ui-dialog-buttonpane\", \"ui-widget-content ui-helper-clearfix\");\n this.uiButtonSet = $(\"<div>\").appendTo(this.uiDialogButtonPane);\n this._addClass(this.uiButtonSet, \"ui-dialog-buttonset\");\n this._createButtons();\n },\n _createButtons: function () {\n var that = this,\n buttons = this.options.buttons;\n\n // If we already have a button pane, remove it\n this.uiDialogButtonPane.remove();\n this.uiButtonSet.empty();\n if ($.isEmptyObject(buttons) || Array.isArray(buttons) && !buttons.length) {\n this._removeClass(this.uiDialog, \"ui-dialog-buttons\");\n return;\n }\n $.each(buttons, function (name, props) {\n var click, buttonOptions;\n props = typeof props === \"function\" ? {\n click: props,\n text: name\n } : props;\n\n // Default to a non-submitting button\n props = $.extend({\n type: \"button\"\n }, props);\n\n // Change the context for the click callback to be the main element\n click = props.click;\n buttonOptions = {\n icon: props.icon,\n iconPosition: props.iconPosition,\n showLabel: props.showLabel,\n // Deprecated options\n icons: props.icons,\n text: props.text\n };\n delete props.click;\n delete props.icon;\n delete props.iconPosition;\n delete props.showLabel;\n\n // Deprecated options\n delete props.icons;\n if (typeof props.text === \"boolean\") {\n delete props.text;\n }\n $(\"<button></button>\", props).button(buttonOptions).appendTo(that.uiButtonSet).on(\"click\", function () {\n click.apply(that.element[0], arguments);\n });\n });\n this._addClass(this.uiDialog, \"ui-dialog-buttons\");\n this.uiDialogButtonPane.appendTo(this.uiDialog);\n },\n _makeDraggable: function () {\n var that = this,\n options = this.options;\n function filteredUi(ui) {\n return {\n position: ui.position,\n offset: ui.offset\n };\n }\n this.uiDialog.draggable({\n cancel: \".ui-dialog-content, .ui-dialog-titlebar-close\",\n handle: \".ui-dialog-titlebar\",\n containment: \"document\",\n start: function (event, ui) {\n that._addClass($(this), \"ui-dialog-dragging\");\n that._blockFrames();\n that._trigger(\"dragStart\", event, filteredUi(ui));\n },\n drag: function (event, ui) {\n that._trigger(\"drag\", event, filteredUi(ui));\n },\n stop: function (event, ui) {\n var left = ui.offset.left - that.document.scrollLeft(),\n top = ui.offset.top - that.document.scrollTop();\n options.position = {\n my: \"left top\",\n at: \"left\" + (left >= 0 ? \"+\" : \"\") + left + \" \" + \"top\" + (top >= 0 ? \"+\" : \"\") + top,\n of: that.window\n };\n that._removeClass($(this), \"ui-dialog-dragging\");\n that._unblockFrames();\n that._trigger(\"dragStop\", event, filteredUi(ui));\n }\n });\n },\n _makeResizable: function () {\n var that = this,\n options = this.options,\n handles = options.resizable,\n // .ui-resizable has position: relative defined in the stylesheet\n // but dialogs have to use absolute or fixed positioning\n position = this.uiDialog.css(\"position\"),\n resizeHandles = typeof handles === \"string\" ? handles : \"n,e,s,w,se,sw,ne,nw\";\n function filteredUi(ui) {\n return {\n originalPosition: ui.originalPosition,\n originalSize: ui.originalSize,\n position: ui.position,\n size: ui.size\n };\n }\n this.uiDialog.resizable({\n cancel: \".ui-dialog-content\",\n containment: \"document\",\n alsoResize: this.element,\n maxWidth: options.maxWidth,\n maxHeight: options.maxHeight,\n minWidth: options.minWidth,\n minHeight: this._minHeight(),\n handles: resizeHandles,\n start: function (event, ui) {\n that._addClass($(this), \"ui-dialog-resizing\");\n that._blockFrames();\n that._trigger(\"resizeStart\", event, filteredUi(ui));\n },\n resize: function (event, ui) {\n that._trigger(\"resize\", event, filteredUi(ui));\n },\n stop: function (event, ui) {\n var offset = that.uiDialog.offset(),\n left = offset.left - that.document.scrollLeft(),\n top = offset.top - that.document.scrollTop();\n options.height = that.uiDialog.height();\n options.width = that.uiDialog.width();\n options.position = {\n my: \"left top\",\n at: \"left\" + (left >= 0 ? \"+\" : \"\") + left + \" \" + \"top\" + (top >= 0 ? \"+\" : \"\") + top,\n of: that.window\n };\n that._removeClass($(this), \"ui-dialog-resizing\");\n that._unblockFrames();\n that._trigger(\"resizeStop\", event, filteredUi(ui));\n }\n }).css(\"position\", position);\n },\n _trackFocus: function () {\n this._on(this.widget(), {\n focusin: function (event) {\n this._makeFocusTarget();\n this._focusedElement = $(event.target);\n }\n });\n },\n _makeFocusTarget: function () {\n this._untrackInstance();\n this._trackingInstances().unshift(this);\n },\n _untrackInstance: function () {\n var instances = this._trackingInstances(),\n exists = $.inArray(this, instances);\n if (exists !== -1) {\n instances.splice(exists, 1);\n }\n },\n _trackingInstances: function () {\n var instances = this.document.data(\"ui-dialog-instances\");\n if (!instances) {\n instances = [];\n this.document.data(\"ui-dialog-instances\", instances);\n }\n return instances;\n },\n _minHeight: function () {\n var options = this.options;\n return options.height === \"auto\" ? options.minHeight : Math.min(options.minHeight, options.height);\n },\n _position: function () {\n // Need to show the dialog to get the actual offset in the position plugin\n var isVisible = this.uiDialog.is(\":visible\");\n if (!isVisible) {\n this.uiDialog.show();\n }\n this.uiDialog.position(this.options.position);\n if (!isVisible) {\n this.uiDialog.hide();\n }\n },\n _setOptions: function (options) {\n var that = this,\n resize = false,\n resizableOptions = {};\n $.each(options, function (key, value) {\n that._setOption(key, value);\n if (key in that.sizeRelatedOptions) {\n resize = true;\n }\n if (key in that.resizableRelatedOptions) {\n resizableOptions[key] = value;\n }\n });\n if (resize) {\n this._size();\n this._position();\n }\n if (this.uiDialog.is(\":data(ui-resizable)\")) {\n this.uiDialog.resizable(\"option\", resizableOptions);\n }\n },\n _setOption: function (key, value) {\n var isDraggable,\n isResizable,\n uiDialog = this.uiDialog;\n if (key === \"disabled\") {\n return;\n }\n this._super(key, value);\n if (key === \"appendTo\") {\n this.uiDialog.appendTo(this._appendTo());\n }\n if (key === \"buttons\") {\n this._createButtons();\n }\n if (key === \"closeText\") {\n this.uiDialogTitlebarClose.button({\n // Ensure that we always pass a string\n label: $(\"<a>\").text(\"\" + this.options.closeText).html()\n });\n }\n if (key === \"draggable\") {\n isDraggable = uiDialog.is(\":data(ui-draggable)\");\n if (isDraggable && !value) {\n uiDialog.draggable(\"destroy\");\n }\n if (!isDraggable && value) {\n this._makeDraggable();\n }\n }\n if (key === \"position\") {\n this._position();\n }\n if (key === \"resizable\") {\n // currently resizable, becoming non-resizable\n isResizable = uiDialog.is(\":data(ui-resizable)\");\n if (isResizable && !value) {\n uiDialog.resizable(\"destroy\");\n }\n\n // Currently resizable, changing handles\n if (isResizable && typeof value === \"string\") {\n uiDialog.resizable(\"option\", \"handles\", value);\n }\n\n // Currently non-resizable, becoming resizable\n if (!isResizable && value !== false) {\n this._makeResizable();\n }\n }\n if (key === \"title\") {\n this._title(this.uiDialogTitlebar.find(\".ui-dialog-title\"));\n }\n if (key === \"modal\") {\n uiDialog.attr(\"aria-modal\", value ? \"true\" : null);\n }\n },\n _size: function () {\n // If the user has resized the dialog, the .ui-dialog and .ui-dialog-content\n // divs will both have width and height set, so we need to reset them\n var nonContentHeight,\n minContentHeight,\n maxContentHeight,\n options = this.options;\n\n // Reset content sizing\n this.element.show().css({\n width: \"auto\",\n minHeight: 0,\n maxHeight: \"none\",\n height: 0\n });\n if (options.minWidth > options.width) {\n options.width = options.minWidth;\n }\n\n // Reset wrapper sizing\n // determine the height of all the non-content elements\n nonContentHeight = this.uiDialog.css({\n height: \"auto\",\n width: options.width\n }).outerHeight();\n minContentHeight = Math.max(0, options.minHeight - nonContentHeight);\n maxContentHeight = typeof options.maxHeight === \"number\" ? Math.max(0, options.maxHeight - nonContentHeight) : \"none\";\n if (options.height === \"auto\") {\n this.element.css({\n minHeight: minContentHeight,\n maxHeight: maxContentHeight,\n height: \"auto\"\n });\n } else {\n this.element.height(Math.max(0, options.height - nonContentHeight));\n }\n if (this.uiDialog.is(\":data(ui-resizable)\")) {\n this.uiDialog.resizable(\"option\", \"minHeight\", this._minHeight());\n }\n },\n _blockFrames: function () {\n this.iframeBlocks = this.document.find(\"iframe\").map(function () {\n var iframe = $(this);\n return $(\"<div>\").css({\n position: \"absolute\",\n width: iframe.outerWidth(),\n height: iframe.outerHeight()\n }).appendTo(iframe.parent()).offset(iframe.offset())[0];\n });\n },\n _unblockFrames: function () {\n if (this.iframeBlocks) {\n this.iframeBlocks.remove();\n delete this.iframeBlocks;\n }\n },\n _allowInteraction: function (event) {\n if ($(event.target).closest(\".ui-dialog\").length) {\n return true;\n }\n\n // TODO: Remove hack when datepicker implements\n // the .ui-front logic (#8989)\n return !!$(event.target).closest(\".ui-datepicker\").length;\n },\n _createOverlay: function () {\n if (!this.options.modal) {\n return;\n }\n\n // We use a delay in case the overlay is created from an\n // event that we're going to be cancelling (#2804)\n var isOpening = true;\n this._delay(function () {\n isOpening = false;\n });\n if (!this.document.data(\"ui-dialog-overlays\")) {\n // Prevent use of anchors and inputs\n // This doesn't use `_on()` because it is a shared event handler\n // across all open modal dialogs.\n this.document.on(\"focusin.ui-dialog\", function (event) {\n if (isOpening) {\n return;\n }\n var instance = this._trackingInstances()[0];\n if (!instance._allowInteraction(event)) {\n event.preventDefault();\n instance._focusTabbable();\n }\n }.bind(this));\n }\n this.overlay = $(\"<div>\").appendTo(this._appendTo());\n this._addClass(this.overlay, null, \"ui-widget-overlay ui-front\");\n this._on(this.overlay, {\n mousedown: \"_keepFocus\"\n });\n this.document.data(\"ui-dialog-overlays\", (this.document.data(\"ui-dialog-overlays\") || 0) + 1);\n },\n _destroyOverlay: function () {\n if (!this.options.modal) {\n return;\n }\n if (this.overlay) {\n var overlays = this.document.data(\"ui-dialog-overlays\") - 1;\n if (!overlays) {\n this.document.off(\"focusin.ui-dialog\");\n this.document.removeData(\"ui-dialog-overlays\");\n } else {\n this.document.data(\"ui-dialog-overlays\", overlays);\n }\n this.overlay.remove();\n this.overlay = null;\n }\n }\n });\n\n // DEPRECATED\n // TODO: switch return back to widget declaration at top of file when this is removed\n if ($.uiBackCompat === true) {\n // Backcompat for dialogClass option\n $.widget(\"ui.dialog\", $.ui.dialog, {\n options: {\n dialogClass: \"\"\n },\n _createWrapper: function () {\n this._super();\n this.uiDialog.addClass(this.options.dialogClass);\n },\n _setOption: function (key, value) {\n if (key === \"dialogClass\") {\n this.uiDialog.removeClass(this.options.dialogClass).addClass(value);\n }\n this._superApply(arguments);\n }\n });\n }\n var widgetsDialog = $.ui.dialog;\n\n /*!\n * jQuery UI Droppable 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Droppable\n //>>group: Interactions\n //>>description: Enables drop targets for draggable elements.\n //>>docs: https://api.jqueryui.com/droppable/\n //>>demos: https://jqueryui.com/droppable/\n\n $.widget(\"ui.droppable\", {\n version: \"1.14.1\",\n widgetEventPrefix: \"drop\",\n options: {\n accept: \"*\",\n addClasses: true,\n greedy: false,\n scope: \"default\",\n tolerance: \"intersect\",\n // Callbacks\n activate: null,\n deactivate: null,\n drop: null,\n out: null,\n over: null\n },\n _create: function () {\n var proportions,\n o = this.options,\n accept = o.accept;\n this.isover = false;\n this.isout = true;\n this.accept = typeof accept === \"function\" ? accept : function (d) {\n return d.is(accept);\n };\n this.proportions = function /* valueToWrite */\n () {\n if (arguments.length) {\n // Store the droppable's proportions\n proportions = arguments[0];\n } else {\n // Retrieve or derive the droppable's proportions\n return proportions ? proportions : proportions = {\n width: this.element[0].offsetWidth,\n height: this.element[0].offsetHeight\n };\n }\n };\n this._addToManager(o.scope);\n if (o.addClasses) {\n this._addClass(\"ui-droppable\");\n }\n },\n _addToManager: function (scope) {\n // Add the reference and positions to the manager\n $.ui.ddmanager.droppables[scope] = $.ui.ddmanager.droppables[scope] || [];\n $.ui.ddmanager.droppables[scope].push(this);\n },\n _splice: function (drop) {\n var i = 0;\n for (; i < drop.length; i++) {\n if (drop[i] === this) {\n drop.splice(i, 1);\n }\n }\n },\n _destroy: function () {\n var drop = $.ui.ddmanager.droppables[this.options.scope];\n this._splice(drop);\n },\n _setOption: function (key, value) {\n if (key === \"accept\") {\n this.accept = typeof value === \"function\" ? value : function (d) {\n return d.is(value);\n };\n } else if (key === \"scope\") {\n var drop = $.ui.ddmanager.droppables[this.options.scope];\n this._splice(drop);\n this._addToManager(value);\n }\n this._super(key, value);\n },\n _activate: function (event) {\n var draggable = $.ui.ddmanager.current;\n this._addActiveClass();\n if (draggable) {\n this._trigger(\"activate\", event, this.ui(draggable));\n }\n },\n _deactivate: function (event) {\n var draggable = $.ui.ddmanager.current;\n this._removeActiveClass();\n if (draggable) {\n this._trigger(\"deactivate\", event, this.ui(draggable));\n }\n },\n _over: function (event) {\n var draggable = $.ui.ddmanager.current;\n\n // Bail if draggable and droppable are same element\n if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {\n return;\n }\n if (this.accept.call(this.element[0], draggable.currentItem || draggable.element)) {\n this._addHoverClass();\n this._trigger(\"over\", event, this.ui(draggable));\n }\n },\n _out: function (event) {\n var draggable = $.ui.ddmanager.current;\n\n // Bail if draggable and droppable are same element\n if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {\n return;\n }\n if (this.accept.call(this.element[0], draggable.currentItem || draggable.element)) {\n this._removeHoverClass();\n this._trigger(\"out\", event, this.ui(draggable));\n }\n },\n _drop: function (event, custom) {\n var draggable = custom || $.ui.ddmanager.current,\n childrenIntersection = false;\n\n // Bail if draggable and droppable are same element\n if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {\n return false;\n }\n this.element.find(\":data(ui-droppable)\").not(\".ui-draggable-dragging\").each(function () {\n var inst = $(this).droppable(\"instance\");\n if (inst.options.greedy && !inst.options.disabled && inst.options.scope === draggable.options.scope && inst.accept.call(inst.element[0], draggable.currentItem || draggable.element) && $.ui.intersect(draggable, $.extend(inst, {\n offset: inst.element.offset()\n }), inst.options.tolerance, event)) {\n childrenIntersection = true;\n return false;\n }\n });\n if (childrenIntersection) {\n return false;\n }\n if (this.accept.call(this.element[0], draggable.currentItem || draggable.element)) {\n this._removeActiveClass();\n this._removeHoverClass();\n this._trigger(\"drop\", event, this.ui(draggable));\n return this.element;\n }\n return false;\n },\n ui: function (c) {\n return {\n draggable: c.currentItem || c.element,\n helper: c.helper,\n position: c.position,\n offset: c.positionAbs\n };\n },\n // Extension points just to make backcompat sane and avoid duplicating logic\n // TODO: Remove in 1.14 along with call to it below\n _addHoverClass: function () {\n this._addClass(\"ui-droppable-hover\");\n },\n _removeHoverClass: function () {\n this._removeClass(\"ui-droppable-hover\");\n },\n _addActiveClass: function () {\n this._addClass(\"ui-droppable-active\");\n },\n _removeActiveClass: function () {\n this._removeClass(\"ui-droppable-active\");\n }\n });\n $.ui.intersect = function () {\n function isOverAxis(x, reference, size) {\n return x >= reference && x < reference + size;\n }\n return function (draggable, droppable, toleranceMode, event) {\n if (!droppable.offset) {\n return false;\n }\n var x1 = (draggable.positionAbs || draggable.position.absolute).left + draggable.margins.left,\n y1 = (draggable.positionAbs || draggable.position.absolute).top + draggable.margins.top,\n x2 = x1 + draggable.helperProportions.width,\n y2 = y1 + draggable.helperProportions.height,\n l = droppable.offset.left,\n t = droppable.offset.top,\n r = l + droppable.proportions().width,\n b = t + droppable.proportions().height;\n switch (toleranceMode) {\n case \"fit\":\n return l <= x1 && x2 <= r && t <= y1 && y2 <= b;\n case \"intersect\":\n return l < x1 + draggable.helperProportions.width / 2 &&\n // Right Half\n x2 - draggable.helperProportions.width / 2 < r &&\n // Left Half\n t < y1 + draggable.helperProportions.height / 2 &&\n // Bottom Half\n y2 - draggable.helperProportions.height / 2 < b;\n // Top Half\n case \"pointer\":\n return isOverAxis(event.pageY, t, droppable.proportions().height) && isOverAxis(event.pageX, l, droppable.proportions().width);\n case \"touch\":\n return (y1 >= t && y1 <= b ||\n // Top edge touching\n y2 >= t && y2 <= b ||\n // Bottom edge touching\n y1 < t && y2 > b // Surrounded vertically\n ) && (x1 >= l && x1 <= r ||\n // Left edge touching\n x2 >= l && x2 <= r ||\n // Right edge touching\n x1 < l && x2 > r // Surrounded horizontally\n );\n default:\n return false;\n }\n };\n }();\n\n /*\n \tThis manager tracks offsets of draggables and droppables\n */\n $.ui.ddmanager = {\n current: null,\n droppables: {\n \"default\": []\n },\n prepareOffsets: function (t, event) {\n var i,\n j,\n m = $.ui.ddmanager.droppables[t.options.scope] || [],\n type = event ? event.type : null,\n // workaround for #2317\n list = (t.currentItem || t.element).find(\":data(ui-droppable)\").addBack();\n droppablesLoop: for (i = 0; i < m.length; i++) {\n // No disabled and non-accepted\n if (m[i].options.disabled || t && !m[i].accept.call(m[i].element[0], t.currentItem || t.element)) {\n continue;\n }\n\n // Filter out elements in the current dragged item\n for (j = 0; j < list.length; j++) {\n if (list[j] === m[i].element[0]) {\n m[i].proportions().height = 0;\n continue droppablesLoop;\n }\n }\n m[i].visible = m[i].element.css(\"display\") !== \"none\";\n if (!m[i].visible) {\n continue;\n }\n\n // Activate the droppable if used directly from draggables\n if (type === \"mousedown\") {\n m[i]._activate.call(m[i], event);\n }\n m[i].offset = m[i].element.offset();\n m[i].proportions({\n width: m[i].element[0].offsetWidth,\n height: m[i].element[0].offsetHeight\n });\n }\n },\n drop: function (draggable, event) {\n var dropped = false;\n\n // Create a copy of the droppables in case the list changes during the drop (#9116)\n $.each(($.ui.ddmanager.droppables[draggable.options.scope] || []).slice(), function () {\n if (!this.options) {\n return;\n }\n if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance, event)) {\n dropped = this._drop.call(this, event) || dropped;\n }\n if (!this.options.disabled && this.visible && this.accept.call(this.element[0], draggable.currentItem || draggable.element)) {\n this.isout = true;\n this.isover = false;\n this._deactivate.call(this, event);\n }\n });\n return dropped;\n },\n dragStart: function (draggable, event) {\n // Listen for scrolling so that if the dragging causes scrolling the position of the\n // droppables can be recalculated (see #5003)\n draggable.element.parentsUntil(\"body\").on(\"scroll.droppable\", function () {\n if (!draggable.options.refreshPositions) {\n $.ui.ddmanager.prepareOffsets(draggable, event);\n }\n });\n },\n drag: function (draggable, event) {\n // If you have a highly dynamic page, you might try this option. It renders positions\n // every time you move the mouse.\n if (draggable.options.refreshPositions) {\n $.ui.ddmanager.prepareOffsets(draggable, event);\n }\n\n // Run through all droppables and check their positions based on specific tolerance options\n $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function () {\n if (this.options.disabled || this.greedyChild || !this.visible) {\n return;\n }\n var parentInstance,\n scope,\n parent,\n intersects = $.ui.intersect(draggable, this, this.options.tolerance, event),\n c = !intersects && this.isover ? \"isout\" : intersects && !this.isover ? \"isover\" : null;\n if (!c) {\n return;\n }\n if (this.options.greedy) {\n // find droppable parents with same scope\n scope = this.options.scope;\n parent = this.element.parents(\":data(ui-droppable)\").filter(function () {\n return $(this).droppable(\"instance\").options.scope === scope;\n });\n if (parent.length) {\n parentInstance = $(parent[0]).droppable(\"instance\");\n parentInstance.greedyChild = c === \"isover\";\n }\n }\n\n // We just moved into a greedy child\n if (parentInstance && c === \"isover\") {\n parentInstance.isover = false;\n parentInstance.isout = true;\n parentInstance._out.call(parentInstance, event);\n }\n this[c] = true;\n this[c === \"isout\" ? \"isover\" : \"isout\"] = false;\n this[c === \"isover\" ? \"_over\" : \"_out\"].call(this, event);\n\n // We just moved out of a greedy child\n if (parentInstance && c === \"isout\") {\n parentInstance.isout = false;\n parentInstance.isover = true;\n parentInstance._over.call(parentInstance, event);\n }\n });\n },\n dragStop: function (draggable, event) {\n draggable.element.parentsUntil(\"body\").off(\"scroll.droppable\");\n\n // Call prepareOffsets one final time since IE does not fire return scroll events when\n // overflow was caused by drag (see #5003)\n if (!draggable.options.refreshPositions) {\n $.ui.ddmanager.prepareOffsets(draggable, event);\n }\n }\n };\n\n // DEPRECATED\n // TODO: switch return back to widget declaration at top of file when this is removed\n if ($.uiBackCompat === true) {\n // Backcompat for activeClass and hoverClass options\n $.widget(\"ui.droppable\", $.ui.droppable, {\n options: {\n hoverClass: false,\n activeClass: false\n },\n _addActiveClass: function () {\n this._super();\n if (this.options.activeClass) {\n this.element.addClass(this.options.activeClass);\n }\n },\n _removeActiveClass: function () {\n this._super();\n if (this.options.activeClass) {\n this.element.removeClass(this.options.activeClass);\n }\n },\n _addHoverClass: function () {\n this._super();\n if (this.options.hoverClass) {\n this.element.addClass(this.options.hoverClass);\n }\n },\n _removeHoverClass: function () {\n this._super();\n if (this.options.hoverClass) {\n this.element.removeClass(this.options.hoverClass);\n }\n }\n });\n }\n var widgetsDroppable = $.ui.droppable;\n\n /*!\n * jQuery UI Progressbar 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Progressbar\n //>>group: Widgets\n /* eslint-disable max-len */\n //>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators.\n /* eslint-enable max-len */\n //>>docs: https://api.jqueryui.com/progressbar/\n //>>demos: https://jqueryui.com/progressbar/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/progressbar.css\n //>>css.theme: ../../themes/base/theme.css\n\n var widgetsProgressbar = $.widget(\"ui.progressbar\", {\n version: \"1.14.1\",\n options: {\n classes: {\n \"ui-progressbar\": \"ui-corner-all\",\n \"ui-progressbar-value\": \"ui-corner-left\",\n \"ui-progressbar-complete\": \"ui-corner-right\"\n },\n max: 100,\n value: 0,\n change: null,\n complete: null\n },\n min: 0,\n _create: function () {\n // Constrain initial value\n this.oldValue = this.options.value = this._constrainedValue();\n this.element.attr({\n // Only set static values; aria-valuenow and aria-valuemax are\n // set inside _refreshValue()\n role: \"progressbar\",\n \"aria-valuemin\": this.min\n });\n this._addClass(\"ui-progressbar\", \"ui-widget ui-widget-content\");\n this.valueDiv = $(\"<div>\").appendTo(this.element);\n this._addClass(this.valueDiv, \"ui-progressbar-value\", \"ui-widget-header\");\n this._refreshValue();\n },\n _destroy: function () {\n this.element.removeAttr(\"role aria-valuemin aria-valuemax aria-valuenow\");\n this.valueDiv.remove();\n },\n value: function (newValue) {\n if (newValue === undefined) {\n return this.options.value;\n }\n this.options.value = this._constrainedValue(newValue);\n this._refreshValue();\n },\n _constrainedValue: function (newValue) {\n if (newValue === undefined) {\n newValue = this.options.value;\n }\n this.indeterminate = newValue === false;\n\n // Sanitize value\n if (typeof newValue !== \"number\") {\n newValue = 0;\n }\n return this.indeterminate ? false : Math.min(this.options.max, Math.max(this.min, newValue));\n },\n _setOptions: function (options) {\n // Ensure \"value\" option is set after other values (like max)\n var value = options.value;\n delete options.value;\n this._super(options);\n this.options.value = this._constrainedValue(value);\n this._refreshValue();\n },\n _setOption: function (key, value) {\n if (key === \"max\") {\n // Don't allow a max less than min\n value = Math.max(this.min, value);\n }\n this._super(key, value);\n },\n _setOptionDisabled: function (value) {\n this._super(value);\n this.element.attr(\"aria-disabled\", value);\n this._toggleClass(null, \"ui-state-disabled\", !!value);\n },\n _percentage: function () {\n return this.indeterminate ? 100 : 100 * (this.options.value - this.min) / (this.options.max - this.min);\n },\n _refreshValue: function () {\n var value = this.options.value,\n percentage = this._percentage();\n this.valueDiv.toggle(this.indeterminate || value > this.min).width(percentage.toFixed(0) + \"%\");\n this._toggleClass(this.valueDiv, \"ui-progressbar-complete\", null, value === this.options.max)._toggleClass(\"ui-progressbar-indeterminate\", null, this.indeterminate);\n if (this.indeterminate) {\n this.element.removeAttr(\"aria-valuenow\");\n if (!this.overlayDiv) {\n this.overlayDiv = $(\"<div>\").appendTo(this.valueDiv);\n this._addClass(this.overlayDiv, \"ui-progressbar-overlay\");\n }\n } else {\n this.element.attr({\n \"aria-valuemax\": this.options.max,\n \"aria-valuenow\": value\n });\n if (this.overlayDiv) {\n this.overlayDiv.remove();\n this.overlayDiv = null;\n }\n }\n if (this.oldValue !== value) {\n this.oldValue = value;\n this._trigger(\"change\");\n }\n if (value === this.options.max) {\n this._trigger(\"complete\");\n }\n }\n });\n\n /*!\n * jQuery UI Selectable 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Selectable\n //>>group: Interactions\n //>>description: Allows groups of elements to be selected with the mouse.\n //>>docs: https://api.jqueryui.com/selectable/\n //>>demos: https://jqueryui.com/selectable/\n //>>css.structure: ../../themes/base/selectable.css\n\n var widgetsSelectable = $.widget(\"ui.selectable\", $.ui.mouse, {\n version: \"1.14.1\",\n options: {\n appendTo: \"body\",\n autoRefresh: true,\n distance: 0,\n filter: \"*\",\n tolerance: \"touch\",\n // Callbacks\n selected: null,\n selecting: null,\n start: null,\n stop: null,\n unselected: null,\n unselecting: null\n },\n _create: function () {\n var that = this;\n this._addClass(\"ui-selectable\");\n this.dragged = false;\n\n // Cache selectee children based on filter\n this.refresh = function () {\n that.elementPos = $(that.element[0]).offset();\n that.selectees = $(that.options.filter, that.element[0]);\n that._addClass(that.selectees, \"ui-selectee\");\n that.selectees.each(function () {\n var $this = $(this),\n selecteeOffset = $this.offset(),\n pos = {\n left: selecteeOffset.left - that.elementPos.left,\n top: selecteeOffset.top - that.elementPos.top\n };\n $.data(this, \"selectable-item\", {\n element: this,\n $element: $this,\n left: pos.left,\n top: pos.top,\n right: pos.left + $this.outerWidth(),\n bottom: pos.top + $this.outerHeight(),\n startselected: false,\n selected: $this.hasClass(\"ui-selected\"),\n selecting: $this.hasClass(\"ui-selecting\"),\n unselecting: $this.hasClass(\"ui-unselecting\")\n });\n });\n };\n this.refresh();\n this._mouseInit();\n this.helper = $(\"<div>\");\n this._addClass(this.helper, \"ui-selectable-helper\");\n },\n _destroy: function () {\n this.selectees.removeData(\"selectable-item\");\n this._mouseDestroy();\n },\n _mouseStart: function (event) {\n var that = this,\n options = this.options;\n this.opos = [event.pageX, event.pageY];\n this.elementPos = $(this.element[0]).offset();\n if (this.options.disabled) {\n return;\n }\n this.selectees = $(options.filter, this.element[0]);\n this._trigger(\"start\", event);\n $(options.appendTo).append(this.helper);\n\n // position helper (lasso)\n this.helper.css({\n \"left\": event.pageX,\n \"top\": event.pageY,\n \"width\": 0,\n \"height\": 0\n });\n if (options.autoRefresh) {\n this.refresh();\n }\n this.selectees.filter(\".ui-selected\").each(function () {\n var selectee = $.data(this, \"selectable-item\");\n selectee.startselected = true;\n if (!event.metaKey && !event.ctrlKey) {\n that._removeClass(selectee.$element, \"ui-selected\");\n selectee.selected = false;\n that._addClass(selectee.$element, \"ui-unselecting\");\n selectee.unselecting = true;\n\n // selectable UNSELECTING callback\n that._trigger(\"unselecting\", event, {\n unselecting: selectee.element\n });\n }\n });\n $(event.target).parents().addBack().each(function () {\n var doSelect,\n selectee = $.data(this, \"selectable-item\");\n if (selectee) {\n doSelect = !event.metaKey && !event.ctrlKey || !selectee.$element.hasClass(\"ui-selected\");\n that._removeClass(selectee.$element, doSelect ? \"ui-unselecting\" : \"ui-selected\")._addClass(selectee.$element, doSelect ? \"ui-selecting\" : \"ui-unselecting\");\n selectee.unselecting = !doSelect;\n selectee.selecting = doSelect;\n selectee.selected = doSelect;\n\n // selectable (UN)SELECTING callback\n if (doSelect) {\n that._trigger(\"selecting\", event, {\n selecting: selectee.element\n });\n } else {\n that._trigger(\"unselecting\", event, {\n unselecting: selectee.element\n });\n }\n return false;\n }\n });\n },\n _mouseDrag: function (event) {\n this.dragged = true;\n if (this.options.disabled) {\n return;\n }\n var tmp,\n that = this,\n options = this.options,\n x1 = this.opos[0],\n y1 = this.opos[1],\n x2 = event.pageX,\n y2 = event.pageY;\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.helper.css({\n left: x1,\n top: y1,\n width: x2 - x1,\n height: y2 - y1\n });\n this.selectees.each(function () {\n var selectee = $.data(this, \"selectable-item\"),\n hit = false,\n offset = {};\n\n //prevent helper from being selected if appendTo: selectable\n if (!selectee || selectee.element === that.element[0]) {\n return;\n }\n offset.left = selectee.left + that.elementPos.left;\n offset.right = selectee.right + that.elementPos.left;\n offset.top = selectee.top + that.elementPos.top;\n offset.bottom = selectee.bottom + that.elementPos.top;\n if (options.tolerance === \"touch\") {\n hit = !(offset.left > x2 || offset.right < x1 || offset.top > y2 || offset.bottom < y1);\n } else if (options.tolerance === \"fit\") {\n hit = offset.left > x1 && offset.right < x2 && offset.top > y1 && offset.bottom < y2;\n }\n if (hit) {\n // SELECT\n if (selectee.selected) {\n that._removeClass(selectee.$element, \"ui-selected\");\n selectee.selected = false;\n }\n if (selectee.unselecting) {\n that._removeClass(selectee.$element, \"ui-unselecting\");\n selectee.unselecting = false;\n }\n if (!selectee.selecting) {\n that._addClass(selectee.$element, \"ui-selecting\");\n selectee.selecting = true;\n\n // selectable SELECTING callback\n that._trigger(\"selecting\", event, {\n selecting: selectee.element\n });\n }\n } else {\n // UNSELECT\n if (selectee.selecting) {\n if ((event.metaKey || event.ctrlKey) && selectee.startselected) {\n that._removeClass(selectee.$element, \"ui-selecting\");\n selectee.selecting = false;\n that._addClass(selectee.$element, \"ui-selected\");\n selectee.selected = true;\n } else {\n that._removeClass(selectee.$element, \"ui-selecting\");\n selectee.selecting = false;\n if (selectee.startselected) {\n that._addClass(selectee.$element, \"ui-unselecting\");\n selectee.unselecting = true;\n }\n\n // selectable UNSELECTING callback\n that._trigger(\"unselecting\", event, {\n unselecting: selectee.element\n });\n }\n }\n if (selectee.selected) {\n if (!event.metaKey && !event.ctrlKey && !selectee.startselected) {\n that._removeClass(selectee.$element, \"ui-selected\");\n selectee.selected = false;\n that._addClass(selectee.$element, \"ui-unselecting\");\n selectee.unselecting = true;\n\n // selectable UNSELECTING callback\n that._trigger(\"unselecting\", event, {\n unselecting: selectee.element\n });\n }\n }\n }\n });\n return false;\n },\n _mouseStop: function (event) {\n var that = this;\n this.dragged = false;\n $(\".ui-unselecting\", this.element[0]).each(function () {\n var selectee = $.data(this, \"selectable-item\");\n that._removeClass(selectee.$element, \"ui-unselecting\");\n selectee.unselecting = false;\n selectee.startselected = false;\n that._trigger(\"unselected\", event, {\n unselected: selectee.element\n });\n });\n $(\".ui-selecting\", this.element[0]).each(function () {\n var selectee = $.data(this, \"selectable-item\");\n that._removeClass(selectee.$element, \"ui-selecting\")._addClass(selectee.$element, \"ui-selected\");\n selectee.selecting = false;\n selectee.selected = true;\n selectee.startselected = true;\n that._trigger(\"selected\", event, {\n selected: selectee.element\n });\n });\n this._trigger(\"stop\", event);\n this.helper.remove();\n return false;\n }\n });\n\n /*!\n * jQuery UI Selectmenu 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Selectmenu\n //>>group: Widgets\n /* eslint-disable max-len */\n //>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.\n /* eslint-enable max-len */\n //>>docs: https://api.jqueryui.com/selectmenu/\n //>>demos: https://jqueryui.com/selectmenu/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/selectmenu.css, ../../themes/base/button.css\n //>>css.theme: ../../themes/base/theme.css\n\n var widgetsSelectmenu = $.widget(\"ui.selectmenu\", [$.ui.formResetMixin, {\n version: \"1.14.1\",\n defaultElement: \"<select>\",\n options: {\n appendTo: null,\n classes: {\n \"ui-selectmenu-button-open\": \"ui-corner-top\",\n \"ui-selectmenu-button-closed\": \"ui-corner-all\"\n },\n disabled: null,\n icons: {\n button: \"ui-icon-triangle-1-s\"\n },\n position: {\n my: \"left top\",\n at: \"left bottom\",\n collision: \"none\"\n },\n width: false,\n // Callbacks\n change: null,\n close: null,\n focus: null,\n open: null,\n select: null\n },\n _create: function () {\n var selectmenuId = this.element.uniqueId().attr(\"id\");\n this.ids = {\n element: selectmenuId,\n button: selectmenuId + \"-button\",\n menu: selectmenuId + \"-menu\"\n };\n this._drawButton();\n this._drawMenu();\n this._bindFormResetHandler();\n this._rendered = false;\n this.menuItems = $();\n },\n _drawButton: function () {\n var icon,\n that = this,\n item = this._parseOption(this.element.find(\"option:selected\"), this.element[0].selectedIndex);\n\n // Associate existing label with the new button\n this.labels = this.element.labels().attr(\"for\", this.ids.button);\n this._on(this.labels, {\n click: function (event) {\n this.button.trigger(\"focus\");\n event.preventDefault();\n }\n });\n\n // Hide original select element\n this.element.hide();\n\n // Create button\n this.button = $(\"<span>\", {\n tabindex: this.options.disabled ? -1 : 0,\n id: this.ids.button,\n role: \"combobox\",\n \"aria-expanded\": \"false\",\n \"aria-autocomplete\": \"list\",\n \"aria-owns\": this.ids.menu,\n \"aria-haspopup\": \"true\",\n title: this.element.attr(\"title\")\n }).insertAfter(this.element);\n this._addClass(this.button, \"ui-selectmenu-button ui-selectmenu-button-closed\", \"ui-button ui-widget\");\n icon = $(\"<span>\").appendTo(this.button);\n this._addClass(icon, \"ui-selectmenu-icon\", \"ui-icon \" + this.options.icons.button);\n this.buttonItem = this._renderButtonItem(item).appendTo(this.button);\n if (this.options.width !== false) {\n this._resizeButton();\n }\n this._on(this.button, this._buttonEvents);\n this.button.one(\"focusin\", function () {\n // Delay rendering the menu items until the button receives focus.\n // The menu may have already been rendered via a programmatic open.\n if (!that._rendered) {\n that._refreshMenu();\n }\n });\n },\n _drawMenu: function () {\n var that = this;\n\n // Create menu\n this.menu = $(\"<ul>\", {\n \"aria-hidden\": \"true\",\n \"aria-labelledby\": this.ids.button,\n id: this.ids.menu\n });\n\n // Wrap menu\n this.menuWrap = $(\"<div>\").append(this.menu);\n this._addClass(this.menuWrap, \"ui-selectmenu-menu\", \"ui-front\");\n this.menuWrap.appendTo(this._appendTo());\n\n // Initialize menu widget\n this.menuInstance = this.menu.menu({\n classes: {\n \"ui-menu\": \"ui-corner-bottom\"\n },\n role: \"listbox\",\n select: function (event, ui) {\n event.preventDefault();\n that._select(ui.item.data(\"ui-selectmenu-item\"), event);\n },\n focus: function (event, ui) {\n var item = ui.item.data(\"ui-selectmenu-item\");\n\n // Prevent inital focus from firing and check if its a newly focused item\n if (that.focusIndex != null && item.index !== that.focusIndex) {\n that._trigger(\"focus\", event, {\n item: item\n });\n if (!that.isOpen) {\n that._select(item, event);\n }\n }\n that.focusIndex = item.index;\n that.button.attr(\"aria-activedescendant\", that.menuItems.eq(item.index).attr(\"id\"));\n }\n }).menu(\"instance\");\n\n // Don't close the menu on mouseleave\n this.menuInstance._off(this.menu, \"mouseleave\");\n\n // Cancel the menu's collapseAll on document click\n this.menuInstance._closeOnDocumentClick = function () {\n return false;\n };\n\n // Selects often contain empty items, but never contain dividers\n this.menuInstance._isDivider = function () {\n return false;\n };\n },\n refresh: function () {\n this._refreshMenu();\n this.buttonItem.replaceWith(this.buttonItem = this._renderButtonItem(\n // Fall back to an empty object in case there are no options\n this._getSelectedItem().data(\"ui-selectmenu-item\") || {}));\n if (this.options.width === null) {\n this._resizeButton();\n }\n },\n _refreshMenu: function () {\n var item,\n options = this.element.find(\"option\");\n this.menu.empty();\n this._parseOptions(options);\n this._renderMenu(this.menu, this.items);\n this.menuInstance.refresh();\n this.menuItems = this.menu.find(\"li\").not(\".ui-selectmenu-optgroup\").find(\".ui-menu-item-wrapper\");\n this._rendered = true;\n if (!options.length) {\n return;\n }\n item = this._getSelectedItem();\n\n // Update the menu to have the correct item focused\n this.menuInstance.focus(null, item);\n this._setAria(item.data(\"ui-selectmenu-item\"));\n\n // Set disabled state\n this._setOption(\"disabled\", this.element.prop(\"disabled\"));\n },\n open: function (event) {\n if (this.options.disabled) {\n return;\n }\n\n // If this is the first time the menu is being opened, render the items\n if (!this._rendered) {\n this._refreshMenu();\n } else {\n // Menu clears focus on close, reset focus to selected item\n this._removeClass(this.menu.find(\".ui-state-active\"), null, \"ui-state-active\");\n this.menuInstance.focus(null, this._getSelectedItem());\n }\n\n // If there are no options, don't open the menu\n if (!this.menuItems.length) {\n return;\n }\n this.isOpen = true;\n this._toggleAttr();\n this._resizeMenu();\n this._position();\n this._on(this.document, this._documentClick);\n this._trigger(\"open\", event);\n },\n _position: function () {\n this.menuWrap.position($.extend({\n of: this.button\n }, this.options.position));\n },\n close: function (event) {\n if (!this.isOpen) {\n return;\n }\n this.isOpen = false;\n this._toggleAttr();\n this.range = null;\n this._off(this.document);\n this._trigger(\"close\", event);\n },\n widget: function () {\n return this.button;\n },\n menuWidget: function () {\n return this.menu;\n },\n _renderButtonItem: function (item) {\n var buttonItem = $(\"<span>\");\n this._setText(buttonItem, item.label);\n this._addClass(buttonItem, \"ui-selectmenu-text\");\n return buttonItem;\n },\n _renderMenu: function (ul, items) {\n var that = this,\n currentOptgroup = \"\";\n $.each(items, function (index, item) {\n var li;\n if (item.optgroup !== currentOptgroup) {\n li = $(\"<li>\", {\n text: item.optgroup\n });\n that._addClass(li, \"ui-selectmenu-optgroup\", \"ui-menu-divider\" + (item.element.parent(\"optgroup\").prop(\"disabled\") ? \" ui-state-disabled\" : \"\"));\n li.appendTo(ul);\n currentOptgroup = item.optgroup;\n }\n that._renderItemData(ul, item);\n });\n },\n _renderItemData: function (ul, item) {\n return this._renderItem(ul, item).data(\"ui-selectmenu-item\", item);\n },\n _renderItem: function (ul, item) {\n var li = $(\"<li>\"),\n wrapper = $(\"<div>\", {\n title: item.element.attr(\"title\")\n });\n if (item.disabled) {\n this._addClass(li, null, \"ui-state-disabled\");\n }\n if (item.hidden) {\n li.prop(\"hidden\", true);\n } else {\n this._setText(wrapper, item.label);\n }\n return li.append(wrapper).appendTo(ul);\n },\n _setText: function (element, value) {\n if (value) {\n element.text(value);\n } else {\n element.html(\" \");\n }\n },\n _move: function (direction, event) {\n var item,\n next,\n filter = \".ui-menu-item\";\n if (this.isOpen) {\n item = this.menuItems.eq(this.focusIndex).parent(\"li\");\n } else {\n item = this.menuItems.eq(this.element[0].selectedIndex).parent(\"li\");\n filter += \":not(.ui-state-disabled)\";\n }\n if (direction === \"first\" || direction === \"last\") {\n next = item[direction === \"first\" ? \"prevAll\" : \"nextAll\"](filter).eq(-1);\n } else {\n next = item[direction + \"All\"](filter).eq(0);\n }\n if (next.length) {\n this.menuInstance.focus(event, next);\n }\n },\n _getSelectedItem: function () {\n return this.menuItems.eq(this.element[0].selectedIndex).parent(\"li\");\n },\n _toggle: function (event) {\n this[this.isOpen ? \"close\" : \"open\"](event);\n },\n _setSelection: function () {\n var selection;\n if (!this.range) {\n return;\n }\n selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(this.range);\n },\n _documentClick: {\n mousedown: function (event) {\n if (!this.isOpen) {\n return;\n }\n if (!$(event.target).closest(\".ui-selectmenu-menu, #\" + CSS.escape(this.ids.button)).length) {\n this.close(event);\n }\n }\n },\n _buttonEvents: {\n // Prevent text selection from being reset when interacting with the selectmenu (#10144)\n mousedown: function () {\n var selection = window.getSelection();\n if (selection.rangeCount) {\n this.range = selection.getRangeAt(0);\n }\n },\n click: function (event) {\n this._setSelection();\n this._toggle(event);\n },\n keydown: function (event) {\n var preventDefault = true;\n switch (event.keyCode) {\n case $.ui.keyCode.TAB:\n case $.ui.keyCode.ESCAPE:\n this.close(event);\n preventDefault = false;\n break;\n case $.ui.keyCode.ENTER:\n if (this.isOpen) {\n this._selectFocusedItem(event);\n }\n break;\n case $.ui.keyCode.UP:\n if (event.altKey) {\n this._toggle(event);\n } else {\n this._move(\"prev\", event);\n }\n break;\n case $.ui.keyCode.DOWN:\n if (event.altKey) {\n this._toggle(event);\n } else {\n this._move(\"next\", event);\n }\n break;\n case $.ui.keyCode.SPACE:\n if (this.isOpen) {\n this._selectFocusedItem(event);\n } else {\n this._toggle(event);\n }\n break;\n case $.ui.keyCode.LEFT:\n this._move(\"prev\", event);\n break;\n case $.ui.keyCode.RIGHT:\n this._move(\"next\", event);\n break;\n case $.ui.keyCode.HOME:\n case $.ui.keyCode.PAGE_UP:\n this._move(\"first\", event);\n break;\n case $.ui.keyCode.END:\n case $.ui.keyCode.PAGE_DOWN:\n this._move(\"last\", event);\n break;\n default:\n this.menu.trigger(event);\n preventDefault = false;\n }\n if (preventDefault) {\n event.preventDefault();\n }\n }\n },\n _selectFocusedItem: function (event) {\n var item = this.menuItems.eq(this.focusIndex).parent(\"li\");\n if (!item.hasClass(\"ui-state-disabled\")) {\n this._select(item.data(\"ui-selectmenu-item\"), event);\n }\n },\n _select: function (item, event) {\n var oldIndex = this.element[0].selectedIndex;\n\n // Change native select element\n this.element[0].selectedIndex = item.index;\n this.buttonItem.replaceWith(this.buttonItem = this._renderButtonItem(item));\n this._setAria(item);\n this._trigger(\"select\", event, {\n item: item\n });\n if (item.index !== oldIndex) {\n this._trigger(\"change\", event, {\n item: item\n });\n }\n this.close(event);\n },\n _setAria: function (item) {\n var id = this.menuItems.eq(item.index).attr(\"id\");\n this.button.attr({\n \"aria-labelledby\": id,\n \"aria-activedescendant\": id\n });\n this.menu.attr(\"aria-activedescendant\", id);\n },\n _setOption: function (key, value) {\n if (key === \"icons\") {\n var icon = this.button.find(\"span.ui-icon\");\n this._removeClass(icon, null, this.options.icons.button)._addClass(icon, null, value.button);\n }\n this._super(key, value);\n if (key === \"appendTo\") {\n this.menuWrap.appendTo(this._appendTo());\n }\n if (key === \"width\") {\n this._resizeButton();\n }\n },\n _setOptionDisabled: function (value) {\n this._super(value);\n this.menuInstance.option(\"disabled\", value);\n this.button.attr(\"aria-disabled\", value);\n this._toggleClass(this.button, null, \"ui-state-disabled\", value);\n this.element.prop(\"disabled\", value);\n if (value) {\n this.button.attr(\"tabindex\", -1);\n this.close();\n } else {\n this.button.attr(\"tabindex\", 0);\n }\n },\n _appendTo: function () {\n var element = this.options.appendTo;\n if (element) {\n element = element.jquery || element.nodeType ? $(element) : this.document.find(element).eq(0);\n }\n if (!element || !element[0]) {\n element = this.element.closest(\".ui-front, dialog\");\n }\n if (!element.length) {\n element = this.document[0].body;\n }\n return element;\n },\n _toggleAttr: function () {\n this.button.attr(\"aria-expanded\", this.isOpen);\n\n // We can't use two _toggleClass() calls here, because we need to make sure\n // we always remove classes first and add them second, otherwise if both classes have the\n // same theme class, it will be removed after we add it.\n this._removeClass(this.button, \"ui-selectmenu-button-\" + (this.isOpen ? \"closed\" : \"open\"))._addClass(this.button, \"ui-selectmenu-button-\" + (this.isOpen ? \"open\" : \"closed\"))._toggleClass(this.menuWrap, \"ui-selectmenu-open\", null, this.isOpen);\n this.menu.attr(\"aria-hidden\", !this.isOpen);\n },\n _resizeButton: function () {\n var width = this.options.width;\n\n // For `width: false`, just remove inline style and stop\n if (width === false) {\n this.button.css(\"width\", \"\");\n return;\n }\n\n // For `width: null`, match the width of the original element\n if (width === null) {\n width = this.element.show().outerWidth();\n this.element.hide();\n }\n this.button.outerWidth(width);\n },\n _resizeMenu: function () {\n this.menu.outerWidth(Math.max(this.button.outerWidth(), this.menu.width(\"\").outerWidth()));\n },\n _getCreateOptions: function () {\n var options = this._super();\n options.disabled = this.element.prop(\"disabled\");\n return options;\n },\n _parseOptions: function (options) {\n var that = this,\n data = [];\n options.each(function (index, item) {\n data.push(that._parseOption($(item), index));\n });\n this.items = data;\n },\n _parseOption: function (option, index) {\n var optgroup = option.parent(\"optgroup\");\n return {\n element: option,\n index: index,\n value: option.val(),\n label: option.text(),\n hidden: optgroup.prop(\"hidden\") || option.prop(\"hidden\"),\n optgroup: optgroup.attr(\"label\") || \"\",\n disabled: optgroup.prop(\"disabled\") || option.prop(\"disabled\")\n };\n },\n _destroy: function () {\n this._unbindFormResetHandler();\n this.menuWrap.remove();\n this.button.remove();\n this.element.show();\n this.element.removeUniqueId();\n this.labels.attr(\"for\", this.ids.element);\n }\n }]);\n\n /*!\n * jQuery UI Slider 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Slider\n //>>group: Widgets\n //>>description: Displays a flexible slider with ranges and accessibility via keyboard.\n //>>docs: https://api.jqueryui.com/slider/\n //>>demos: https://jqueryui.com/slider/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/slider.css\n //>>css.theme: ../../themes/base/theme.css\n\n var widgetsSlider = $.widget(\"ui.slider\", $.ui.mouse, {\n version: \"1.14.1\",\n widgetEventPrefix: \"slide\",\n options: {\n animate: false,\n classes: {\n \"ui-slider\": \"ui-corner-all\",\n \"ui-slider-handle\": \"ui-corner-all\",\n // Note: ui-widget-header isn't the most fittingly semantic framework class for this\n // element, but worked best visually with a variety of themes\n \"ui-slider-range\": \"ui-corner-all ui-widget-header\"\n },\n distance: 0,\n max: 100,\n min: 0,\n orientation: \"horizontal\",\n range: false,\n step: 1,\n value: 0,\n values: null,\n // Callbacks\n change: null,\n slide: null,\n start: null,\n stop: null\n },\n // Number of pages in a slider\n // (how many times can you page up/down to go through the whole range)\n numPages: 5,\n _create: function () {\n this._keySliding = false;\n this._mouseSliding = false;\n this._animateOff = true;\n this._handleIndex = null;\n this._detectOrientation();\n this._mouseInit();\n this._calculateNewMax();\n this._addClass(\"ui-slider ui-slider-\" + this.orientation, \"ui-widget ui-widget-content\");\n this._refresh();\n this._animateOff = false;\n },\n _refresh: function () {\n this._createRange();\n this._createHandles();\n this._setupEvents();\n this._refreshValue();\n },\n _createHandles: function () {\n var i,\n handleCount,\n options = this.options,\n existingHandles = this.element.find(\".ui-slider-handle\"),\n handle = \"<span tabindex='0'></span>\",\n handles = [];\n handleCount = options.values && options.values.length || 1;\n if (existingHandles.length > handleCount) {\n existingHandles.slice(handleCount).remove();\n existingHandles = existingHandles.slice(0, handleCount);\n }\n for (i = existingHandles.length; i < handleCount; i++) {\n handles.push(handle);\n }\n this.handles = existingHandles.add($(handles.join(\"\")).appendTo(this.element));\n this._addClass(this.handles, \"ui-slider-handle\", \"ui-state-default\");\n this.handle = this.handles.eq(0);\n this.handles.each(function (i) {\n $(this).data(\"ui-slider-handle-index\", i).attr(\"tabIndex\", 0);\n });\n },\n _createRange: function () {\n var options = this.options;\n if (options.range) {\n if (options.range === true) {\n if (!options.values) {\n options.values = [this._valueMin(), this._valueMin()];\n } else if (options.values.length && options.values.length !== 2) {\n options.values = [options.values[0], options.values[0]];\n } else if (Array.isArray(options.values)) {\n options.values = options.values.slice(0);\n }\n }\n if (!this.range || !this.range.length) {\n this.range = $(\"<div>\").appendTo(this.element);\n this._addClass(this.range, \"ui-slider-range\");\n } else {\n this._removeClass(this.range, \"ui-slider-range-min ui-slider-range-max\");\n\n // Handle range switching from true to min/max\n this.range.css({\n \"left\": \"\",\n \"bottom\": \"\"\n });\n }\n if (options.range === \"min\" || options.range === \"max\") {\n this._addClass(this.range, \"ui-slider-range-\" + options.range);\n }\n } else {\n if (this.range) {\n this.range.remove();\n }\n this.range = null;\n }\n },\n _setupEvents: function () {\n this._off(this.handles);\n this._on(this.handles, this._handleEvents);\n this._hoverable(this.handles);\n this._focusable(this.handles);\n },\n _destroy: function () {\n this.handles.remove();\n if (this.range) {\n this.range.remove();\n }\n this._mouseDestroy();\n },\n _mouseCapture: function (event) {\n var position,\n normValue,\n distance,\n closestHandle,\n index,\n allowed,\n offset,\n mouseOverHandle,\n that = this,\n o = this.options;\n if (o.disabled) {\n return false;\n }\n this.elementSize = {\n width: this.element.outerWidth(),\n height: this.element.outerHeight()\n };\n this.elementOffset = this.element.offset();\n position = {\n x: event.pageX,\n y: event.pageY\n };\n normValue = this._normValueFromMouse(position);\n distance = this._valueMax() - this._valueMin() + 1;\n this.handles.each(function (i) {\n var thisDistance = Math.abs(normValue - that.values(i));\n if (distance > thisDistance || distance === thisDistance && (i === that._lastChangedValue || that.values(i) === o.min)) {\n distance = thisDistance;\n closestHandle = $(this);\n index = i;\n }\n });\n allowed = this._start(event, index);\n if (allowed === false) {\n return false;\n }\n this._mouseSliding = true;\n this._handleIndex = index;\n this._addClass(closestHandle, null, \"ui-state-active\");\n closestHandle.trigger(\"focus\");\n offset = closestHandle.offset();\n mouseOverHandle = !$(event.target).parents().addBack().is(\".ui-slider-handle\");\n this._clickOffset = mouseOverHandle ? {\n left: 0,\n top: 0\n } : {\n left: event.pageX - offset.left - closestHandle.width() / 2,\n top: event.pageY - offset.top - closestHandle.height() / 2 - (parseInt(closestHandle.css(\"borderTopWidth\"), 10) || 0) - (parseInt(closestHandle.css(\"borderBottomWidth\"), 10) || 0) + (parseInt(closestHandle.css(\"marginTop\"), 10) || 0)\n };\n if (!this.handles.hasClass(\"ui-state-hover\")) {\n this._slide(event, index, normValue);\n }\n this._animateOff = true;\n return true;\n },\n _mouseStart: function () {\n return true;\n },\n _mouseDrag: function (event) {\n var position = {\n x: event.pageX,\n y: event.pageY\n },\n normValue = this._normValueFromMouse(position);\n this._slide(event, this._handleIndex, normValue);\n return false;\n },\n _mouseStop: function (event) {\n this._removeClass(this.handles, null, \"ui-state-active\");\n this._mouseSliding = false;\n this._stop(event, this._handleIndex);\n this._change(event, this._handleIndex);\n this._handleIndex = null;\n this._clickOffset = null;\n this._animateOff = false;\n return false;\n },\n _detectOrientation: function () {\n this.orientation = this.options.orientation === \"vertical\" ? \"vertical\" : \"horizontal\";\n },\n _normValueFromMouse: function (position) {\n var pixelTotal, pixelMouse, percentMouse, valueTotal, valueMouse;\n if (this.orientation === \"horizontal\") {\n pixelTotal = this.elementSize.width;\n pixelMouse = position.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0);\n } else {\n pixelTotal = this.elementSize.height;\n pixelMouse = position.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0);\n }\n percentMouse = pixelMouse / pixelTotal;\n if (percentMouse > 1) {\n percentMouse = 1;\n }\n if (percentMouse < 0) {\n percentMouse = 0;\n }\n if (this.orientation === \"vertical\") {\n percentMouse = 1 - percentMouse;\n }\n valueTotal = this._valueMax() - this._valueMin();\n valueMouse = this._valueMin() + percentMouse * valueTotal;\n return this._trimAlignValue(valueMouse);\n },\n _uiHash: function (index, value, values) {\n var uiHash = {\n handle: this.handles[index],\n handleIndex: index,\n value: value !== undefined ? value : this.value()\n };\n if (this._hasMultipleValues()) {\n uiHash.value = value !== undefined ? value : this.values(index);\n uiHash.values = values || this.values();\n }\n return uiHash;\n },\n _hasMultipleValues: function () {\n return this.options.values && this.options.values.length;\n },\n _start: function (event, index) {\n return this._trigger(\"start\", event, this._uiHash(index));\n },\n _slide: function (event, index, newVal) {\n var allowed,\n otherVal,\n currentValue = this.value(),\n newValues = this.values();\n if (this._hasMultipleValues()) {\n otherVal = this.values(index ? 0 : 1);\n currentValue = this.values(index);\n if (this.options.values.length === 2 && this.options.range === true) {\n newVal = index === 0 ? Math.min(otherVal, newVal) : Math.max(otherVal, newVal);\n }\n newValues[index] = newVal;\n }\n if (newVal === currentValue) {\n return;\n }\n allowed = this._trigger(\"slide\", event, this._uiHash(index, newVal, newValues));\n\n // A slide can be canceled by returning false from the slide callback\n if (allowed === false) {\n return;\n }\n if (this._hasMultipleValues()) {\n this.values(index, newVal);\n } else {\n this.value(newVal);\n }\n },\n _stop: function (event, index) {\n this._trigger(\"stop\", event, this._uiHash(index));\n },\n _change: function (event, index) {\n if (!this._keySliding && !this._mouseSliding) {\n //store the last changed value index for reference when handles overlap\n this._lastChangedValue = index;\n this._trigger(\"change\", event, this._uiHash(index));\n }\n },\n value: function (newValue) {\n if (arguments.length) {\n this.options.value = this._trimAlignValue(newValue);\n this._refreshValue();\n this._change(null, 0);\n return;\n }\n return this._value();\n },\n values: function (index, newValue) {\n var vals, newValues, i;\n if (arguments.length > 1) {\n this.options.values[index] = this._trimAlignValue(newValue);\n this._refreshValue();\n this._change(null, index);\n return;\n }\n if (arguments.length) {\n if (Array.isArray(arguments[0])) {\n vals = this.options.values;\n newValues = arguments[0];\n for (i = 0; i < vals.length; i += 1) {\n vals[i] = this._trimAlignValue(newValues[i]);\n this._change(null, i);\n }\n this._refreshValue();\n } else {\n if (this._hasMultipleValues()) {\n return this._values(index);\n } else {\n return this.value();\n }\n }\n } else {\n return this._values();\n }\n },\n _setOption: function (key, value) {\n var i,\n valsLength = 0;\n if (key === \"range\" && this.options.range === true) {\n if (value === \"min\") {\n this.options.value = this._values(0);\n this.options.values = null;\n } else if (value === \"max\") {\n this.options.value = this._values(this.options.values.length - 1);\n this.options.values = null;\n }\n }\n if (Array.isArray(this.options.values)) {\n valsLength = this.options.values.length;\n }\n this._super(key, value);\n switch (key) {\n case \"orientation\":\n this._detectOrientation();\n this._removeClass(\"ui-slider-horizontal ui-slider-vertical\")._addClass(\"ui-slider-\" + this.orientation);\n this._refreshValue();\n if (this.options.range) {\n this._refreshRange(value);\n }\n\n // Reset positioning from previous orientation\n this.handles.css(value === \"horizontal\" ? \"bottom\" : \"left\", \"\");\n break;\n case \"value\":\n this._animateOff = true;\n this._refreshValue();\n this._change(null, 0);\n this._animateOff = false;\n break;\n case \"values\":\n this._animateOff = true;\n this._refreshValue();\n\n // Start from the last handle to prevent unreachable handles (#9046)\n for (i = valsLength - 1; i >= 0; i--) {\n this._change(null, i);\n }\n this._animateOff = false;\n break;\n case \"step\":\n case \"min\":\n case \"max\":\n this._animateOff = true;\n this._calculateNewMax();\n this._refreshValue();\n this._animateOff = false;\n break;\n case \"range\":\n this._animateOff = true;\n this._refresh();\n this._animateOff = false;\n break;\n }\n },\n _setOptionDisabled: function (value) {\n this._super(value);\n this._toggleClass(null, \"ui-state-disabled\", !!value);\n },\n //internal value getter\n // _value() returns value trimmed by min and max, aligned by step\n _value: function () {\n var val = this.options.value;\n val = this._trimAlignValue(val);\n return val;\n },\n //internal values getter\n // _values() returns array of values trimmed by min and max, aligned by step\n // _values( index ) returns single value trimmed by min and max, aligned by step\n _values: function (index) {\n var val, vals, i;\n if (arguments.length) {\n val = this.options.values[index];\n val = this._trimAlignValue(val);\n return val;\n } else if (this._hasMultipleValues()) {\n // .slice() creates a copy of the array\n // this copy gets trimmed by min and max and then returned\n vals = this.options.values.slice();\n for (i = 0; i < vals.length; i += 1) {\n vals[i] = this._trimAlignValue(vals[i]);\n }\n return vals;\n } else {\n return [];\n }\n },\n // Returns the step-aligned value that val is closest to, between (inclusive) min and max\n _trimAlignValue: function (val) {\n if (val <= this._valueMin()) {\n return this._valueMin();\n }\n if (val >= this._valueMax()) {\n return this._valueMax();\n }\n var step = this.options.step > 0 ? this.options.step : 1,\n valModStep = (val - this._valueMin()) % step,\n alignValue = val - valModStep;\n if (Math.abs(valModStep) * 2 >= step) {\n alignValue += valModStep > 0 ? step : -step;\n }\n\n // Since JavaScript has problems with large floats, round\n // the final value to 5 digits after the decimal point (see #4124)\n return parseFloat(alignValue.toFixed(5));\n },\n _calculateNewMax: function () {\n var max = this.options.max,\n min = this._valueMin(),\n step = this.options.step,\n aboveMin = Math.round((max - min) / step) * step;\n max = aboveMin + min;\n if (max > this.options.max) {\n //If max is not divisible by step, rounding off may increase its value\n max -= step;\n }\n this.max = parseFloat(max.toFixed(this._precision()));\n },\n _precision: function () {\n var precision = this._precisionOf(this.options.step);\n if (this.options.min !== null) {\n precision = Math.max(precision, this._precisionOf(this.options.min));\n }\n return precision;\n },\n _precisionOf: function (num) {\n var str = num.toString(),\n decimal = str.indexOf(\".\");\n return decimal === -1 ? 0 : str.length - decimal - 1;\n },\n _valueMin: function () {\n return this.options.min;\n },\n _valueMax: function () {\n return this.max;\n },\n _refreshRange: function (orientation) {\n if (orientation === \"vertical\") {\n this.range.css({\n \"width\": \"\",\n \"left\": \"\"\n });\n }\n if (orientation === \"horizontal\") {\n this.range.css({\n \"height\": \"\",\n \"bottom\": \"\"\n });\n }\n },\n _refreshValue: function () {\n var lastValPercent,\n valPercent,\n value,\n valueMin,\n valueMax,\n oRange = this.options.range,\n o = this.options,\n that = this,\n animate = !this._animateOff ? o.animate : false,\n _set = {};\n if (this._hasMultipleValues()) {\n this.handles.each(function (i) {\n valPercent = (that.values(i) - that._valueMin()) / (that._valueMax() - that._valueMin()) * 100;\n _set[that.orientation === \"horizontal\" ? \"left\" : \"bottom\"] = valPercent + \"%\";\n $(this).stop(1, 1)[animate ? \"animate\" : \"css\"](_set, o.animate);\n if (that.options.range === true) {\n if (that.orientation === \"horizontal\") {\n if (i === 0) {\n that.range.stop(1, 1)[animate ? \"animate\" : \"css\"]({\n left: valPercent + \"%\"\n }, o.animate);\n }\n if (i === 1) {\n that.range[animate ? \"animate\" : \"css\"]({\n width: valPercent - lastValPercent + \"%\"\n }, {\n queue: false,\n duration: o.animate\n });\n }\n } else {\n if (i === 0) {\n that.range.stop(1, 1)[animate ? \"animate\" : \"css\"]({\n bottom: valPercent + \"%\"\n }, o.animate);\n }\n if (i === 1) {\n that.range[animate ? \"animate\" : \"css\"]({\n height: valPercent - lastValPercent + \"%\"\n }, {\n queue: false,\n duration: o.animate\n });\n }\n }\n }\n lastValPercent = valPercent;\n });\n } else {\n value = this.value();\n valueMin = this._valueMin();\n valueMax = this._valueMax();\n valPercent = valueMax !== valueMin ? (value - valueMin) / (valueMax - valueMin) * 100 : 0;\n _set[this.orientation === \"horizontal\" ? \"left\" : \"bottom\"] = valPercent + \"%\";\n this.handle.stop(1, 1)[animate ? \"animate\" : \"css\"](_set, o.animate);\n if (oRange === \"min\" && this.orientation === \"horizontal\") {\n this.range.stop(1, 1)[animate ? \"animate\" : \"css\"]({\n width: valPercent + \"%\"\n }, o.animate);\n }\n if (oRange === \"max\" && this.orientation === \"horizontal\") {\n this.range.stop(1, 1)[animate ? \"animate\" : \"css\"]({\n width: 100 - valPercent + \"%\"\n }, o.animate);\n }\n if (oRange === \"min\" && this.orientation === \"vertical\") {\n this.range.stop(1, 1)[animate ? \"animate\" : \"css\"]({\n height: valPercent + \"%\"\n }, o.animate);\n }\n if (oRange === \"max\" && this.orientation === \"vertical\") {\n this.range.stop(1, 1)[animate ? \"animate\" : \"css\"]({\n height: 100 - valPercent + \"%\"\n }, o.animate);\n }\n }\n },\n _handleEvents: {\n keydown: function (event) {\n var allowed,\n curVal,\n newVal,\n step,\n index = $(event.target).data(\"ui-slider-handle-index\");\n switch (event.keyCode) {\n case $.ui.keyCode.HOME:\n case $.ui.keyCode.END:\n case $.ui.keyCode.PAGE_UP:\n case $.ui.keyCode.PAGE_DOWN:\n case $.ui.keyCode.UP:\n case $.ui.keyCode.RIGHT:\n case $.ui.keyCode.DOWN:\n case $.ui.keyCode.LEFT:\n event.preventDefault();\n if (!this._keySliding) {\n this._keySliding = true;\n this._addClass($(event.target), null, \"ui-state-active\");\n allowed = this._start(event, index);\n if (allowed === false) {\n return;\n }\n }\n break;\n }\n step = this.options.step;\n if (this._hasMultipleValues()) {\n curVal = newVal = this.values(index);\n } else {\n curVal = newVal = this.value();\n }\n switch (event.keyCode) {\n case $.ui.keyCode.HOME:\n newVal = this._valueMin();\n break;\n case $.ui.keyCode.END:\n newVal = this._valueMax();\n break;\n case $.ui.keyCode.PAGE_UP:\n newVal = this._trimAlignValue(curVal + (this._valueMax() - this._valueMin()) / this.numPages);\n break;\n case $.ui.keyCode.PAGE_DOWN:\n newVal = this._trimAlignValue(curVal - (this._valueMax() - this._valueMin()) / this.numPages);\n break;\n case $.ui.keyCode.UP:\n case $.ui.keyCode.RIGHT:\n if (curVal === this._valueMax()) {\n return;\n }\n newVal = this._trimAlignValue(curVal + step);\n break;\n case $.ui.keyCode.DOWN:\n case $.ui.keyCode.LEFT:\n if (curVal === this._valueMin()) {\n return;\n }\n newVal = this._trimAlignValue(curVal - step);\n break;\n }\n this._slide(event, index, newVal);\n },\n keyup: function (event) {\n var index = $(event.target).data(\"ui-slider-handle-index\");\n if (this._keySliding) {\n this._keySliding = false;\n this._stop(event, index);\n this._change(event, index);\n this._removeClass($(event.target), null, \"ui-state-active\");\n }\n }\n }\n });\n\n /*!\n * jQuery UI Sortable 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Sortable\n //>>group: Interactions\n //>>description: Enables items in a list to be sorted using the mouse.\n //>>docs: https://api.jqueryui.com/sortable/\n //>>demos: https://jqueryui.com/sortable/\n //>>css.structure: ../../themes/base/sortable.css\n\n var widgetsSortable = $.widget(\"ui.sortable\", $.ui.mouse, {\n version: \"1.14.1\",\n widgetEventPrefix: \"sort\",\n ready: false,\n options: {\n appendTo: \"parent\",\n axis: false,\n connectWith: false,\n containment: false,\n cursor: \"auto\",\n cursorAt: false,\n dropOnEmpty: true,\n forcePlaceholderSize: false,\n forceHelperSize: false,\n grid: false,\n handle: false,\n helper: \"original\",\n items: \"> *\",\n opacity: false,\n placeholder: false,\n revert: false,\n scroll: true,\n scrollSensitivity: 20,\n scrollSpeed: 20,\n scope: \"default\",\n tolerance: \"intersect\",\n zIndex: 1000,\n // Callbacks\n activate: null,\n beforeStop: null,\n change: null,\n deactivate: null,\n out: null,\n over: null,\n receive: null,\n remove: null,\n sort: null,\n start: null,\n stop: null,\n update: null\n },\n _isOverAxis: function (x, reference, size) {\n return x >= reference && x < reference + size;\n },\n _isFloating: function (item) {\n return /left|right/.test(item.css(\"float\")) || /inline|table-cell/.test(item.css(\"display\"));\n },\n _create: function () {\n this.containerCache = {};\n this._addClass(\"ui-sortable\");\n\n //Get the items\n this.refresh();\n\n //Let's determine the parent's offset\n this.offset = this.element.offset();\n\n //Initialize mouse events for interaction\n this._mouseInit();\n this._setHandleClassName();\n\n //We're ready to go\n this.ready = true;\n },\n _setOption: function (key, value) {\n this._super(key, value);\n if (key === \"handle\") {\n this._setHandleClassName();\n }\n },\n _setHandleClassName: function () {\n var that = this;\n this._removeClass(this.element.find(\".ui-sortable-handle\"), \"ui-sortable-handle\");\n $.each(this.items, function () {\n that._addClass(this.instance.options.handle ? this.item.find(this.instance.options.handle) : this.item, \"ui-sortable-handle\");\n });\n },\n _destroy: function () {\n this._mouseDestroy();\n for (var i = this.items.length - 1; i >= 0; i--) {\n this.items[i].item.removeData(this.widgetName + \"-item\");\n }\n return this;\n },\n _mouseCapture: function (event, overrideHandle) {\n var currentItem = null,\n validHandle = false,\n that = this;\n if (this.reverting) {\n return false;\n }\n if (this.options.disabled || this.options.type === \"static\") {\n return false;\n }\n\n //We have to refresh the items data once first\n this._refreshItems(event);\n\n //Find out if the clicked node (or one of its parents) is a actual item in this.items\n $(event.target).parents().each(function () {\n if ($.data(this, that.widgetName + \"-item\") === that) {\n currentItem = $(this);\n return false;\n }\n });\n if ($.data(event.target, that.widgetName + \"-item\") === that) {\n currentItem = $(event.target);\n }\n if (!currentItem) {\n return false;\n }\n if (this.options.handle && !overrideHandle) {\n $(this.options.handle, currentItem).find(\"*\").addBack().each(function () {\n if (this === event.target) {\n validHandle = true;\n }\n });\n if (!validHandle) {\n return false;\n }\n }\n this.currentItem = currentItem;\n this._removeCurrentsFromItems();\n return true;\n },\n _mouseStart: function (event, overrideHandle, noActivation) {\n var i,\n body,\n o = this.options;\n this.currentContainer = this;\n\n //We only need to call refreshPositions, because the refreshItems call has been moved to\n // mouseCapture\n this.refreshPositions();\n\n //Prepare the dragged items parent\n this.appendTo = $(o.appendTo !== \"parent\" ? o.appendTo : this.currentItem.parent());\n\n //Create and append the visible helper\n this.helper = this._createHelper(event);\n\n //Cache the helper size\n this._cacheHelperProportions();\n\n /*\n * - Position generation -\n * This block generates everything position related - it's the core of draggables.\n */\n\n //Cache the margins of the original element\n this._cacheMargins();\n\n //The element's absolute position on the page minus margins\n this.offset = this.currentItem.offset();\n this.offset = {\n top: this.offset.top - this.margins.top,\n left: this.offset.left - this.margins.left\n };\n $.extend(this.offset, {\n click: {\n //Where the click happened, relative to the element\n left: event.pageX - this.offset.left,\n top: event.pageY - this.offset.top\n },\n // This is a relative to absolute position minus the actual position calculation -\n // only used for relative positioned helper\n relative: this._getRelativeOffset()\n });\n\n // After we get the helper offset, but before we get the parent offset we can\n // change the helper's position to absolute\n // TODO: Still need to figure out a way to make relative sorting possible\n this.helper.css(\"position\", \"absolute\");\n this.cssPosition = this.helper.css(\"position\");\n\n //Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n if (o.cursorAt) {\n this._adjustOffsetFromHelper(o.cursorAt);\n }\n\n //Cache the former DOM position\n this.domPosition = {\n prev: this.currentItem.prev()[0],\n parent: this.currentItem.parent()[0]\n };\n\n // If the helper is not the original, hide the original so it's not playing any role during\n // the drag, won't cause anything bad this way\n if (this.helper[0] !== this.currentItem[0]) {\n this.currentItem.hide();\n }\n\n //Create the placeholder\n this._createPlaceholder();\n\n //Get the next scrolling parent\n this.scrollParent = this.placeholder.scrollParent();\n $.extend(this.offset, {\n parent: this._getParentOffset()\n });\n\n //Set a containment if given in the options\n if (o.containment) {\n this._setContainment();\n }\n if (o.cursor && o.cursor !== \"auto\") {\n // cursor option\n body = this.document.find(\"body\");\n this._storedStylesheet = $(\"<style>*{ cursor: \" + o.cursor + \" !important; }</style>\").appendTo(body);\n }\n\n // We need to make sure to grab the zIndex before setting the\n // opacity, because setting the opacity to anything lower than 1\n // causes the zIndex to change from \"auto\" to 0.\n if (o.zIndex) {\n // zIndex option\n if (this.helper.css(\"zIndex\")) {\n this._storedZIndex = this.helper.css(\"zIndex\");\n }\n this.helper.css(\"zIndex\", o.zIndex);\n }\n if (o.opacity) {\n // opacity option\n if (this.helper.css(\"opacity\")) {\n this._storedOpacity = this.helper.css(\"opacity\");\n }\n this.helper.css(\"opacity\", o.opacity);\n }\n\n //Prepare scrolling\n if (this.scrollParent[0] !== this.document[0] && this.scrollParent[0].tagName !== \"HTML\") {\n this.overflowOffset = this.scrollParent.offset();\n }\n\n //Call callbacks\n this._trigger(\"start\", event, this._uiHash());\n\n //Recache the helper size\n if (!this._preserveHelperProportions) {\n this._cacheHelperProportions();\n }\n\n //Post \"activate\" events to possible containers\n if (!noActivation) {\n for (i = this.containers.length - 1; i >= 0; i--) {\n this.containers[i]._trigger(\"activate\", event, this._uiHash(this));\n }\n }\n\n //Prepare possible droppables\n if ($.ui.ddmanager) {\n $.ui.ddmanager.current = this;\n }\n if ($.ui.ddmanager && !o.dropBehaviour) {\n $.ui.ddmanager.prepareOffsets(this, event);\n }\n this.dragging = true;\n this._addClass(this.helper, \"ui-sortable-helper\");\n\n //Move the helper, if needed\n if (!this.helper.parent().is(this.appendTo)) {\n this.helper.detach().appendTo(this.appendTo);\n\n //Update position\n this.offset.parent = this._getParentOffset();\n }\n\n //Generate the original position\n this.position = this.originalPosition = this._generatePosition(event);\n this.originalPageX = event.pageX;\n this.originalPageY = event.pageY;\n this.lastPositionAbs = this.positionAbs = this._convertPositionTo(\"absolute\");\n this._mouseDrag(event);\n return true;\n },\n _scroll: function (event) {\n var o = this.options,\n scrolled = false;\n if (this.scrollParent[0] !== this.document[0] && this.scrollParent[0].tagName !== \"HTML\") {\n if (this.overflowOffset.top + this.scrollParent[0].offsetHeight - event.pageY < o.scrollSensitivity) {\n this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;\n } else if (event.pageY - this.overflowOffset.top < o.scrollSensitivity) {\n this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;\n }\n if (this.overflowOffset.left + this.scrollParent[0].offsetWidth - event.pageX < o.scrollSensitivity) {\n this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;\n } else if (event.pageX - this.overflowOffset.left < o.scrollSensitivity) {\n this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;\n }\n } else {\n if (event.pageY - this.document.scrollTop() < o.scrollSensitivity) {\n scrolled = this.document.scrollTop(this.document.scrollTop() - o.scrollSpeed);\n } else if (this.window.height() - (event.pageY - this.document.scrollTop()) < o.scrollSensitivity) {\n scrolled = this.document.scrollTop(this.document.scrollTop() + o.scrollSpeed);\n }\n if (event.pageX - this.document.scrollLeft() < o.scrollSensitivity) {\n scrolled = this.document.scrollLeft(this.document.scrollLeft() - o.scrollSpeed);\n } else if (this.window.width() - (event.pageX - this.document.scrollLeft()) < o.scrollSensitivity) {\n scrolled = this.document.scrollLeft(this.document.scrollLeft() + o.scrollSpeed);\n }\n }\n return scrolled;\n },\n _mouseDrag: function (event) {\n var i,\n item,\n itemElement,\n intersection,\n o = this.options;\n\n //Compute the helpers position\n this.position = this._generatePosition(event);\n this.positionAbs = this._convertPositionTo(\"absolute\");\n\n //Set the helper position\n if (!this.options.axis || this.options.axis !== \"y\") {\n this.helper[0].style.left = this.position.left + \"px\";\n }\n if (!this.options.axis || this.options.axis !== \"x\") {\n this.helper[0].style.top = this.position.top + \"px\";\n }\n\n //Do scrolling\n if (o.scroll) {\n if (this._scroll(event) !== false) {\n //Update item positions used in position checks\n this._refreshItemPositions(true);\n if ($.ui.ddmanager && !o.dropBehaviour) {\n $.ui.ddmanager.prepareOffsets(this, event);\n }\n }\n }\n this.dragDirection = {\n vertical: this._getDragVerticalDirection(),\n horizontal: this._getDragHorizontalDirection()\n };\n\n //Rearrange\n for (i = this.items.length - 1; i >= 0; i--) {\n //Cache variables and intersection, continue if no intersection\n item = this.items[i];\n itemElement = item.item[0];\n intersection = this._intersectsWithPointer(item);\n if (!intersection) {\n continue;\n }\n\n // Only put the placeholder inside the current Container, skip all\n // items from other containers. This works because when moving\n // an item from one container to another the\n // currentContainer is switched before the placeholder is moved.\n //\n // Without this, moving items in \"sub-sortables\" can cause\n // the placeholder to jitter between the outer and inner container.\n if (item.instance !== this.currentContainer) {\n continue;\n }\n\n // Cannot intersect with itself\n // no useless actions that have been done before\n // no action if the item moved is the parent of the item checked\n if (itemElement !== this.currentItem[0] && this.placeholder[intersection === 1 ? \"next\" : \"prev\"]()[0] !== itemElement && !$.contains(this.placeholder[0], itemElement) && (this.options.type === \"semi-dynamic\" ? !$.contains(this.element[0], itemElement) : true)) {\n this.direction = intersection === 1 ? \"down\" : \"up\";\n if (this.options.tolerance === \"pointer\" || this._intersectsWithSides(item)) {\n this._rearrange(event, item);\n } else {\n break;\n }\n this._trigger(\"change\", event, this._uiHash());\n break;\n }\n }\n\n //Post events to containers\n this._contactContainers(event);\n\n //Interconnect with droppables\n if ($.ui.ddmanager) {\n $.ui.ddmanager.drag(this, event);\n }\n\n //Call callbacks\n this._trigger(\"sort\", event, this._uiHash());\n this.lastPositionAbs = this.positionAbs;\n return false;\n },\n _mouseStop: function (event, noPropagation) {\n if (!event) {\n return;\n }\n\n //If we are using droppables, inform the manager about the drop\n if ($.ui.ddmanager && !this.options.dropBehaviour) {\n $.ui.ddmanager.drop(this, event);\n }\n if (this.options.revert) {\n var that = this,\n cur = this.placeholder.offset(),\n axis = this.options.axis,\n animation = {};\n if (!axis || axis === \"x\") {\n animation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollLeft);\n }\n if (!axis || axis === \"y\") {\n animation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollTop);\n }\n this.reverting = true;\n $(this.helper).animate(animation, parseInt(this.options.revert, 10) || 500, function () {\n that._clear(event);\n });\n } else {\n this._clear(event, noPropagation);\n }\n return false;\n },\n cancel: function () {\n if (this.dragging) {\n this._mouseUp(new $.Event(\"mouseup\", {\n target: null\n }));\n if (this.options.helper === \"original\") {\n this.currentItem.css(this._storedCSS);\n this._removeClass(this.currentItem, \"ui-sortable-helper\");\n } else {\n this.currentItem.show();\n }\n\n //Post deactivating events to containers\n for (var i = this.containers.length - 1; i >= 0; i--) {\n this.containers[i]._trigger(\"deactivate\", null, this._uiHash(this));\n if (this.containers[i].containerCache.over) {\n this.containers[i]._trigger(\"out\", null, this._uiHash(this));\n this.containers[i].containerCache.over = 0;\n }\n }\n }\n if (this.placeholder) {\n //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\n // it unbinds ALL events from the original node!\n if (this.placeholder[0].parentNode) {\n this.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n }\n if (this.options.helper !== \"original\" && this.helper && this.helper[0].parentNode) {\n this.helper.remove();\n }\n $.extend(this, {\n helper: null,\n dragging: false,\n reverting: false,\n _noFinalSort: null\n });\n if (this.domPosition.prev) {\n $(this.domPosition.prev).after(this.currentItem);\n } else {\n $(this.domPosition.parent).prepend(this.currentItem);\n }\n }\n return this;\n },\n serialize: function (o) {\n var items = this._getItemsAsjQuery(o && o.connected),\n str = [];\n o = o || {};\n $(items).each(function () {\n var res = ($(o.item || this).attr(o.attribute || \"id\") || \"\").match(o.expression || /(.+)[\\-=_](.+)/);\n if (res) {\n str.push((o.key || res[1] + \"[]\") + \"=\" + (o.key && o.expression ? res[1] : res[2]));\n }\n });\n if (!str.length && o.key) {\n str.push(o.key + \"=\");\n }\n return str.join(\"&\");\n },\n toArray: function (o) {\n var items = this._getItemsAsjQuery(o && o.connected),\n ret = [];\n o = o || {};\n items.each(function () {\n ret.push($(o.item || this).attr(o.attribute || \"id\") || \"\");\n });\n return ret;\n },\n /* Be careful with the following core functions */\n _intersectsWith: function (item) {\n var x1 = this.positionAbs.left,\n x2 = x1 + this.helperProportions.width,\n y1 = this.positionAbs.top,\n y2 = y1 + this.helperProportions.height,\n l = item.left,\n r = l + item.width,\n t = item.top,\n b = t + item.height,\n dyClick = this.offset.click.top,\n dxClick = this.offset.click.left,\n isOverElementHeight = this.options.axis === \"x\" || y1 + dyClick > t && y1 + dyClick < b,\n isOverElementWidth = this.options.axis === \"y\" || x1 + dxClick > l && x1 + dxClick < r,\n isOverElement = isOverElementHeight && isOverElementWidth;\n if (this.options.tolerance === \"pointer\" || this.options.forcePointerForContainers || this.options.tolerance !== \"pointer\" && this.helperProportions[this.floating ? \"width\" : \"height\"] > item[this.floating ? \"width\" : \"height\"]) {\n return isOverElement;\n } else {\n return l < x1 + this.helperProportions.width / 2 &&\n // Right Half\n x2 - this.helperProportions.width / 2 < r &&\n // Left Half\n t < y1 + this.helperProportions.height / 2 &&\n // Bottom Half\n y2 - this.helperProportions.height / 2 < b; // Top Half\n }\n },\n _intersectsWithPointer: function (item) {\n var verticalDirection,\n horizontalDirection,\n isOverElementHeight = this.options.axis === \"x\" || this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),\n isOverElementWidth = this.options.axis === \"y\" || this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),\n isOverElement = isOverElementHeight && isOverElementWidth;\n if (!isOverElement) {\n return false;\n }\n verticalDirection = this.dragDirection.vertical;\n horizontalDirection = this.dragDirection.horizontal;\n return this.floating ? horizontalDirection === \"right\" || verticalDirection === \"down\" ? 2 : 1 : verticalDirection && (verticalDirection === \"down\" ? 2 : 1);\n },\n _intersectsWithSides: function (item) {\n var isOverBottomHalf = this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + item.height / 2, item.height),\n isOverRightHalf = this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + item.width / 2, item.width),\n verticalDirection = this.dragDirection.vertical,\n horizontalDirection = this.dragDirection.horizontal;\n if (this.floating && horizontalDirection) {\n return horizontalDirection === \"right\" && isOverRightHalf || horizontalDirection === \"left\" && !isOverRightHalf;\n } else {\n return verticalDirection && (verticalDirection === \"down\" && isOverBottomHalf || verticalDirection === \"up\" && !isOverBottomHalf);\n }\n },\n _getDragVerticalDirection: function () {\n var delta = this.positionAbs.top - this.lastPositionAbs.top;\n return delta !== 0 && (delta > 0 ? \"down\" : \"up\");\n },\n _getDragHorizontalDirection: function () {\n var delta = this.positionAbs.left - this.lastPositionAbs.left;\n return delta !== 0 && (delta > 0 ? \"right\" : \"left\");\n },\n refresh: function (event) {\n this._refreshItems(event);\n this._setHandleClassName();\n this.refreshPositions();\n return this;\n },\n _connectWith: function () {\n var options = this.options;\n return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith;\n },\n _getItemsAsjQuery: function (connected) {\n var i,\n j,\n cur,\n inst,\n items = [],\n queries = [],\n connectWith = this._connectWith();\n if (connectWith && connected) {\n for (i = connectWith.length - 1; i >= 0; i--) {\n cur = $(connectWith[i], this.document[0]);\n for (j = cur.length - 1; j >= 0; j--) {\n inst = $.data(cur[j], this.widgetFullName);\n if (inst && inst !== this && !inst.options.disabled) {\n queries.push([typeof inst.options.items === \"function\" ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(\".ui-sortable-helper\").not(\".ui-sortable-placeholder\"), inst]);\n }\n }\n }\n }\n queries.push([typeof this.options.items === \"function\" ? this.options.items.call(this.element, null, {\n options: this.options,\n item: this.currentItem\n }) : $(this.options.items, this.element).not(\".ui-sortable-helper\").not(\".ui-sortable-placeholder\"), this]);\n function addItems() {\n items.push(this);\n }\n for (i = queries.length - 1; i >= 0; i--) {\n queries[i][0].each(addItems);\n }\n return $(items);\n },\n _removeCurrentsFromItems: function () {\n var list = this.currentItem.find(\":data(\" + this.widgetName + \"-item)\");\n this.items = $.grep(this.items, function (item) {\n for (var j = 0; j < list.length; j++) {\n if (list[j] === item.item[0]) {\n return false;\n }\n }\n return true;\n });\n },\n _refreshItems: function (event) {\n this.items = [];\n this.containers = [this];\n var i,\n j,\n cur,\n inst,\n targetData,\n _queries,\n item,\n queriesLength,\n items = this.items,\n queries = [[typeof this.options.items === \"function\" ? this.options.items.call(this.element[0], event, {\n item: this.currentItem\n }) : $(this.options.items, this.element), this]],\n connectWith = this._connectWith();\n\n //Shouldn't be run the first time through due to massive slow-down\n if (connectWith && this.ready) {\n for (i = connectWith.length - 1; i >= 0; i--) {\n cur = $(connectWith[i], this.document[0]);\n for (j = cur.length - 1; j >= 0; j--) {\n inst = $.data(cur[j], this.widgetFullName);\n if (inst && inst !== this && !inst.options.disabled) {\n queries.push([typeof inst.options.items === \"function\" ? inst.options.items.call(inst.element[0], event, {\n item: this.currentItem\n }) : $(inst.options.items, inst.element), inst]);\n this.containers.push(inst);\n }\n }\n }\n }\n for (i = queries.length - 1; i >= 0; i--) {\n targetData = queries[i][1];\n _queries = queries[i][0];\n for (j = 0, queriesLength = _queries.length; j < queriesLength; j++) {\n item = $(_queries[j]);\n\n // Data for target checking (mouse manager)\n item.data(this.widgetName + \"-item\", targetData);\n items.push({\n item: item,\n instance: targetData,\n width: 0,\n height: 0,\n left: 0,\n top: 0\n });\n }\n }\n },\n _refreshItemPositions: function (fast) {\n var i, item, t, p;\n for (i = this.items.length - 1; i >= 0; i--) {\n item = this.items[i];\n\n //We ignore calculating positions of all connected containers when we're not over them\n if (this.currentContainer && item.instance !== this.currentContainer && item.item[0] !== this.currentItem[0]) {\n continue;\n }\n t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;\n if (!fast) {\n item.width = t.outerWidth();\n item.height = t.outerHeight();\n }\n p = t.offset();\n item.left = p.left;\n item.top = p.top;\n }\n },\n refreshPositions: function (fast) {\n // Determine whether items are being displayed horizontally\n this.floating = this.items.length ? this.options.axis === \"x\" || this._isFloating(this.items[0].item) : false;\n\n // This has to be redone because due to the item being moved out/into the offsetParent,\n // the offsetParent's position will change\n if (this.offsetParent && this.helper) {\n this.offset.parent = this._getParentOffset();\n }\n this._refreshItemPositions(fast);\n var i, p;\n if (this.options.custom && this.options.custom.refreshContainers) {\n this.options.custom.refreshContainers.call(this);\n } else {\n for (i = this.containers.length - 1; i >= 0; i--) {\n p = this.containers[i].element.offset();\n this.containers[i].containerCache.left = p.left;\n this.containers[i].containerCache.top = p.top;\n this.containers[i].containerCache.width = this.containers[i].element.outerWidth();\n this.containers[i].containerCache.height = this.containers[i].element.outerHeight();\n }\n }\n return this;\n },\n _createPlaceholder: function (that) {\n that = that || this;\n var className,\n nodeName,\n o = that.options;\n if (!o.placeholder || o.placeholder.constructor === String) {\n className = o.placeholder;\n nodeName = that.currentItem[0].nodeName.toLowerCase();\n o.placeholder = {\n element: function () {\n var element = $(\"<\" + nodeName + \">\", that.document[0]);\n that._addClass(element, \"ui-sortable-placeholder\", className || that.currentItem[0].className)._removeClass(element, \"ui-sortable-helper\");\n if (nodeName === \"tbody\") {\n that._createTrPlaceholder(that.currentItem.find(\"tr\").eq(0), $(\"<tr>\", that.document[0]).appendTo(element));\n } else if (nodeName === \"tr\") {\n that._createTrPlaceholder(that.currentItem, element);\n } else if (nodeName === \"img\") {\n element.attr(\"src\", that.currentItem.attr(\"src\"));\n }\n if (!className) {\n element.css(\"visibility\", \"hidden\");\n }\n return element;\n },\n update: function (container, p) {\n // 1. If a className is set as 'placeholder option, we don't force sizes -\n // the class is responsible for that\n // 2. The option 'forcePlaceholderSize can be enabled to force it even if a\n // class name is specified\n if (className && !o.forcePlaceholderSize) {\n return;\n }\n\n // If the element doesn't have a actual height or width by itself (without\n // styles coming from a stylesheet), it receives the inline height and width\n // from the dragged item. Or, if it's a tbody or tr, it's going to have a height\n // anyway since we're populating them with <td>s above, but they're unlikely to\n // be the correct height on their own if the row heights are dynamic, so we'll\n // always assign the height of the dragged item given forcePlaceholderSize\n // is true.\n if (!p.height() || o.forcePlaceholderSize && (nodeName === \"tbody\" || nodeName === \"tr\")) {\n p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css(\"paddingTop\") || 0, 10) - parseInt(that.currentItem.css(\"paddingBottom\") || 0, 10));\n }\n if (!p.width()) {\n p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css(\"paddingLeft\") || 0, 10) - parseInt(that.currentItem.css(\"paddingRight\") || 0, 10));\n }\n }\n };\n }\n\n //Create the placeholder\n that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));\n\n //Append it after the actual current item\n that.currentItem.after(that.placeholder);\n\n //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n o.placeholder.update(that, that.placeholder);\n },\n _createTrPlaceholder: function (sourceTr, targetTr) {\n var that = this;\n sourceTr.children().each(function () {\n $(\"<td> </td>\", that.document[0]).attr(\"colspan\", $(this).attr(\"colspan\") || 1).appendTo(targetTr);\n });\n },\n _contactContainers: function (event) {\n var i,\n j,\n dist,\n itemWithLeastDistance,\n posProperty,\n sizeProperty,\n cur,\n nearBottom,\n floating,\n axis,\n innermostContainer = null,\n innermostIndex = null;\n\n // Get innermost container that intersects with item\n for (i = this.containers.length - 1; i >= 0; i--) {\n // Never consider a container that's located within the item itself\n if ($.contains(this.currentItem[0], this.containers[i].element[0])) {\n continue;\n }\n if (this._intersectsWith(this.containers[i].containerCache)) {\n // If we've already found a container and it's more \"inner\" than this, then continue\n if (innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) {\n continue;\n }\n innermostContainer = this.containers[i];\n innermostIndex = i;\n } else {\n // container doesn't intersect. trigger \"out\" event if necessary\n if (this.containers[i].containerCache.over) {\n this.containers[i]._trigger(\"out\", event, this._uiHash(this));\n this.containers[i].containerCache.over = 0;\n }\n }\n }\n\n // If no intersecting containers found, return\n if (!innermostContainer) {\n return;\n }\n\n // Move the item into the container if it's not there already\n if (this.containers.length === 1) {\n if (!this.containers[innermostIndex].containerCache.over) {\n this.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n this.containers[innermostIndex].containerCache.over = 1;\n }\n } else {\n // When entering a new container, we will find the item with the least distance and\n // append our item near it\n dist = 10000;\n itemWithLeastDistance = null;\n floating = innermostContainer.floating || this._isFloating(this.currentItem);\n posProperty = floating ? \"left\" : \"top\";\n sizeProperty = floating ? \"width\" : \"height\";\n axis = floating ? \"pageX\" : \"pageY\";\n for (j = this.items.length - 1; j >= 0; j--) {\n if (!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) {\n continue;\n }\n if (this.items[j].item[0] === this.currentItem[0]) {\n continue;\n }\n cur = this.items[j].item.offset()[posProperty];\n nearBottom = false;\n if (event[axis] - cur > this.items[j][sizeProperty] / 2) {\n nearBottom = true;\n }\n if (Math.abs(event[axis] - cur) < dist) {\n dist = Math.abs(event[axis] - cur);\n itemWithLeastDistance = this.items[j];\n this.direction = nearBottom ? \"up\" : \"down\";\n }\n }\n\n //Check if dropOnEmpty is enabled\n if (!itemWithLeastDistance && !this.options.dropOnEmpty) {\n return;\n }\n if (this.currentContainer === this.containers[innermostIndex]) {\n if (!this.currentContainer.containerCache.over) {\n this.containers[innermostIndex]._trigger(\"over\", event, this._uiHash());\n this.currentContainer.containerCache.over = 1;\n }\n return;\n }\n if (itemWithLeastDistance) {\n this._rearrange(event, itemWithLeastDistance, null, true);\n } else {\n this._rearrange(event, null, this.containers[innermostIndex].element, true);\n }\n this._trigger(\"change\", event, this._uiHash());\n this.containers[innermostIndex]._trigger(\"change\", event, this._uiHash(this));\n this.currentContainer = this.containers[innermostIndex];\n\n //Update the placeholder\n this.options.placeholder.update(this.currentContainer, this.placeholder);\n\n //Update scrollParent\n this.scrollParent = this.placeholder.scrollParent();\n\n //Update overflowOffset\n if (this.scrollParent[0] !== this.document[0] && this.scrollParent[0].tagName !== \"HTML\") {\n this.overflowOffset = this.scrollParent.offset();\n }\n this.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n this.containers[innermostIndex].containerCache.over = 1;\n }\n },\n _createHelper: function (event) {\n var o = this.options,\n helper = typeof o.helper === \"function\" ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : o.helper === \"clone\" ? this.currentItem.clone() : this.currentItem;\n\n //Add the helper to the DOM if that didn't happen already\n if (!helper.parents(\"body\").length) {\n this.appendTo[0].appendChild(helper[0]);\n }\n if (helper[0] === this.currentItem[0]) {\n this._storedCSS = {\n width: this.currentItem[0].style.width,\n height: this.currentItem[0].style.height,\n position: this.currentItem.css(\"position\"),\n top: this.currentItem.css(\"top\"),\n left: this.currentItem.css(\"left\")\n };\n }\n if (!helper[0].style.width || o.forceHelperSize) {\n helper.width(this.currentItem.width());\n }\n if (!helper[0].style.height || o.forceHelperSize) {\n helper.height(this.currentItem.height());\n }\n return helper;\n },\n _adjustOffsetFromHelper: function (obj) {\n if (typeof obj === \"string\") {\n obj = obj.split(\" \");\n }\n if (Array.isArray(obj)) {\n obj = {\n left: +obj[0],\n top: +obj[1] || 0\n };\n }\n if (\"left\" in obj) {\n this.offset.click.left = obj.left + this.margins.left;\n }\n if (\"right\" in obj) {\n this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n }\n if (\"top\" in obj) {\n this.offset.click.top = obj.top + this.margins.top;\n }\n if (\"bottom\" in obj) {\n this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n }\n },\n _getParentOffset: function () {\n //Get the offsetParent and cache its position\n this.offsetParent = this.helper.offsetParent();\n var po = this.offsetParent.offset();\n\n // This is a special case where we need to modify a offset calculated on start, since the\n // following happened:\n // 1. The position of the helper is absolute, so it's position is calculated based on the\n // next positioned parent\n // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't\n // the document, which means that the scroll is included in the initial calculation of the\n // offset of the parent, and never recalculated upon drag\n if (this.cssPosition === \"absolute\" && this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n po.left += this.scrollParent.scrollLeft();\n po.top += this.scrollParent.scrollTop();\n }\n\n // This needs to be actually done for all browsers, since pageX/pageY includes\n // this information.\n if (this.offsetParent[0] === this.document[0].body) {\n po = {\n top: 0,\n left: 0\n };\n }\n return {\n top: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"), 10) || 0),\n left: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"), 10) || 0)\n };\n },\n _getRelativeOffset: function () {\n if (this.cssPosition === \"relative\") {\n var p = this.currentItem.position();\n return {\n top: p.top - (parseInt(this.helper.css(\"top\"), 10) || 0) + this.scrollParent.scrollTop(),\n left: p.left - (parseInt(this.helper.css(\"left\"), 10) || 0) + this.scrollParent.scrollLeft()\n };\n } else {\n return {\n top: 0,\n left: 0\n };\n }\n },\n _cacheMargins: function () {\n this.margins = {\n left: parseInt(this.currentItem.css(\"marginLeft\"), 10) || 0,\n top: parseInt(this.currentItem.css(\"marginTop\"), 10) || 0\n };\n },\n _cacheHelperProportions: function () {\n this.helperProportions = {\n width: this.helper.outerWidth(),\n height: this.helper.outerHeight()\n };\n },\n _setContainment: function () {\n var ce,\n co,\n over,\n o = this.options;\n if (o.containment === \"parent\") {\n o.containment = this.helper[0].parentNode;\n }\n if (o.containment === \"document\" || o.containment === \"window\") {\n this.containment = [0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, o.containment === \"document\" ? this.document.width() : this.window.width() - this.helperProportions.width - this.margins.left, (o.containment === \"document\" ? this.document.height() || document.body.parentNode.scrollHeight : this.window.height() || this.document[0].body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top];\n }\n if (!/^(document|window|parent)$/.test(o.containment)) {\n ce = $(o.containment)[0];\n co = $(o.containment).offset();\n over = $(ce).css(\"overflow\") !== \"hidden\";\n this.containment = [co.left + (parseInt($(ce).css(\"borderLeftWidth\"), 10) || 0) + (parseInt($(ce).css(\"paddingLeft\"), 10) || 0) - this.margins.left, co.top + (parseInt($(ce).css(\"borderTopWidth\"), 10) || 0) + (parseInt($(ce).css(\"paddingTop\"), 10) || 0) - this.margins.top, co.left + (over ? Math.max(ce.scrollWidth, ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"), 10) || 0) - (parseInt($(ce).css(\"paddingRight\"), 10) || 0) - this.helperProportions.width - this.margins.left, co.top + (over ? Math.max(ce.scrollHeight, ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"), 10) || 0) - (parseInt($(ce).css(\"paddingBottom\"), 10) || 0) - this.helperProportions.height - this.margins.top];\n }\n },\n _convertPositionTo: function (d, pos) {\n if (!pos) {\n pos = this.position;\n }\n var mod = d === \"absolute\" ? 1 : -1,\n scroll = this.cssPosition === \"absolute\" && !(this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,\n scrollIsRootNode = /(html|body)/i.test(scroll[0].tagName);\n return {\n top:\n // The absolute mouse position\n pos.top +\n // Only for relative positioned nodes: Relative offset from element to offset parent\n this.offset.relative.top * mod +\n // The offsetParent's offset without borders (offset + border)\n this.offset.parent.top * mod - (this.cssPosition === \"fixed\" ? -this.scrollParent.scrollTop() : scrollIsRootNode ? 0 : scroll.scrollTop()) * mod,\n left:\n // The absolute mouse position\n pos.left +\n // Only for relative positioned nodes: Relative offset from element to offset parent\n this.offset.relative.left * mod +\n // The offsetParent's offset without borders (offset + border)\n this.offset.parent.left * mod - (this.cssPosition === \"fixed\" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft()) * mod\n };\n },\n _generatePosition: function (event) {\n var top,\n left,\n o = this.options,\n pageX = event.pageX,\n pageY = event.pageY,\n scroll = this.cssPosition === \"absolute\" && !(this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,\n scrollIsRootNode = /(html|body)/i.test(scroll[0].tagName);\n\n // This is another very weird special case that only happens for relative elements:\n // 1. If the css position is relative\n // 2. and the scroll parent is the document or similar to the offset parent\n // we have to refresh the relative offset during the scroll so there are no jumps\n if (this.cssPosition === \"relative\" && !(this.scrollParent[0] !== this.document[0] && this.scrollParent[0] !== this.offsetParent[0])) {\n this.offset.relative = this._getRelativeOffset();\n }\n\n /*\n * - Position constraining -\n * Constrain the position to a mix of grid, containment.\n */\n\n if (this.originalPosition) {\n //If we are not dragging yet, we won't check for options\n\n if (this.containment) {\n if (event.pageX - this.offset.click.left < this.containment[0]) {\n pageX = this.containment[0] + this.offset.click.left;\n }\n if (event.pageY - this.offset.click.top < this.containment[1]) {\n pageY = this.containment[1] + this.offset.click.top;\n }\n if (event.pageX - this.offset.click.left > this.containment[2]) {\n pageX = this.containment[2] + this.offset.click.left;\n }\n if (event.pageY - this.offset.click.top > this.containment[3]) {\n pageY = this.containment[3] + this.offset.click.top;\n }\n }\n if (o.grid) {\n top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];\n pageY = this.containment ? top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3] ? top : top - this.offset.click.top >= this.containment[1] ? top - o.grid[1] : top + o.grid[1] : top;\n left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];\n pageX = this.containment ? left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2] ? left : left - this.offset.click.left >= this.containment[0] ? left - o.grid[0] : left + o.grid[0] : left;\n }\n }\n return {\n top:\n // The absolute mouse position\n pageY -\n // Click offset (relative to the element)\n this.offset.click.top -\n // Only for relative positioned nodes: Relative offset from element to offset parent\n this.offset.relative.top -\n // The offsetParent's offset without borders (offset + border)\n this.offset.parent.top + (this.cssPosition === \"fixed\" ? -this.scrollParent.scrollTop() : scrollIsRootNode ? 0 : scroll.scrollTop()),\n left:\n // The absolute mouse position\n pageX -\n // Click offset (relative to the element)\n this.offset.click.left -\n // Only for relative positioned nodes: Relative offset from element to offset parent\n this.offset.relative.left -\n // The offsetParent's offset without borders (offset + border)\n this.offset.parent.left + (this.cssPosition === \"fixed\" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft())\n };\n },\n _rearrange: function (event, i, a, hardRefresh) {\n if (a) {\n a[0].appendChild(this.placeholder[0]);\n } else {\n i.item[0].parentNode.insertBefore(this.placeholder[0], this.direction === \"down\" ? i.item[0] : i.item[0].nextSibling);\n }\n\n //Various things done here to improve the performance:\n // 1. we create a setTimeout, that calls refreshPositions\n // 2. on the instance, we have a counter variable, that get's higher after every append\n // 3. on the local scope, we copy the counter variable, and check in the timeout,\n // if it's still the same\n // 4. this lets only the last addition to the timeout stack through\n this.counter = this.counter ? ++this.counter : 1;\n var counter = this.counter;\n this._delay(function () {\n if (counter === this.counter) {\n //Precompute after each DOM insertion, NOT on mousemove\n this.refreshPositions(!hardRefresh);\n }\n });\n },\n _clear: function (event, noPropagation) {\n this.reverting = false;\n\n // We delay all events that have to be triggered to after the point where the placeholder\n // has been removed and everything else normalized again\n var i,\n delayedTriggers = [];\n\n // We first have to update the dom position of the actual currentItem\n // Note: don't do it if the current item is already removed (by a user), or it gets\n // reappended (see #4088)\n if (!this._noFinalSort && this.currentItem.parent().length) {\n this.placeholder.before(this.currentItem);\n }\n this._noFinalSort = null;\n if (this.helper[0] === this.currentItem[0]) {\n for (i in this._storedCSS) {\n if (this._storedCSS[i] === \"auto\" || this._storedCSS[i] === \"static\") {\n this._storedCSS[i] = \"\";\n }\n }\n this.currentItem.css(this._storedCSS);\n this._removeClass(this.currentItem, \"ui-sortable-helper\");\n } else {\n this.currentItem.show();\n }\n if (this.fromOutside && !noPropagation) {\n delayedTriggers.push(function (event) {\n this._trigger(\"receive\", event, this._uiHash(this.fromOutside));\n });\n }\n if ((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(\".ui-sortable-helper\")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) {\n // Trigger update callback if the DOM position has changed\n delayedTriggers.push(function (event) {\n this._trigger(\"update\", event, this._uiHash());\n });\n }\n\n // Check if the items Container has Changed and trigger appropriate\n // events.\n if (this !== this.currentContainer) {\n if (!noPropagation) {\n delayedTriggers.push(function (event) {\n this._trigger(\"remove\", event, this._uiHash());\n });\n delayedTriggers.push(function (c) {\n return function (event) {\n c._trigger(\"receive\", event, this._uiHash(this));\n };\n }.call(this, this.currentContainer));\n delayedTriggers.push(function (c) {\n return function (event) {\n c._trigger(\"update\", event, this._uiHash(this));\n };\n }.call(this, this.currentContainer));\n }\n }\n\n //Post events to containers\n function delayEvent(type, instance, container) {\n return function (event) {\n container._trigger(type, event, instance._uiHash(instance));\n };\n }\n for (i = this.containers.length - 1; i >= 0; i--) {\n if (!noPropagation) {\n delayedTriggers.push(delayEvent(\"deactivate\", this, this.containers[i]));\n }\n if (this.containers[i].containerCache.over) {\n delayedTriggers.push(delayEvent(\"out\", this, this.containers[i]));\n this.containers[i].containerCache.over = 0;\n }\n }\n\n //Do what was originally in plugins\n if (this._storedStylesheet) {\n this._storedStylesheet.remove();\n this._storedStylesheet = null;\n }\n if (this._storedOpacity) {\n this.helper.css(\"opacity\", this._storedOpacity);\n }\n if (this._storedZIndex) {\n this.helper.css(\"zIndex\", this._storedZIndex === \"auto\" ? \"\" : this._storedZIndex);\n }\n this.dragging = false;\n if (!noPropagation) {\n this._trigger(\"beforeStop\", event, this._uiHash());\n }\n\n //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\n // it unbinds ALL events from the original node!\n this.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n if (!this.cancelHelperRemoval) {\n if (this.helper[0] !== this.currentItem[0]) {\n this.helper.remove();\n }\n this.helper = null;\n }\n if (!noPropagation) {\n for (i = 0; i < delayedTriggers.length; i++) {\n // Trigger all delayed events\n delayedTriggers[i].call(this, event);\n }\n this._trigger(\"stop\", event, this._uiHash());\n }\n this.fromOutside = false;\n return !this.cancelHelperRemoval;\n },\n _trigger: function () {\n if ($.Widget.prototype._trigger.apply(this, arguments) === false) {\n this.cancel();\n }\n },\n _uiHash: function (_inst) {\n var inst = _inst || this;\n return {\n helper: inst.helper,\n placeholder: inst.placeholder || $([]),\n position: inst.position,\n originalPosition: inst.originalPosition,\n offset: inst.positionAbs,\n item: inst.currentItem,\n sender: _inst ? _inst.element : null\n };\n }\n });\n\n /*!\n * jQuery UI Spinner 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Spinner\n //>>group: Widgets\n //>>description: Displays buttons to easily input numbers via the keyboard or mouse.\n //>>docs: https://api.jqueryui.com/spinner/\n //>>demos: https://jqueryui.com/spinner/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/spinner.css\n //>>css.theme: ../../themes/base/theme.css\n\n function spinnerModifier(fn) {\n return function () {\n var previous = this.element.val();\n fn.apply(this, arguments);\n this._refresh();\n if (previous !== this.element.val()) {\n this._trigger(\"change\");\n }\n };\n }\n $.widget(\"ui.spinner\", {\n version: \"1.14.1\",\n defaultElement: \"<input>\",\n widgetEventPrefix: \"spin\",\n options: {\n classes: {\n \"ui-spinner\": \"ui-corner-all\",\n \"ui-spinner-down\": \"ui-corner-br\",\n \"ui-spinner-up\": \"ui-corner-tr\"\n },\n culture: null,\n icons: {\n down: \"ui-icon-triangle-1-s\",\n up: \"ui-icon-triangle-1-n\"\n },\n incremental: true,\n max: null,\n min: null,\n numberFormat: null,\n page: 10,\n step: 1,\n change: null,\n spin: null,\n start: null,\n stop: null\n },\n _create: function () {\n // handle string values that need to be parsed\n this._setOption(\"max\", this.options.max);\n this._setOption(\"min\", this.options.min);\n this._setOption(\"step\", this.options.step);\n\n // Only format if there is a value, prevents the field from being marked\n // as invalid in Firefox, see #9573.\n if (this.value() !== \"\") {\n // Format the value, but don't constrain.\n this._value(this.element.val(), true);\n }\n this._draw();\n this._on(this._events);\n this._refresh();\n\n // Turning off autocomplete prevents the browser from remembering the\n // value when navigating through history, so we re-enable autocomplete\n // if the page is unloaded before the widget is destroyed. #7790\n this._on(this.window, {\n beforeunload: function () {\n this.element.removeAttr(\"autocomplete\");\n }\n });\n },\n _getCreateOptions: function () {\n var options = this._super();\n var element = this.element;\n $.each([\"min\", \"max\", \"step\"], function (i, option) {\n var value = element.attr(option);\n if (value != null && value.length) {\n options[option] = value;\n }\n });\n return options;\n },\n _events: {\n keydown: function (event) {\n if (this._start(event) && this._keydown(event)) {\n event.preventDefault();\n }\n },\n keyup: \"_stop\",\n focus: function () {\n this.previous = this.element.val();\n },\n blur: function (event) {\n this._stop();\n this._refresh();\n if (this.previous !== this.element.val()) {\n this._trigger(\"change\", event);\n }\n },\n mousewheel: function (event, delta) {\n var activeElement = this.document[0].activeElement;\n var isActive = this.element[0] === activeElement;\n if (!isActive || !delta) {\n return;\n }\n if (!this.spinning && !this._start(event)) {\n return false;\n }\n this._spin((delta > 0 ? 1 : -1) * this.options.step, event);\n clearTimeout(this.mousewheelTimer);\n this.mousewheelTimer = this._delay(function () {\n if (this.spinning) {\n this._stop(event);\n }\n }, 100);\n event.preventDefault();\n },\n \"mousedown .ui-spinner-button\": function (event) {\n var previous;\n\n // We never want the buttons to have focus; whenever the user is\n // interacting with the spinner, the focus should be on the input.\n // If the input is focused then this.previous is properly set from\n // when the input first received focus. If the input is not focused\n // then we need to set this.previous based on the value before spinning.\n previous = this.element[0] === this.document[0].activeElement ? this.previous : this.element.val();\n function checkFocus() {\n var isActive = this.element[0] === this.document[0].activeElement;\n if (!isActive) {\n this.element.trigger(\"focus\");\n this.previous = previous;\n }\n }\n\n // Ensure focus is on (or stays on) the text field\n event.preventDefault();\n checkFocus.call(this);\n if (this._start(event) === false) {\n return;\n }\n this._repeat(null, $(event.currentTarget).hasClass(\"ui-spinner-up\") ? 1 : -1, event);\n },\n \"mouseup .ui-spinner-button\": \"_stop\",\n \"mouseenter .ui-spinner-button\": function (event) {\n // button will add ui-state-active if mouse was down while mouseleave and kept down\n if (!$(event.currentTarget).hasClass(\"ui-state-active\")) {\n return;\n }\n if (this._start(event) === false) {\n return false;\n }\n this._repeat(null, $(event.currentTarget).hasClass(\"ui-spinner-up\") ? 1 : -1, event);\n },\n // TODO: do we really want to consider this a stop?\n // shouldn't we just stop the repeater and wait until mouseup before\n // we trigger the stop event?\n \"mouseleave .ui-spinner-button\": \"_stop\"\n },\n // Support mobile enhanced option and make backcompat more sane\n _enhance: function () {\n this.uiSpinner = this.element.attr(\"autocomplete\", \"off\").wrap(\"<span>\").parent()\n\n // Add buttons\n .append(\"<a></a><a></a>\");\n },\n _draw: function () {\n this._enhance();\n this._addClass(this.uiSpinner, \"ui-spinner\", \"ui-widget ui-widget-content\");\n this._addClass(\"ui-spinner-input\");\n this.element.attr(\"role\", \"spinbutton\");\n\n // Button bindings\n this.buttons = this.uiSpinner.children(\"a\").attr(\"tabIndex\", -1).attr(\"aria-hidden\", true).button({\n classes: {\n \"ui-button\": \"\"\n }\n });\n\n // TODO: Right now button does not support classes this is already updated in button PR\n this._removeClass(this.buttons, \"ui-corner-all\");\n this._addClass(this.buttons.first(), \"ui-spinner-button ui-spinner-up\");\n this._addClass(this.buttons.last(), \"ui-spinner-button ui-spinner-down\");\n this.buttons.first().button({\n \"icon\": this.options.icons.up,\n \"showLabel\": false\n });\n this.buttons.last().button({\n \"icon\": this.options.icons.down,\n \"showLabel\": false\n });\n\n // IE 6 doesn't understand height: 50% for the buttons\n // unless the wrapper has an explicit height\n if (this.buttons.height() > Math.ceil(this.uiSpinner.height() * 0.5) && this.uiSpinner.height() > 0) {\n this.uiSpinner.height(this.uiSpinner.height());\n }\n },\n _keydown: function (event) {\n var options = this.options,\n keyCode = $.ui.keyCode;\n switch (event.keyCode) {\n case keyCode.UP:\n this._repeat(null, 1, event);\n return true;\n case keyCode.DOWN:\n this._repeat(null, -1, event);\n return true;\n case keyCode.PAGE_UP:\n this._repeat(null, options.page, event);\n return true;\n case keyCode.PAGE_DOWN:\n this._repeat(null, -options.page, event);\n return true;\n }\n return false;\n },\n _start: function (event) {\n if (!this.spinning && this._trigger(\"start\", event) === false) {\n return false;\n }\n if (!this.counter) {\n this.counter = 1;\n }\n this.spinning = true;\n return true;\n },\n _repeat: function (i, steps, event) {\n i = i || 500;\n clearTimeout(this.timer);\n this.timer = this._delay(function () {\n this._repeat(40, steps, event);\n }, i);\n this._spin(steps * this.options.step, event);\n },\n _spin: function (step, event) {\n var value = this.value() || 0;\n if (!this.counter) {\n this.counter = 1;\n }\n value = this._adjustValue(value + step * this._increment(this.counter));\n if (!this.spinning || this._trigger(\"spin\", event, {\n value: value\n }) !== false) {\n this._value(value);\n this.counter++;\n }\n },\n _increment: function (i) {\n var incremental = this.options.incremental;\n if (incremental) {\n return typeof incremental === \"function\" ? incremental(i) : Math.floor(i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1);\n }\n return 1;\n },\n _precision: function () {\n var precision = this._precisionOf(this.options.step);\n if (this.options.min !== null) {\n precision = Math.max(precision, this._precisionOf(this.options.min));\n }\n return precision;\n },\n _precisionOf: function (num) {\n var str = num.toString(),\n decimal = str.indexOf(\".\");\n return decimal === -1 ? 0 : str.length - decimal - 1;\n },\n _adjustValue: function (value) {\n var base,\n aboveMin,\n options = this.options;\n\n // Make sure we're at a valid step\n // - find out where we are relative to the base (min or 0)\n base = options.min !== null ? options.min : 0;\n aboveMin = value - base;\n\n // - round to the nearest step\n aboveMin = Math.round(aboveMin / options.step) * options.step;\n\n // - rounding is based on 0, so adjust back to our base\n value = base + aboveMin;\n\n // Fix precision from bad JS floating point math\n value = parseFloat(value.toFixed(this._precision()));\n\n // Clamp the value\n if (options.max !== null && value > options.max) {\n return options.max;\n }\n if (options.min !== null && value < options.min) {\n return options.min;\n }\n return value;\n },\n _stop: function (event) {\n if (!this.spinning) {\n return;\n }\n clearTimeout(this.timer);\n clearTimeout(this.mousewheelTimer);\n this.counter = 0;\n this.spinning = false;\n this._trigger(\"stop\", event);\n },\n _setOption: function (key, value) {\n var prevValue, first, last;\n if (key === \"culture\" || key === \"numberFormat\") {\n prevValue = this._parse(this.element.val());\n this.options[key] = value;\n this.element.val(this._format(prevValue));\n return;\n }\n if (key === \"max\" || key === \"min\" || key === \"step\") {\n if (typeof value === \"string\") {\n value = this._parse(value);\n }\n }\n if (key === \"icons\") {\n first = this.buttons.first().find(\".ui-icon\");\n this._removeClass(first, null, this.options.icons.up);\n this._addClass(first, null, value.up);\n last = this.buttons.last().find(\".ui-icon\");\n this._removeClass(last, null, this.options.icons.down);\n this._addClass(last, null, value.down);\n }\n this._super(key, value);\n },\n _setOptionDisabled: function (value) {\n this._super(value);\n this._toggleClass(this.uiSpinner, null, \"ui-state-disabled\", !!value);\n this.element.prop(\"disabled\", !!value);\n this.buttons.button(value ? \"disable\" : \"enable\");\n },\n _setOptions: spinnerModifier(function (options) {\n this._super(options);\n }),\n _parse: function (val) {\n if (typeof val === \"string\" && val !== \"\") {\n val = window.Globalize && this.options.numberFormat ? Globalize.parseFloat(val, 10, this.options.culture) : +val;\n }\n return val === \"\" || isNaN(val) ? null : val;\n },\n _format: function (value) {\n if (value === \"\") {\n return \"\";\n }\n return window.Globalize && this.options.numberFormat ? Globalize.format(value, this.options.numberFormat, this.options.culture) : value;\n },\n _refresh: function () {\n this.element.attr({\n \"aria-valuemin\": this.options.min,\n \"aria-valuemax\": this.options.max,\n // TODO: what should we do with values that can't be parsed?\n \"aria-valuenow\": this._parse(this.element.val())\n });\n },\n isValid: function () {\n var value = this.value();\n\n // Null is invalid\n if (value === null) {\n return false;\n }\n\n // If value gets adjusted, it's invalid\n return value === this._adjustValue(value);\n },\n // Update the value without triggering change\n _value: function (value, allowAny) {\n var parsed;\n if (value !== \"\") {\n parsed = this._parse(value);\n if (parsed !== null) {\n if (!allowAny) {\n parsed = this._adjustValue(parsed);\n }\n value = this._format(parsed);\n }\n }\n this.element.val(value);\n this._refresh();\n },\n _destroy: function () {\n this.element.prop(\"disabled\", false).removeAttr(\"autocomplete role aria-valuemin aria-valuemax aria-valuenow\");\n this.uiSpinner.replaceWith(this.element);\n },\n stepUp: spinnerModifier(function (steps) {\n this._stepUp(steps);\n }),\n _stepUp: function (steps) {\n if (this._start()) {\n this._spin((steps || 1) * this.options.step);\n this._stop();\n }\n },\n stepDown: spinnerModifier(function (steps) {\n this._stepDown(steps);\n }),\n _stepDown: function (steps) {\n if (this._start()) {\n this._spin((steps || 1) * -this.options.step);\n this._stop();\n }\n },\n pageUp: spinnerModifier(function (pages) {\n this._stepUp((pages || 1) * this.options.page);\n }),\n pageDown: spinnerModifier(function (pages) {\n this._stepDown((pages || 1) * this.options.page);\n }),\n value: function (newVal) {\n if (!arguments.length) {\n return this._parse(this.element.val());\n }\n spinnerModifier(this._value).call(this, newVal);\n },\n widget: function () {\n return this.uiSpinner;\n }\n });\n\n // DEPRECATED\n // TODO: switch return back to widget declaration at top of file when this is removed\n if ($.uiBackCompat === true) {\n // Backcompat for spinner html extension points\n $.widget(\"ui.spinner\", $.ui.spinner, {\n _enhance: function () {\n this.uiSpinner = this.element.attr(\"autocomplete\", \"off\").wrap(this._uiSpinnerHtml()).parent()\n\n // Add buttons\n .append(this._buttonHtml());\n },\n _uiSpinnerHtml: function () {\n return \"<span>\";\n },\n _buttonHtml: function () {\n return \"<a></a><a></a>\";\n }\n });\n }\n var widgetsSpinner = $.ui.spinner;\n\n /*!\n * jQuery UI Tabs 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Tabs\n //>>group: Widgets\n //>>description: Transforms a set of container elements into a tab structure.\n //>>docs: https://api.jqueryui.com/tabs/\n //>>demos: https://jqueryui.com/tabs/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/tabs.css\n //>>css.theme: ../../themes/base/theme.css\n\n $.widget(\"ui.tabs\", {\n version: \"1.14.1\",\n delay: 300,\n options: {\n active: null,\n classes: {\n \"ui-tabs\": \"ui-corner-all\",\n \"ui-tabs-nav\": \"ui-corner-all\",\n \"ui-tabs-panel\": \"ui-corner-bottom\",\n \"ui-tabs-tab\": \"ui-corner-top\"\n },\n collapsible: false,\n event: \"click\",\n heightStyle: \"content\",\n hide: null,\n show: null,\n // Callbacks\n activate: null,\n beforeActivate: null,\n beforeLoad: null,\n load: null\n },\n _isLocal: function () {\n var rhash = /#.*$/;\n return function (anchor) {\n var anchorUrl, locationUrl;\n anchorUrl = anchor.href.replace(rhash, \"\");\n locationUrl = location.href.replace(rhash, \"\");\n\n // Decoding may throw an error if the URL isn't UTF-8 (#9518)\n try {\n anchorUrl = decodeURIComponent(anchorUrl);\n } catch (error) {}\n try {\n locationUrl = decodeURIComponent(locationUrl);\n } catch (error) {}\n return anchor.hash.length > 1 && anchorUrl === locationUrl;\n };\n }(),\n _create: function () {\n var that = this,\n options = this.options;\n this.running = false;\n this._addClass(\"ui-tabs\", \"ui-widget ui-widget-content\");\n this._toggleClass(\"ui-tabs-collapsible\", null, options.collapsible);\n this._processTabs();\n options.active = this._initialActive();\n\n // Take disabling tabs via class attribute from HTML\n // into account and update option properly.\n if (Array.isArray(options.disabled)) {\n options.disabled = $.uniqueSort(options.disabled.concat($.map(this.tabs.filter(\".ui-state-disabled\"), function (li) {\n return that.tabs.index(li);\n }))).sort();\n }\n\n // Check for length avoids error when initializing empty list\n if (this.options.active !== false && this.anchors.length) {\n this.active = this._findActive(options.active);\n } else {\n this.active = $();\n }\n this._refresh();\n if (this.active.length) {\n this.load(options.active);\n }\n },\n _initialActive: function () {\n var active = this.options.active,\n collapsible = this.options.collapsible,\n locationHashDecoded = decodeURIComponent(location.hash.substring(1));\n if (active === null) {\n // check the fragment identifier in the URL\n if (locationHashDecoded) {\n this.tabs.each(function (i, tab) {\n if ($(tab).attr(\"aria-controls\") === locationHashDecoded) {\n active = i;\n return false;\n }\n });\n }\n\n // Check for a tab marked active via a class\n if (active === null) {\n active = this.tabs.index(this.tabs.filter(\".ui-tabs-active\"));\n }\n\n // No active tab, set to false\n if (active === null || active === -1) {\n active = this.tabs.length ? 0 : false;\n }\n }\n\n // Handle numbers: negative, out of range\n if (active !== false) {\n active = this.tabs.index(this.tabs.eq(active));\n if (active === -1) {\n active = collapsible ? false : 0;\n }\n }\n\n // Don't allow collapsible: false and active: false\n if (!collapsible && active === false && this.anchors.length) {\n active = 0;\n }\n return active;\n },\n _getCreateEventData: function () {\n return {\n tab: this.active,\n panel: !this.active.length ? $() : this._getPanelForTab(this.active)\n };\n },\n _tabKeydown: function (event) {\n var focusedTab = $(this.document[0].activeElement).closest(\"li\"),\n selectedIndex = this.tabs.index(focusedTab),\n goingForward = true;\n if (this._handlePageNav(event)) {\n return;\n }\n switch (event.keyCode) {\n case $.ui.keyCode.RIGHT:\n case $.ui.keyCode.DOWN:\n selectedIndex++;\n break;\n case $.ui.keyCode.UP:\n case $.ui.keyCode.LEFT:\n goingForward = false;\n selectedIndex--;\n break;\n case $.ui.keyCode.END:\n selectedIndex = this.anchors.length - 1;\n break;\n case $.ui.keyCode.HOME:\n selectedIndex = 0;\n break;\n case $.ui.keyCode.SPACE:\n // Activate only, no collapsing\n event.preventDefault();\n clearTimeout(this.activating);\n this._activate(selectedIndex);\n return;\n case $.ui.keyCode.ENTER:\n // Toggle (cancel delayed activation, allow collapsing)\n event.preventDefault();\n clearTimeout(this.activating);\n\n // Determine if we should collapse or activate\n this._activate(selectedIndex === this.options.active ? false : selectedIndex);\n return;\n default:\n return;\n }\n\n // Focus the appropriate tab, based on which key was pressed\n event.preventDefault();\n clearTimeout(this.activating);\n selectedIndex = this._focusNextTab(selectedIndex, goingForward);\n\n // Navigating with control/command key will prevent automatic activation\n if (!event.ctrlKey && !event.metaKey) {\n // Update aria-selected immediately so that AT think the tab is already selected.\n // Otherwise AT may confuse the user by stating that they need to activate the tab,\n // but the tab will already be activated by the time the announcement finishes.\n focusedTab.attr(\"aria-selected\", \"false\");\n this.tabs.eq(selectedIndex).attr(\"aria-selected\", \"true\");\n this.activating = this._delay(function () {\n this.option(\"active\", selectedIndex);\n }, this.delay);\n }\n },\n _panelKeydown: function (event) {\n if (this._handlePageNav(event)) {\n return;\n }\n\n // Ctrl+up moves focus to the current tab\n if (event.ctrlKey && event.keyCode === $.ui.keyCode.UP) {\n event.preventDefault();\n this.active.trigger(\"focus\");\n }\n },\n // Alt+page up/down moves focus to the previous/next tab (and activates)\n _handlePageNav: function (event) {\n if (event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP) {\n this._activate(this._focusNextTab(this.options.active - 1, false));\n return true;\n }\n if (event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN) {\n this._activate(this._focusNextTab(this.options.active + 1, true));\n return true;\n }\n },\n _findNextTab: function (index, goingForward) {\n var lastTabIndex = this.tabs.length - 1;\n function constrain() {\n if (index > lastTabIndex) {\n index = 0;\n }\n if (index < 0) {\n index = lastTabIndex;\n }\n return index;\n }\n while ($.inArray(constrain(), this.options.disabled) !== -1) {\n index = goingForward ? index + 1 : index - 1;\n }\n return index;\n },\n _focusNextTab: function (index, goingForward) {\n index = this._findNextTab(index, goingForward);\n this.tabs.eq(index).trigger(\"focus\");\n return index;\n },\n _setOption: function (key, value) {\n if (key === \"active\") {\n // _activate() will handle invalid values and update this.options\n this._activate(value);\n return;\n }\n this._super(key, value);\n if (key === \"collapsible\") {\n this._toggleClass(\"ui-tabs-collapsible\", null, value);\n\n // Setting collapsible: false while collapsed; open first panel\n if (!value && this.options.active === false) {\n this._activate(0);\n }\n }\n if (key === \"event\") {\n this._setupEvents(value);\n }\n if (key === \"heightStyle\") {\n this._setupHeightStyle(value);\n }\n },\n refresh: function () {\n var options = this.options,\n lis = this.tablist.children(\":has(a[href])\");\n\n // Get disabled tabs from class attribute from HTML\n // this will get converted to a boolean if needed in _refresh()\n options.disabled = $.map(lis.filter(\".ui-state-disabled\"), function (tab) {\n return lis.index(tab);\n });\n this._processTabs();\n\n // Was collapsed or no tabs\n if (options.active === false || !this.anchors.length) {\n options.active = false;\n this.active = $();\n\n // was active, but active tab is gone\n } else if (this.active.length && !$.contains(this.tablist[0], this.active[0])) {\n // all remaining tabs are disabled\n if (this.tabs.length === options.disabled.length) {\n options.active = false;\n this.active = $();\n\n // activate previous tab\n } else {\n this._activate(this._findNextTab(Math.max(0, options.active - 1), false));\n }\n\n // was active, active tab still exists\n } else {\n // make sure active index is correct\n options.active = this.tabs.index(this.active);\n }\n this._refresh();\n },\n _refresh: function () {\n this._setOptionDisabled(this.options.disabled);\n this._setupEvents(this.options.event);\n this._setupHeightStyle(this.options.heightStyle);\n this.tabs.not(this.active).attr({\n \"aria-selected\": \"false\",\n \"aria-expanded\": \"false\",\n tabIndex: -1\n });\n this.panels.not(this._getPanelForTab(this.active)).hide().attr({\n \"aria-hidden\": \"true\"\n });\n\n // Make sure one tab is in the tab order\n if (!this.active.length) {\n this.tabs.eq(0).attr(\"tabIndex\", 0);\n } else {\n this.active.attr({\n \"aria-selected\": \"true\",\n \"aria-expanded\": \"true\",\n tabIndex: 0\n });\n this._addClass(this.active, \"ui-tabs-active\", \"ui-state-active\");\n this._getPanelForTab(this.active).show().attr({\n \"aria-hidden\": \"false\"\n });\n }\n },\n _processTabs: function () {\n var that = this,\n prevTabs = this.tabs,\n prevAnchors = this.anchors,\n prevPanels = this.panels;\n this.tablist = this._getList().attr(\"role\", \"tablist\");\n this._addClass(this.tablist, \"ui-tabs-nav\", \"ui-helper-reset ui-helper-clearfix ui-widget-header\");\n\n // Prevent users from focusing disabled tabs via click\n this.tablist.on(\"mousedown\" + this.eventNamespace, \"> li\", function (event) {\n if ($(this).is(\".ui-state-disabled\")) {\n event.preventDefault();\n }\n });\n this.tabs = this.tablist.find(\"> li:has(a[href])\").attr({\n role: \"tab\",\n tabIndex: -1\n });\n this._addClass(this.tabs, \"ui-tabs-tab\", \"ui-state-default\");\n this.anchors = this.tabs.map(function () {\n return $(\"a\", this)[0];\n }).attr({\n tabIndex: -1\n });\n this._addClass(this.anchors, \"ui-tabs-anchor\");\n this.panels = $();\n this.anchors.each(function (i, anchor) {\n var selector,\n panel,\n panelId,\n anchorId = $(anchor).uniqueId().attr(\"id\"),\n tab = $(anchor).closest(\"li\"),\n originalAriaControls = tab.attr(\"aria-controls\");\n\n // Inline tab\n if (that._isLocal(anchor)) {\n selector = decodeURIComponent(anchor.hash);\n panelId = selector.substring(1);\n panel = that.element.find(\"#\" + CSS.escape(panelId));\n\n // remote tab\n } else {\n // If the tab doesn't already have aria-controls,\n // generate an id by using a throw-away element\n panelId = tab.attr(\"aria-controls\") || $({}).uniqueId()[0].id;\n selector = \"#\" + panelId;\n panel = that.element.find(selector);\n if (!panel.length) {\n panel = that._createPanel(panelId);\n panel.insertAfter(that.panels[i - 1] || that.tablist);\n }\n panel.attr(\"aria-live\", \"polite\");\n }\n if (panel.length) {\n that.panels = that.panels.add(panel);\n }\n if (originalAriaControls) {\n tab.data(\"ui-tabs-aria-controls\", originalAriaControls);\n }\n tab.attr({\n \"aria-controls\": panelId,\n \"aria-labelledby\": anchorId\n });\n panel.attr(\"aria-labelledby\", anchorId);\n });\n this.panels.attr(\"role\", \"tabpanel\");\n this._addClass(this.panels, \"ui-tabs-panel\", \"ui-widget-content\");\n\n // Avoid memory leaks (#10056)\n if (prevTabs) {\n this._off(prevTabs.not(this.tabs));\n this._off(prevAnchors.not(this.anchors));\n this._off(prevPanels.not(this.panels));\n }\n },\n // Allow overriding how to find the list for rare usage scenarios (#7715)\n _getList: function () {\n return this.tablist || this.element.find(\"ol, ul\").eq(0);\n },\n _createPanel: function (id) {\n return $(\"<div>\").attr(\"id\", id).data(\"ui-tabs-destroy\", true);\n },\n _setOptionDisabled: function (disabled) {\n var currentItem, li, i;\n if (Array.isArray(disabled)) {\n if (!disabled.length) {\n disabled = false;\n } else if (disabled.length === this.anchors.length) {\n disabled = true;\n }\n }\n\n // Disable tabs\n for (i = 0; li = this.tabs[i]; i++) {\n currentItem = $(li);\n if (disabled === true || $.inArray(i, disabled) !== -1) {\n currentItem.attr(\"aria-disabled\", \"true\");\n this._addClass(currentItem, null, \"ui-state-disabled\");\n } else {\n currentItem.removeAttr(\"aria-disabled\");\n this._removeClass(currentItem, null, \"ui-state-disabled\");\n }\n }\n this.options.disabled = disabled;\n this._toggleClass(this.widget(), this.widgetFullName + \"-disabled\", null, disabled === true);\n },\n _setupEvents: function (event) {\n var events = {};\n if (event) {\n $.each(event.split(\" \"), function (index, eventName) {\n events[eventName] = \"_eventHandler\";\n });\n }\n this._off(this.anchors.add(this.tabs).add(this.panels));\n\n // Always prevent the default action, even when disabled\n this._on(true, this.anchors, {\n click: function (event) {\n event.preventDefault();\n }\n });\n this._on(this.anchors, events);\n this._on(this.tabs, {\n keydown: \"_tabKeydown\"\n });\n this._on(this.panels, {\n keydown: \"_panelKeydown\"\n });\n this._focusable(this.tabs);\n this._hoverable(this.tabs);\n },\n _setupHeightStyle: function (heightStyle) {\n var maxHeight,\n parent = this.element.parent();\n if (heightStyle === \"fill\") {\n maxHeight = parent.height();\n maxHeight -= this.element.outerHeight() - this.element.height();\n this.element.siblings(\":visible\").each(function () {\n var elem = $(this),\n position = elem.css(\"position\");\n if (position === \"absolute\" || position === \"fixed\") {\n return;\n }\n maxHeight -= elem.outerHeight(true);\n });\n this.element.children().not(this.panels).each(function () {\n maxHeight -= $(this).outerHeight(true);\n });\n this.panels.each(function () {\n $(this).height(Math.max(0, maxHeight - $(this).innerHeight() + $(this).height()));\n }).css(\"overflow\", \"auto\");\n } else if (heightStyle === \"auto\") {\n maxHeight = 0;\n this.panels.each(function () {\n maxHeight = Math.max(maxHeight, $(this).height(\"\").height());\n }).height(maxHeight);\n }\n },\n _eventHandler: function (event) {\n var options = this.options,\n active = this.active,\n anchor = $(event.currentTarget),\n tab = anchor.closest(\"li\"),\n clickedIsActive = tab[0] === active[0],\n collapsing = clickedIsActive && options.collapsible,\n toShow = collapsing ? $() : this._getPanelForTab(tab),\n toHide = !active.length ? $() : this._getPanelForTab(active),\n eventData = {\n oldTab: active,\n oldPanel: toHide,\n newTab: collapsing ? $() : tab,\n newPanel: toShow\n };\n event.preventDefault();\n if (tab.hasClass(\"ui-state-disabled\") ||\n // tab is already loading\n tab.hasClass(\"ui-tabs-loading\") ||\n // can't switch durning an animation\n this.running ||\n // click on active header, but not collapsible\n clickedIsActive && !options.collapsible ||\n // allow canceling activation\n this._trigger(\"beforeActivate\", event, eventData) === false) {\n return;\n }\n options.active = collapsing ? false : this.tabs.index(tab);\n this.active = clickedIsActive ? $() : tab;\n if (this.xhr) {\n this.xhr.abort();\n }\n if (!toHide.length && !toShow.length) {\n $.error(\"jQuery UI Tabs: Mismatching fragment identifier.\");\n }\n if (toShow.length) {\n this.load(this.tabs.index(tab), event);\n }\n this._toggle(event, eventData);\n },\n // Handles show/hide for selecting tabs\n _toggle: function (event, eventData) {\n var that = this,\n toShow = eventData.newPanel,\n toHide = eventData.oldPanel;\n this.running = true;\n function complete() {\n that.running = false;\n that._trigger(\"activate\", event, eventData);\n }\n function show() {\n that._addClass(eventData.newTab.closest(\"li\"), \"ui-tabs-active\", \"ui-state-active\");\n if (toShow.length && that.options.show) {\n that._show(toShow, that.options.show, complete);\n } else {\n toShow.show();\n complete();\n }\n }\n\n // Start out by hiding, then showing, then completing\n if (toHide.length && this.options.hide) {\n this._hide(toHide, this.options.hide, function () {\n that._removeClass(eventData.oldTab.closest(\"li\"), \"ui-tabs-active\", \"ui-state-active\");\n show();\n });\n } else {\n this._removeClass(eventData.oldTab.closest(\"li\"), \"ui-tabs-active\", \"ui-state-active\");\n toHide.hide();\n show();\n }\n toHide.attr(\"aria-hidden\", \"true\");\n eventData.oldTab.attr({\n \"aria-selected\": \"false\",\n \"aria-expanded\": \"false\"\n });\n\n // If we're switching tabs, remove the old tab from the tab order.\n // If we're opening from collapsed state, remove the previous tab from the tab order.\n // If we're collapsing, then keep the collapsing tab in the tab order.\n if (toShow.length && toHide.length) {\n eventData.oldTab.attr(\"tabIndex\", -1);\n } else if (toShow.length) {\n this.tabs.filter(function () {\n return $(this).attr(\"tabIndex\") === 0;\n }).attr(\"tabIndex\", -1);\n }\n toShow.attr(\"aria-hidden\", \"false\");\n eventData.newTab.attr({\n \"aria-selected\": \"true\",\n \"aria-expanded\": \"true\",\n tabIndex: 0\n });\n },\n _activate: function (index) {\n var anchor,\n active = this._findActive(index);\n\n // Trying to activate the already active panel\n if (active[0] === this.active[0]) {\n return;\n }\n\n // Trying to collapse, simulate a click on the current active header\n if (!active.length) {\n active = this.active;\n }\n anchor = active.find(\".ui-tabs-anchor\")[0];\n this._eventHandler({\n target: anchor,\n currentTarget: anchor,\n preventDefault: $.noop\n });\n },\n _findActive: function (index) {\n return index === false ? $() : this.tabs.eq(index);\n },\n _getIndex: function (index) {\n // meta-function to give users option to provide a href string instead of a numerical index.\n if (typeof index === \"string\") {\n index = this.anchors.index(this.anchors.filter(\"[href$='\" + CSS.escape(index) + \"']\"));\n }\n return index;\n },\n _destroy: function () {\n if (this.xhr) {\n this.xhr.abort();\n }\n this.tablist.removeAttr(\"role\").off(this.eventNamespace);\n this.anchors.removeAttr(\"role tabIndex\").removeUniqueId();\n this.tabs.add(this.panels).each(function () {\n if ($.data(this, \"ui-tabs-destroy\")) {\n $(this).remove();\n } else {\n $(this).removeAttr(\"role tabIndex \" + \"aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded\");\n }\n });\n this.tabs.each(function () {\n var li = $(this),\n prev = li.data(\"ui-tabs-aria-controls\");\n if (prev) {\n li.attr(\"aria-controls\", prev).removeData(\"ui-tabs-aria-controls\");\n } else {\n li.removeAttr(\"aria-controls\");\n }\n });\n this.panels.show();\n if (this.options.heightStyle !== \"content\") {\n this.panels.css(\"height\", \"\");\n }\n },\n enable: function (index) {\n var disabled = this.options.disabled;\n if (disabled === false) {\n return;\n }\n if (index === undefined) {\n disabled = false;\n } else {\n index = this._getIndex(index);\n if (Array.isArray(disabled)) {\n disabled = $.map(disabled, function (num) {\n return num !== index ? num : null;\n });\n } else {\n disabled = $.map(this.tabs, function (li, num) {\n return num !== index ? num : null;\n });\n }\n }\n this._setOptionDisabled(disabled);\n },\n disable: function (index) {\n var disabled = this.options.disabled;\n if (disabled === true) {\n return;\n }\n if (index === undefined) {\n disabled = true;\n } else {\n index = this._getIndex(index);\n if ($.inArray(index, disabled) !== -1) {\n return;\n }\n if (Array.isArray(disabled)) {\n disabled = $.merge([index], disabled).sort();\n } else {\n disabled = [index];\n }\n }\n this._setOptionDisabled(disabled);\n },\n load: function (index, event) {\n index = this._getIndex(index);\n var that = this,\n tab = this.tabs.eq(index),\n anchor = tab.find(\".ui-tabs-anchor\"),\n panel = this._getPanelForTab(tab),\n eventData = {\n tab: tab,\n panel: panel\n },\n complete = function (jqXHR, status) {\n if (status === \"abort\") {\n that.panels.stop(false, true);\n }\n that._removeClass(tab, \"ui-tabs-loading\");\n panel.removeAttr(\"aria-busy\");\n if (jqXHR === that.xhr) {\n delete that.xhr;\n }\n };\n\n // Not remote\n if (this._isLocal(anchor[0])) {\n return;\n }\n this.xhr = $.ajax(this._ajaxSettings(anchor, event, eventData));\n if (this.xhr.statusText !== \"canceled\") {\n this._addClass(tab, \"ui-tabs-loading\");\n panel.attr(\"aria-busy\", \"true\");\n this.xhr.done(function (response, status, jqXHR) {\n panel.html(response);\n that._trigger(\"load\", event, eventData);\n complete(jqXHR, status);\n }).fail(function (jqXHR, status) {\n complete(jqXHR, status);\n });\n }\n },\n _ajaxSettings: function (anchor, event, eventData) {\n var that = this;\n return {\n url: anchor.attr(\"href\"),\n beforeSend: function (jqXHR, settings) {\n return that._trigger(\"beforeLoad\", event, $.extend({\n jqXHR: jqXHR,\n ajaxSettings: settings\n }, eventData));\n }\n };\n },\n _getPanelForTab: function (tab) {\n var id = $(tab).attr(\"aria-controls\");\n return this.element.find(\"#\" + CSS.escape(id));\n }\n });\n\n // DEPRECATED\n // TODO: Switch return back to widget declaration at top of file when this is removed\n if ($.uiBackCompat === true) {\n // Backcompat for ui-tab class (now ui-tabs-tab)\n $.widget(\"ui.tabs\", $.ui.tabs, {\n _processTabs: function () {\n this._superApply(arguments);\n this._addClass(this.tabs, \"ui-tab\");\n }\n });\n }\n var widgetsTabs = $.ui.tabs;\n\n /*!\n * jQuery UI Tooltip 1.14.1\n * https://jqueryui.com\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * https://jquery.org/license\n */\n\n //>>label: Tooltip\n //>>group: Widgets\n //>>description: Shows additional information for any element on hover or focus.\n //>>docs: https://api.jqueryui.com/tooltip/\n //>>demos: https://jqueryui.com/tooltip/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/tooltip.css\n //>>css.theme: ../../themes/base/theme.css\n\n $.widget(\"ui.tooltip\", {\n version: \"1.14.1\",\n options: {\n classes: {\n \"ui-tooltip\": \"ui-corner-all ui-widget-shadow\"\n },\n content: function () {\n var title = $(this).attr(\"title\");\n\n // Escape title, since we're going from an attribute to raw HTML\n return $(\"<a>\").text(title).html();\n },\n hide: true,\n // Disabled elements have inconsistent behavior across browsers (#8661)\n items: \"[title]:not([disabled])\",\n position: {\n my: \"left top+15\",\n at: \"left bottom\",\n collision: \"flipfit flip\"\n },\n show: true,\n track: false,\n // Callbacks\n close: null,\n open: null\n },\n _addDescribedBy: function (elem, id) {\n var describedby = (elem.attr(\"aria-describedby\") || \"\").split(/\\s+/);\n describedby.push(id);\n elem.data(\"ui-tooltip-id\", id).attr(\"aria-describedby\", String.prototype.trim.call(describedby.join(\" \")));\n },\n _removeDescribedBy: function (elem) {\n var id = elem.data(\"ui-tooltip-id\"),\n describedby = (elem.attr(\"aria-describedby\") || \"\").split(/\\s+/),\n index = $.inArray(id, describedby);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n elem.removeData(\"ui-tooltip-id\");\n describedby = String.prototype.trim.call(describedby.join(\" \"));\n if (describedby) {\n elem.attr(\"aria-describedby\", describedby);\n } else {\n elem.removeAttr(\"aria-describedby\");\n }\n },\n _create: function () {\n this._on({\n mouseover: \"open\",\n focusin: \"open\"\n });\n\n // IDs of generated tooltips, needed for destroy\n this.tooltips = {};\n\n // IDs of parent tooltips where we removed the title attribute\n this.parents = {};\n\n // Append the aria-live region so tooltips announce correctly\n this.liveRegion = $(\"<div>\").attr({\n role: \"log\",\n \"aria-live\": \"assertive\",\n \"aria-relevant\": \"additions\"\n }).appendTo(this.document[0].body);\n this._addClass(this.liveRegion, null, \"ui-helper-hidden-accessible\");\n this.disabledTitles = $([]);\n },\n _setOption: function (key, value) {\n var that = this;\n this._super(key, value);\n if (key === \"content\") {\n $.each(this.tooltips, function (id, tooltipData) {\n that._updateContent(tooltipData.element);\n });\n }\n },\n _setOptionDisabled: function (value) {\n this[value ? \"_disable\" : \"_enable\"]();\n },\n _disable: function () {\n var that = this;\n\n // Close open tooltips\n $.each(this.tooltips, function (id, tooltipData) {\n var event = $.Event(\"blur\");\n event.target = event.currentTarget = tooltipData.element[0];\n that.close(event, true);\n });\n\n // Remove title attributes to prevent native tooltips\n this.disabledTitles = this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function () {\n var element = $(this);\n if (element.is(\"[title]\")) {\n return element.data(\"ui-tooltip-title\", element.attr(\"title\")).removeAttr(\"title\");\n }\n }));\n },\n _enable: function () {\n // restore title attributes\n this.disabledTitles.each(function () {\n var element = $(this);\n if (element.data(\"ui-tooltip-title\")) {\n element.attr(\"title\", element.data(\"ui-tooltip-title\"));\n }\n });\n this.disabledTitles = $([]);\n },\n open: function (event) {\n var that = this,\n target = $(event ? event.target : this.element)\n\n // we need closest here due to mouseover bubbling,\n // but always pointing at the same event target\n .closest(this.options.items);\n\n // No element to show a tooltip for or the tooltip is already open\n if (!target.length || target.data(\"ui-tooltip-id\")) {\n return;\n }\n if (target.attr(\"title\")) {\n target.data(\"ui-tooltip-title\", target.attr(\"title\"));\n }\n target.data(\"ui-tooltip-open\", true);\n\n // Kill parent tooltips, custom or native, for hover\n if (event && event.type === \"mouseover\") {\n target.parents().each(function () {\n var parent = $(this),\n blurEvent;\n if (parent.data(\"ui-tooltip-open\")) {\n blurEvent = $.Event(\"blur\");\n blurEvent.target = blurEvent.currentTarget = this;\n that.close(blurEvent, true);\n }\n if (parent.attr(\"title\")) {\n parent.uniqueId();\n that.parents[this.id] = {\n element: this,\n title: parent.attr(\"title\")\n };\n parent.attr(\"title\", \"\");\n }\n });\n }\n this._registerCloseHandlers(event, target);\n this._updateContent(target, event);\n },\n _updateContent: function (target, event) {\n var content,\n contentOption = this.options.content,\n that = this,\n eventType = event ? event.type : null;\n if (typeof contentOption === \"string\" || contentOption.nodeType || contentOption.jquery) {\n return this._open(event, target, contentOption);\n }\n content = contentOption.call(target[0], function (response) {\n // Ignore async response if tooltip was closed already\n if (!target.data(\"ui-tooltip-open\")) {\n return;\n }\n\n // JQuery creates a special event for focusin when it doesn't\n // exist natively. To improve performance, the native event\n // object is reused and the type is changed. Therefore, we can't\n // rely on the type being correct after the event finished\n // bubbling, so we set it back to the previous value. (#8740)\n if (event) {\n event.type = eventType;\n }\n that._open(event, target, response);\n });\n if (content) {\n this._open(event, target, content);\n }\n },\n _open: function (event, target, content) {\n var tooltipData,\n tooltip,\n delayedShow,\n a11yContent,\n positionOption = $.extend({}, this.options.position);\n if (!content) {\n return;\n }\n\n // Content can be updated multiple times. If the tooltip already\n // exists, then just update the content and bail.\n tooltipData = this._find(target);\n if (tooltipData) {\n tooltipData.tooltip.find(\".ui-tooltip-content\").html(content);\n return;\n }\n\n // If we have a title, clear it to prevent the native tooltip\n // we have to check first to avoid defining a title if none exists\n // (we don't want to cause an element to start matching [title])\n //\n // We use removeAttr only for key events, to allow IE to export the correct\n // accessible attributes. For mouse events, set to empty string to avoid\n // native tooltip showing up (happens only when removing inside mouseover).\n if (target.is(\"[title]\")) {\n if (event && event.type === \"mouseover\") {\n target.attr(\"title\", \"\");\n } else {\n target.removeAttr(\"title\");\n }\n }\n tooltipData = this._tooltip(target);\n tooltip = tooltipData.tooltip;\n this._addDescribedBy(target, tooltip.attr(\"id\"));\n tooltip.find(\".ui-tooltip-content\").html(content);\n\n // Support: Voiceover on OS X, JAWS on IE <= 9\n // JAWS announces deletions even when aria-relevant=\"additions\"\n // Voiceover will sometimes re-read the entire log region's contents from the beginning\n this.liveRegion.children().hide();\n a11yContent = $(\"<div>\").html(tooltip.find(\".ui-tooltip-content\").html());\n a11yContent.removeAttr(\"name\").find(\"[name]\").removeAttr(\"name\");\n a11yContent.removeAttr(\"id\").find(\"[id]\").removeAttr(\"id\");\n a11yContent.appendTo(this.liveRegion);\n function position(event) {\n positionOption.of = event;\n if (tooltip.is(\":hidden\")) {\n return;\n }\n tooltip.position(positionOption);\n }\n if (this.options.track && event && /^mouse/.test(event.type)) {\n this._on(this.document, {\n mousemove: position\n });\n\n // trigger once to override element-relative positioning\n position(event);\n } else {\n tooltip.position($.extend({\n of: target\n }, this.options.position));\n }\n tooltip.hide();\n this._show(tooltip, this.options.show);\n\n // Handle tracking tooltips that are shown with a delay (#8644). As soon\n // as the tooltip is visible, position the tooltip using the most recent\n // event.\n // Adds the check to add the timers only when both delay and track options are set (#14682)\n if (this.options.track && this.options.show && this.options.show.delay) {\n delayedShow = this.delayedShow = setInterval(function () {\n if (tooltip.is(\":visible\")) {\n position(positionOption.of);\n clearInterval(delayedShow);\n }\n }, 13);\n }\n this._trigger(\"open\", event, {\n tooltip: tooltip\n });\n },\n _registerCloseHandlers: function (event, target) {\n var events = {\n keyup: function (event) {\n if (event.keyCode === $.ui.keyCode.ESCAPE) {\n var fakeEvent = $.Event(event);\n fakeEvent.currentTarget = target[0];\n this.close(fakeEvent, true);\n }\n }\n };\n\n // Only bind remove handler for delegated targets. Non-delegated\n // tooltips will handle this in destroy.\n if (target[0] !== this.element[0]) {\n events.remove = function () {\n var targetElement = this._find(target);\n if (targetElement) {\n this._removeTooltip(targetElement.tooltip);\n }\n };\n }\n if (!event || event.type === \"mouseover\") {\n events.mouseleave = \"close\";\n }\n if (!event || event.type === \"focusin\") {\n events.focusout = \"close\";\n }\n this._on(true, target, events);\n },\n close: function (event) {\n var tooltip,\n that = this,\n target = $(event ? event.currentTarget : this.element),\n tooltipData = this._find(target);\n\n // The tooltip may already be closed\n if (!tooltipData) {\n // We set ui-tooltip-open immediately upon open (in open()), but only set the\n // additional data once there's actually content to show (in _open()). So even if the\n // tooltip doesn't have full data, we always remove ui-tooltip-open in case we're in\n // the period between open() and _open().\n target.removeData(\"ui-tooltip-open\");\n return;\n }\n tooltip = tooltipData.tooltip;\n\n // Disabling closes the tooltip, so we need to track when we're closing\n // to avoid an infinite loop in case the tooltip becomes disabled on close\n if (tooltipData.closing) {\n return;\n }\n\n // Clear the interval for delayed tracking tooltips\n clearInterval(this.delayedShow);\n\n // Only set title if we had one before (see comment in _open())\n // If the title attribute has changed since open(), don't restore\n if (target.data(\"ui-tooltip-title\") && !target.attr(\"title\")) {\n target.attr(\"title\", target.data(\"ui-tooltip-title\"));\n }\n this._removeDescribedBy(target);\n tooltipData.hiding = true;\n tooltip.stop(true);\n this._hide(tooltip, this.options.hide, function () {\n that._removeTooltip($(this));\n });\n target.removeData(\"ui-tooltip-open\");\n this._off(target, \"mouseleave focusout keyup\");\n\n // Remove 'remove' binding only on delegated targets\n if (target[0] !== this.element[0]) {\n this._off(target, \"remove\");\n }\n this._off(this.document, \"mousemove\");\n if (event && event.type === \"mouseleave\") {\n $.each(this.parents, function (id, parent) {\n $(parent.element).attr(\"title\", parent.title);\n delete that.parents[id];\n });\n }\n tooltipData.closing = true;\n this._trigger(\"close\", event, {\n tooltip: tooltip\n });\n if (!tooltipData.hiding) {\n tooltipData.closing = false;\n }\n },\n _tooltip: function (element) {\n var tooltip = $(\"<div>\").attr(\"role\", \"tooltip\"),\n content = $(\"<div>\").appendTo(tooltip),\n id = tooltip.uniqueId().attr(\"id\");\n this._addClass(content, \"ui-tooltip-content\");\n this._addClass(tooltip, \"ui-tooltip\", \"ui-widget ui-widget-content\");\n tooltip.appendTo(this._appendTo(element));\n return this.tooltips[id] = {\n element: element,\n tooltip: tooltip\n };\n },\n _find: function (target) {\n var id = target.data(\"ui-tooltip-id\");\n return id ? this.tooltips[id] : null;\n },\n _removeTooltip: function (tooltip) {\n // Clear the interval for delayed tracking tooltips\n clearInterval(this.delayedShow);\n tooltip.remove();\n delete this.tooltips[tooltip.attr(\"id\")];\n },\n _appendTo: function (target) {\n var element = target.closest(\".ui-front, dialog\");\n if (!element.length) {\n element = this.document[0].body;\n }\n return element;\n },\n _destroy: function () {\n var that = this;\n\n // Close open tooltips\n $.each(this.tooltips, function (id, tooltipData) {\n // Delegate to close method to handle common cleanup\n var event = $.Event(\"blur\"),\n element = tooltipData.element;\n event.target = event.currentTarget = element[0];\n that.close(event, true);\n\n // Remove immediately; destroying an open tooltip doesn't use the\n // hide animation\n $(\"#\" + id).remove();\n\n // Restore the title\n if (element.data(\"ui-tooltip-title\")) {\n // If the title attribute has changed since open(), don't restore\n if (!element.attr(\"title\")) {\n element.attr(\"title\", element.data(\"ui-tooltip-title\"));\n }\n element.removeData(\"ui-tooltip-title\");\n }\n });\n this.liveRegion.remove();\n }\n });\n\n // DEPRECATED\n // TODO: Switch return back to widget declaration at top of file when this is removed\n if ($.uiBackCompat === true) {\n // Backcompat for tooltipClass option\n $.widget(\"ui.tooltip\", $.ui.tooltip, {\n options: {\n tooltipClass: null\n },\n _tooltip: function () {\n var tooltipData = this._superApply(arguments);\n if (this.options.tooltipClass) {\n tooltipData.tooltip.addClass(this.options.tooltipClass);\n }\n return tooltipData;\n }\n });\n }\n var widgetsTooltip = $.ui.tooltip;\n});","/*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */\n!function (n) {\n \"function\" == typeof define && define.amd ? define([\"jquery\"], n) : \"object\" == typeof module && module.exports ? module.exports = function (e, t) {\n return void 0 === t && (t = \"undefined\" != typeof window ? require(\"jquery\") : require(\"jquery\")(e)), n(t), t;\n } : n(jQuery);\n}(function (t) {\n var e,\n n,\n p,\n o,\n r,\n h,\n f,\n g,\n m,\n v,\n y,\n s,\n i,\n _,\n a,\n a = ((u = t && t.fn && t.fn.select2 && t.fn.select2.amd ? t.fn.select2.amd : u) && u.requirejs || (u ? n = u : u = {}, g = {}, m = {}, v = {}, y = {}, s = Object.prototype.hasOwnProperty, i = [].slice, _ = /\\.js$/, h = function (e, t) {\n var n,\n s,\n i = c(e),\n o = i[0],\n t = t[1];\n return e = i[1], o && (n = x(o = l(o, t))), o ? e = n && n.normalize ? n.normalize(e, (s = t, function (e) {\n return l(e, s);\n })) : l(e, t) : (o = (i = c(e = l(e, t)))[0], e = i[1], o && (n = x(o))), {\n f: o ? o + \"!\" + e : e,\n n: e,\n pr: o,\n p: n\n };\n }, f = {\n require: function (e) {\n return w(e);\n },\n exports: function (e) {\n var t = g[e];\n return void 0 !== t ? t : g[e] = {};\n },\n module: function (e) {\n return {\n id: e,\n uri: \"\",\n exports: g[e],\n config: (t = e, function () {\n return v && v.config && v.config[t] || {};\n })\n };\n var t;\n }\n }, o = function (e, t, n, s) {\n var i,\n o,\n r,\n a,\n l,\n c = [],\n u = typeof n,\n d = A(s = s || e);\n if (\"undefined\" == u || \"function\" == u) {\n for (t = !t.length && n.length ? [\"require\", \"exports\", \"module\"] : t, a = 0; a < t.length; a += 1) if (\"require\" === (o = (r = h(t[a], d)).f)) c[a] = f.require(e);else if (\"exports\" === o) c[a] = f.exports(e), l = !0;else if (\"module\" === o) i = c[a] = f.module(e);else if (b(g, o) || b(m, o) || b(y, o)) c[a] = x(o);else {\n if (!r.p) throw new Error(e + \" missing \" + o);\n r.p.load(r.n, w(s, !0), function (t) {\n return function (e) {\n g[t] = e;\n };\n }(o), {}), c[a] = g[o];\n }\n u = n ? n.apply(g[e], c) : void 0, e && (i && i.exports !== p && i.exports !== g[e] ? g[e] = i.exports : u === p && l || (g[e] = u));\n } else e && (g[e] = n);\n }, e = n = r = function (e, t, n, s, i) {\n if (\"string\" == typeof e) return f[e] ? f[e](t) : x(h(e, A(t)).f);\n if (!e.splice) {\n if ((v = e).deps && r(v.deps, v.callback), !t) return;\n t.splice ? (e = t, t = n, n = null) : e = p;\n }\n return t = t || function () {}, \"function\" == typeof n && (n = s, s = i), s ? o(p, e, t, n) : setTimeout(function () {\n o(p, e, t, n);\n }, 4), r;\n }, r.config = function (e) {\n return r(e);\n }, e._defined = g, (a = function (e, t, n) {\n if (\"string\" != typeof e) throw new Error(\"See almond README: incorrect module build, no module name\");\n t.splice || (n = t, t = []), b(g, e) || b(m, e) || (m[e] = [e, t, n]);\n }).amd = {\n jQuery: !0\n }, u.requirejs = e, u.require = n, u.define = a), u.define(\"almond\", function () {}), u.define(\"jquery\", [], function () {\n var e = t || $;\n return null == e && console && console.error && console.error(\"Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page.\"), e;\n }), u.define(\"select2/utils\", [\"jquery\"], function (o) {\n var s = {};\n function c(e) {\n var t,\n n = e.prototype,\n s = [];\n for (t in n) \"function\" == typeof n[t] && \"constructor\" !== t && s.push(t);\n return s;\n }\n s.Extend = function (e, t) {\n var n,\n s = {}.hasOwnProperty;\n function i() {\n this.constructor = e;\n }\n for (n in t) s.call(t, n) && (e[n] = t[n]);\n return i.prototype = t.prototype, e.prototype = new i(), e.__super__ = t.prototype, e;\n }, s.Decorate = function (s, i) {\n var e = c(i),\n t = c(s);\n function o() {\n var e = Array.prototype.unshift,\n t = i.prototype.constructor.length,\n n = s.prototype.constructor;\n 0 < t && (e.call(arguments, s.prototype.constructor), n = i.prototype.constructor), n.apply(this, arguments);\n }\n i.displayName = s.displayName, o.prototype = new function () {\n this.constructor = o;\n }();\n for (var n = 0; n < t.length; n++) {\n var r = t[n];\n o.prototype[r] = s.prototype[r];\n }\n for (var a = 0; a < e.length; a++) {\n var l = e[a];\n o.prototype[l] = function (e) {\n var t = function () {};\n e in o.prototype && (t = o.prototype[e]);\n var n = i.prototype[e];\n return function () {\n return Array.prototype.unshift.call(arguments, t), n.apply(this, arguments);\n };\n }(l);\n }\n return o;\n };\n function e() {\n this.listeners = {};\n }\n e.prototype.on = function (e, t) {\n this.listeners = this.listeners || {}, e in this.listeners ? this.listeners[e].push(t) : this.listeners[e] = [t];\n }, e.prototype.trigger = function (e) {\n var t = Array.prototype.slice,\n n = t.call(arguments, 1);\n this.listeners = this.listeners || {}, 0 === (n = null == n ? [] : n).length && n.push({}), (n[0]._type = e) in this.listeners && this.invoke(this.listeners[e], t.call(arguments, 1)), \"*\" in this.listeners && this.invoke(this.listeners[\"*\"], arguments);\n }, e.prototype.invoke = function (e, t) {\n for (var n = 0, s = e.length; n < s; n++) e[n].apply(this, t);\n }, s.Observable = e, s.generateChars = function (e) {\n for (var t = \"\", n = 0; n < e; n++) t += Math.floor(36 * Math.random()).toString(36);\n return t;\n }, s.bind = function (e, t) {\n return function () {\n e.apply(t, arguments);\n };\n }, s._convertData = function (e) {\n for (var t in e) {\n var n = t.split(\"-\"),\n s = e;\n if (1 !== n.length) {\n for (var i = 0; i < n.length; i++) {\n var o = n[i];\n (o = o.substring(0, 1).toLowerCase() + o.substring(1)) in s || (s[o] = {}), i == n.length - 1 && (s[o] = e[t]), s = s[o];\n }\n delete e[t];\n }\n }\n return e;\n }, s.hasScroll = function (e, t) {\n var n = o(t),\n s = t.style.overflowX,\n i = t.style.overflowY;\n return (s !== i || \"hidden\" !== i && \"visible\" !== i) && (\"scroll\" === s || \"scroll\" === i || n.innerHeight() < t.scrollHeight || n.innerWidth() < t.scrollWidth);\n }, s.escapeMarkup = function (e) {\n var t = {\n \"\\\\\": \"\\",\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\n \"/\": \"/\"\n };\n return \"string\" != typeof e ? e : String(e).replace(/[&<>\"'\\/\\\\]/g, function (e) {\n return t[e];\n });\n }, s.__cache = {};\n var n = 0;\n return s.GetUniqueElementId = function (e) {\n var t = e.getAttribute(\"data-select2-id\");\n return null != t || (t = e.id ? \"select2-data-\" + e.id : \"select2-data-\" + (++n).toString() + \"-\" + s.generateChars(4), e.setAttribute(\"data-select2-id\", t)), t;\n }, s.StoreData = function (e, t, n) {\n e = s.GetUniqueElementId(e);\n s.__cache[e] || (s.__cache[e] = {}), s.__cache[e][t] = n;\n }, s.GetData = function (e, t) {\n var n = s.GetUniqueElementId(e);\n return t ? s.__cache[n] && null != s.__cache[n][t] ? s.__cache[n][t] : o(e).data(t) : s.__cache[n];\n }, s.RemoveData = function (e) {\n var t = s.GetUniqueElementId(e);\n null != s.__cache[t] && delete s.__cache[t], e.removeAttribute(\"data-select2-id\");\n }, s.copyNonInternalCssClasses = function (e, t) {\n var n = (n = e.getAttribute(\"class\").trim().split(/\\s+/)).filter(function (e) {\n return 0 === e.indexOf(\"select2-\");\n }),\n t = (t = t.getAttribute(\"class\").trim().split(/\\s+/)).filter(function (e) {\n return 0 !== e.indexOf(\"select2-\");\n }),\n t = n.concat(t);\n e.setAttribute(\"class\", t.join(\" \"));\n }, s;\n }), u.define(\"select2/results\", [\"jquery\", \"./utils\"], function (d, p) {\n function s(e, t, n) {\n this.$element = e, this.data = n, this.options = t, s.__super__.constructor.call(this);\n }\n return p.Extend(s, p.Observable), s.prototype.render = function () {\n var e = d('<ul class=\"select2-results__options\" role=\"listbox\"></ul>');\n return this.options.get(\"multiple\") && e.attr(\"aria-multiselectable\", \"true\"), this.$results = e;\n }, s.prototype.clear = function () {\n this.$results.empty();\n }, s.prototype.displayMessage = function (e) {\n var t = this.options.get(\"escapeMarkup\");\n this.clear(), this.hideLoading();\n var n = d('<li role=\"alert\" aria-live=\"assertive\" class=\"select2-results__option\"></li>'),\n s = this.options.get(\"translations\").get(e.message);\n n.append(t(s(e.args))), n[0].className += \" select2-results__message\", this.$results.append(n);\n }, s.prototype.hideMessages = function () {\n this.$results.find(\".select2-results__message\").remove();\n }, s.prototype.append = function (e) {\n this.hideLoading();\n var t = [];\n if (null != e.results && 0 !== e.results.length) {\n e.results = this.sort(e.results);\n for (var n = 0; n < e.results.length; n++) {\n var s = e.results[n],\n s = this.option(s);\n t.push(s);\n }\n this.$results.append(t);\n } else 0 === this.$results.children().length && this.trigger(\"results:message\", {\n message: \"noResults\"\n });\n }, s.prototype.position = function (e, t) {\n t.find(\".select2-results\").append(e);\n }, s.prototype.sort = function (e) {\n return this.options.get(\"sorter\")(e);\n }, s.prototype.highlightFirstItem = function () {\n var e = this.$results.find(\".select2-results__option--selectable\"),\n t = e.filter(\".select2-results__option--selected\");\n (0 < t.length ? t : e).first().trigger(\"mouseenter\"), this.ensureHighlightVisible();\n }, s.prototype.setClasses = function () {\n var t = this;\n this.data.current(function (e) {\n var s = e.map(function (e) {\n return e.id.toString();\n });\n t.$results.find(\".select2-results__option--selectable\").each(function () {\n var e = d(this),\n t = p.GetData(this, \"data\"),\n n = \"\" + t.id;\n null != t.element && t.element.selected || null == t.element && -1 < s.indexOf(n) ? (this.classList.add(\"select2-results__option--selected\"), e.attr(\"aria-selected\", \"true\")) : (this.classList.remove(\"select2-results__option--selected\"), e.attr(\"aria-selected\", \"false\"));\n });\n });\n }, s.prototype.showLoading = function (e) {\n this.hideLoading();\n e = {\n disabled: !0,\n loading: !0,\n text: this.options.get(\"translations\").get(\"searching\")(e)\n }, e = this.option(e);\n e.className += \" loading-results\", this.$results.prepend(e);\n }, s.prototype.hideLoading = function () {\n this.$results.find(\".loading-results\").remove();\n }, s.prototype.option = function (e) {\n var t = document.createElement(\"li\");\n t.classList.add(\"select2-results__option\"), t.classList.add(\"select2-results__option--selectable\");\n var n,\n s = {\n role: \"option\"\n },\n i = window.Element.prototype.matches || window.Element.prototype.msMatchesSelector || window.Element.prototype.webkitMatchesSelector;\n for (n in (null != e.element && i.call(e.element, \":disabled\") || null == e.element && e.disabled) && (s[\"aria-disabled\"] = \"true\", t.classList.remove(\"select2-results__option--selectable\"), t.classList.add(\"select2-results__option--disabled\")), null == e.id && t.classList.remove(\"select2-results__option--selectable\"), null != e._resultId && (t.id = e._resultId), e.title && (t.title = e.title), e.children && (s.role = \"group\", s[\"aria-label\"] = e.text, t.classList.remove(\"select2-results__option--selectable\"), t.classList.add(\"select2-results__option--group\")), s) {\n var o = s[n];\n t.setAttribute(n, o);\n }\n if (e.children) {\n var r = d(t),\n a = document.createElement(\"strong\");\n a.className = \"select2-results__group\", this.template(e, a);\n for (var l = [], c = 0; c < e.children.length; c++) {\n var u = e.children[c],\n u = this.option(u);\n l.push(u);\n }\n i = d(\"<ul></ul>\", {\n class: \"select2-results__options select2-results__options--nested\",\n role: \"none\"\n });\n i.append(l), r.append(a), r.append(i);\n } else this.template(e, t);\n return p.StoreData(t, \"data\", e), t;\n }, s.prototype.bind = function (t, e) {\n var i = this,\n n = t.id + \"-results\";\n this.$results.attr(\"id\", n), t.on(\"results:all\", function (e) {\n i.clear(), i.append(e.data), t.isOpen() && (i.setClasses(), i.highlightFirstItem());\n }), t.on(\"results:append\", function (e) {\n i.append(e.data), t.isOpen() && i.setClasses();\n }), t.on(\"query\", function (e) {\n i.hideMessages(), i.showLoading(e);\n }), t.on(\"select\", function () {\n t.isOpen() && (i.setClasses(), i.options.get(\"scrollAfterSelect\") && i.highlightFirstItem());\n }), t.on(\"unselect\", function () {\n t.isOpen() && (i.setClasses(), i.options.get(\"scrollAfterSelect\") && i.highlightFirstItem());\n }), t.on(\"open\", function () {\n i.$results.attr(\"aria-expanded\", \"true\"), i.$results.attr(\"aria-hidden\", \"false\"), i.setClasses(), i.ensureHighlightVisible();\n }), t.on(\"close\", function () {\n i.$results.attr(\"aria-expanded\", \"false\"), i.$results.attr(\"aria-hidden\", \"true\"), i.$results.removeAttr(\"aria-activedescendant\");\n }), t.on(\"results:toggle\", function () {\n var e = i.getHighlightedResults();\n 0 !== e.length && e.trigger(\"mouseup\");\n }), t.on(\"results:select\", function () {\n var e,\n t = i.getHighlightedResults();\n 0 !== t.length && (e = p.GetData(t[0], \"data\"), t.hasClass(\"select2-results__option--selected\") ? i.trigger(\"close\", {}) : i.trigger(\"select\", {\n data: e\n }));\n }), t.on(\"results:previous\", function () {\n var e,\n t = i.getHighlightedResults(),\n n = i.$results.find(\".select2-results__option--selectable\"),\n s = n.index(t);\n s <= 0 || (e = s - 1, 0 === t.length && (e = 0), (s = n.eq(e)).trigger(\"mouseenter\"), t = i.$results.offset().top, n = s.offset().top, s = i.$results.scrollTop() + (n - t), 0 === e ? i.$results.scrollTop(0) : n - t < 0 && i.$results.scrollTop(s));\n }), t.on(\"results:next\", function () {\n var e,\n t = i.getHighlightedResults(),\n n = i.$results.find(\".select2-results__option--selectable\"),\n s = n.index(t) + 1;\n s >= n.length || ((e = n.eq(s)).trigger(\"mouseenter\"), t = i.$results.offset().top + i.$results.outerHeight(!1), n = e.offset().top + e.outerHeight(!1), e = i.$results.scrollTop() + n - t, 0 === s ? i.$results.scrollTop(0) : t < n && i.$results.scrollTop(e));\n }), t.on(\"results:focus\", function (e) {\n e.element[0].classList.add(\"select2-results__option--highlighted\"), e.element[0].setAttribute(\"aria-selected\", \"true\");\n }), t.on(\"results:message\", function (e) {\n i.displayMessage(e);\n }), d.fn.mousewheel && this.$results.on(\"mousewheel\", function (e) {\n var t = i.$results.scrollTop(),\n n = i.$results.get(0).scrollHeight - t + e.deltaY,\n t = 0 < e.deltaY && t - e.deltaY <= 0,\n n = e.deltaY < 0 && n <= i.$results.height();\n t ? (i.$results.scrollTop(0), e.preventDefault(), e.stopPropagation()) : n && (i.$results.scrollTop(i.$results.get(0).scrollHeight - i.$results.height()), e.preventDefault(), e.stopPropagation());\n }), this.$results.on(\"mouseup\", \".select2-results__option--selectable\", function (e) {\n var t = d(this),\n n = p.GetData(this, \"data\");\n t.hasClass(\"select2-results__option--selected\") ? i.options.get(\"multiple\") ? i.trigger(\"unselect\", {\n originalEvent: e,\n data: n\n }) : i.trigger(\"close\", {}) : i.trigger(\"select\", {\n originalEvent: e,\n data: n\n });\n }), this.$results.on(\"mouseenter\", \".select2-results__option--selectable\", function (e) {\n var t = p.GetData(this, \"data\");\n i.getHighlightedResults().removeClass(\"select2-results__option--highlighted\").attr(\"aria-selected\", \"false\"), i.trigger(\"results:focus\", {\n data: t,\n element: d(this)\n });\n });\n }, s.prototype.getHighlightedResults = function () {\n return this.$results.find(\".select2-results__option--highlighted\");\n }, s.prototype.destroy = function () {\n this.$results.remove();\n }, s.prototype.ensureHighlightVisible = function () {\n var e,\n t,\n n,\n s,\n i = this.getHighlightedResults();\n 0 !== i.length && (e = this.$results.find(\".select2-results__option--selectable\").index(i), s = this.$results.offset().top, t = i.offset().top, n = this.$results.scrollTop() + (t - s), s = t - s, n -= 2 * i.outerHeight(!1), e <= 2 ? this.$results.scrollTop(0) : (s > this.$results.outerHeight() || s < 0) && this.$results.scrollTop(n));\n }, s.prototype.template = function (e, t) {\n var n = this.options.get(\"templateResult\"),\n s = this.options.get(\"escapeMarkup\"),\n e = n(e, t);\n null == e ? t.style.display = \"none\" : \"string\" == typeof e ? t.innerHTML = s(e) : d(t).append(e);\n }, s;\n }), u.define(\"select2/keys\", [], function () {\n return {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n };\n }), u.define(\"select2/selection/base\", [\"jquery\", \"../utils\", \"../keys\"], function (n, s, i) {\n function o(e, t) {\n this.$element = e, this.options = t, o.__super__.constructor.call(this);\n }\n return s.Extend(o, s.Observable), o.prototype.render = function () {\n var e = n('<span class=\"select2-selection\" role=\"combobox\" aria-haspopup=\"true\" aria-expanded=\"false\"></span>');\n return this._tabindex = 0, null != s.GetData(this.$element[0], \"old-tabindex\") ? this._tabindex = s.GetData(this.$element[0], \"old-tabindex\") : null != this.$element.attr(\"tabindex\") && (this._tabindex = this.$element.attr(\"tabindex\")), e.attr(\"title\", this.$element.attr(\"title\")), e.attr(\"tabindex\", this._tabindex), e.attr(\"aria-disabled\", \"false\"), this.$selection = e;\n }, o.prototype.bind = function (e, t) {\n var n = this,\n s = e.id + \"-results\";\n this.container = e, this.$selection.on(\"focus\", function (e) {\n n.trigger(\"focus\", e);\n }), this.$selection.on(\"blur\", function (e) {\n n._handleBlur(e);\n }), this.$selection.on(\"keydown\", function (e) {\n n.trigger(\"keypress\", e), e.which === i.SPACE && e.preventDefault();\n }), e.on(\"results:focus\", function (e) {\n n.$selection.attr(\"aria-activedescendant\", e.data._resultId);\n }), e.on(\"selection:update\", function (e) {\n n.update(e.data);\n }), e.on(\"open\", function () {\n n.$selection.attr(\"aria-expanded\", \"true\"), n.$selection.attr(\"aria-owns\", s), n._attachCloseHandler(e);\n }), e.on(\"close\", function () {\n n.$selection.attr(\"aria-expanded\", \"false\"), n.$selection.removeAttr(\"aria-activedescendant\"), n.$selection.removeAttr(\"aria-owns\"), n.$selection.trigger(\"focus\"), n._detachCloseHandler(e);\n }), e.on(\"enable\", function () {\n n.$selection.attr(\"tabindex\", n._tabindex), n.$selection.attr(\"aria-disabled\", \"false\");\n }), e.on(\"disable\", function () {\n n.$selection.attr(\"tabindex\", \"-1\"), n.$selection.attr(\"aria-disabled\", \"true\");\n });\n }, o.prototype._handleBlur = function (e) {\n var t = this;\n window.setTimeout(function () {\n document.activeElement == t.$selection[0] || n.contains(t.$selection[0], document.activeElement) || t.trigger(\"blur\", e);\n }, 1);\n }, o.prototype._attachCloseHandler = function (e) {\n n(document.body).on(\"mousedown.select2.\" + e.id, function (e) {\n var t = n(e.target).closest(\".select2\");\n n(\".select2.select2-container--open\").each(function () {\n this != t[0] && s.GetData(this, \"element\").select2(\"close\");\n });\n });\n }, o.prototype._detachCloseHandler = function (e) {\n n(document.body).off(\"mousedown.select2.\" + e.id);\n }, o.prototype.position = function (e, t) {\n t.find(\".selection\").append(e);\n }, o.prototype.destroy = function () {\n this._detachCloseHandler(this.container);\n }, o.prototype.update = function (e) {\n throw new Error(\"The `update` method must be defined in child classes.\");\n }, o.prototype.isEnabled = function () {\n return !this.isDisabled();\n }, o.prototype.isDisabled = function () {\n return this.options.get(\"disabled\");\n }, o;\n }), u.define(\"select2/selection/single\", [\"jquery\", \"./base\", \"../utils\", \"../keys\"], function (e, t, n, s) {\n function i() {\n i.__super__.constructor.apply(this, arguments);\n }\n return n.Extend(i, t), i.prototype.render = function () {\n var e = i.__super__.render.call(this);\n return e[0].classList.add(\"select2-selection--single\"), e.html('<span class=\"select2-selection__rendered\"></span><span class=\"select2-selection__arrow\" role=\"presentation\"><b role=\"presentation\"></b></span>'), e;\n }, i.prototype.bind = function (t, e) {\n var n = this;\n i.__super__.bind.apply(this, arguments);\n var s = t.id + \"-container\";\n this.$selection.find(\".select2-selection__rendered\").attr(\"id\", s).attr(\"role\", \"textbox\").attr(\"aria-readonly\", \"true\"), this.$selection.attr(\"aria-labelledby\", s), this.$selection.attr(\"aria-controls\", s), this.$selection.on(\"mousedown\", function (e) {\n 1 === e.which && n.trigger(\"toggle\", {\n originalEvent: e\n });\n }), this.$selection.on(\"focus\", function (e) {}), this.$selection.on(\"blur\", function (e) {}), t.on(\"focus\", function (e) {\n t.isOpen() || n.$selection.trigger(\"focus\");\n });\n }, i.prototype.clear = function () {\n var e = this.$selection.find(\".select2-selection__rendered\");\n e.empty(), e.removeAttr(\"title\");\n }, i.prototype.display = function (e, t) {\n var n = this.options.get(\"templateSelection\");\n return this.options.get(\"escapeMarkup\")(n(e, t));\n }, i.prototype.selectionContainer = function () {\n return e(\"<span></span>\");\n }, i.prototype.update = function (e) {\n var t, n;\n 0 !== e.length ? (n = e[0], t = this.$selection.find(\".select2-selection__rendered\"), e = this.display(n, t), t.empty().append(e), (n = n.title || n.text) ? t.attr(\"title\", n) : t.removeAttr(\"title\")) : this.clear();\n }, i;\n }), u.define(\"select2/selection/multiple\", [\"jquery\", \"./base\", \"../utils\"], function (i, e, c) {\n function o(e, t) {\n o.__super__.constructor.apply(this, arguments);\n }\n return c.Extend(o, e), o.prototype.render = function () {\n var e = o.__super__.render.call(this);\n return e[0].classList.add(\"select2-selection--multiple\"), e.html('<ul class=\"select2-selection__rendered\"></ul>'), e;\n }, o.prototype.bind = function (e, t) {\n var n = this;\n o.__super__.bind.apply(this, arguments);\n var s = e.id + \"-container\";\n this.$selection.find(\".select2-selection__rendered\").attr(\"id\", s), this.$selection.on(\"click\", function (e) {\n n.trigger(\"toggle\", {\n originalEvent: e\n });\n }), this.$selection.on(\"click\", \".select2-selection__choice__remove\", function (e) {\n var t;\n n.isDisabled() || (t = i(this).parent(), t = c.GetData(t[0], \"data\"), n.trigger(\"unselect\", {\n originalEvent: e,\n data: t\n }));\n }), this.$selection.on(\"keydown\", \".select2-selection__choice__remove\", function (e) {\n n.isDisabled() || e.stopPropagation();\n });\n }, o.prototype.clear = function () {\n var e = this.$selection.find(\".select2-selection__rendered\");\n e.empty(), e.removeAttr(\"title\");\n }, o.prototype.display = function (e, t) {\n var n = this.options.get(\"templateSelection\");\n return this.options.get(\"escapeMarkup\")(n(e, t));\n }, o.prototype.selectionContainer = function () {\n return i('<li class=\"select2-selection__choice\"><button type=\"button\" class=\"select2-selection__choice__remove\" tabindex=\"-1\"><span aria-hidden=\"true\">×</span></button><span class=\"select2-selection__choice__display\"></span></li>');\n }, o.prototype.update = function (e) {\n if (this.clear(), 0 !== e.length) {\n for (var t = [], n = this.$selection.find(\".select2-selection__rendered\").attr(\"id\") + \"-choice-\", s = 0; s < e.length; s++) {\n var i = e[s],\n o = this.selectionContainer(),\n r = this.display(i, o),\n a = n + c.generateChars(4) + \"-\";\n i.id ? a += i.id : a += c.generateChars(4), o.find(\".select2-selection__choice__display\").append(r).attr(\"id\", a);\n var l = i.title || i.text;\n l && o.attr(\"title\", l);\n r = this.options.get(\"translations\").get(\"removeItem\"), l = o.find(\".select2-selection__choice__remove\");\n l.attr(\"title\", r()), l.attr(\"aria-label\", r()), l.attr(\"aria-describedby\", a), c.StoreData(o[0], \"data\", i), t.push(o);\n }\n this.$selection.find(\".select2-selection__rendered\").append(t);\n }\n }, o;\n }), u.define(\"select2/selection/placeholder\", [], function () {\n function e(e, t, n) {\n this.placeholder = this.normalizePlaceholder(n.get(\"placeholder\")), e.call(this, t, n);\n }\n return e.prototype.normalizePlaceholder = function (e, t) {\n return t = \"string\" == typeof t ? {\n id: \"\",\n text: t\n } : t;\n }, e.prototype.createPlaceholder = function (e, t) {\n var n = this.selectionContainer();\n n.html(this.display(t)), n[0].classList.add(\"select2-selection__placeholder\"), n[0].classList.remove(\"select2-selection__choice\");\n t = t.title || t.text || n.text();\n return this.$selection.find(\".select2-selection__rendered\").attr(\"title\", t), n;\n }, e.prototype.update = function (e, t) {\n var n = 1 == t.length && t[0].id != this.placeholder.id;\n if (1 < t.length || n) return e.call(this, t);\n this.clear();\n t = this.createPlaceholder(this.placeholder);\n this.$selection.find(\".select2-selection__rendered\").append(t);\n }, e;\n }), u.define(\"select2/selection/allowClear\", [\"jquery\", \"../keys\", \"../utils\"], function (i, s, a) {\n function e() {}\n return e.prototype.bind = function (e, t, n) {\n var s = this;\n e.call(this, t, n), null == this.placeholder && this.options.get(\"debug\") && window.console && console.error && console.error(\"Select2: The `allowClear` option should be used in combination with the `placeholder` option.\"), this.$selection.on(\"mousedown\", \".select2-selection__clear\", function (e) {\n s._handleClear(e);\n }), t.on(\"keypress\", function (e) {\n s._handleKeyboardClear(e, t);\n });\n }, e.prototype._handleClear = function (e, t) {\n if (!this.isDisabled()) {\n var n = this.$selection.find(\".select2-selection__clear\");\n if (0 !== n.length) {\n t.stopPropagation();\n var s = a.GetData(n[0], \"data\"),\n i = this.$element.val();\n this.$element.val(this.placeholder.id);\n var o = {\n data: s\n };\n if (this.trigger(\"clear\", o), o.prevented) this.$element.val(i);else {\n for (var r = 0; r < s.length; r++) if (o = {\n data: s[r]\n }, this.trigger(\"unselect\", o), o.prevented) return void this.$element.val(i);\n this.$element.trigger(\"input\").trigger(\"change\"), this.trigger(\"toggle\", {});\n }\n }\n }\n }, e.prototype._handleKeyboardClear = function (e, t, n) {\n n.isOpen() || t.which != s.DELETE && t.which != s.BACKSPACE || this._handleClear(t);\n }, e.prototype.update = function (e, t) {\n var n, s;\n e.call(this, t), this.$selection.find(\".select2-selection__clear\").remove(), this.$selection[0].classList.remove(\"select2-selection--clearable\"), 0 < this.$selection.find(\".select2-selection__placeholder\").length || 0 === t.length || (n = this.$selection.find(\".select2-selection__rendered\").attr(\"id\"), s = this.options.get(\"translations\").get(\"removeAllItems\"), (e = i('<button type=\"button\" class=\"select2-selection__clear\" tabindex=\"-1\"><span aria-hidden=\"true\">×</span></button>')).attr(\"title\", s()), e.attr(\"aria-label\", s()), e.attr(\"aria-describedby\", n), a.StoreData(e[0], \"data\", t), this.$selection.prepend(e), this.$selection[0].classList.add(\"select2-selection--clearable\"));\n }, e;\n }), u.define(\"select2/selection/search\", [\"jquery\", \"../utils\", \"../keys\"], function (s, a, l) {\n function e(e, t, n) {\n e.call(this, t, n);\n }\n return e.prototype.render = function (e) {\n var t = this.options.get(\"translations\").get(\"search\"),\n n = s('<span class=\"select2-search select2-search--inline\"><textarea class=\"select2-search__field\" type=\"search\" tabindex=\"-1\" autocorrect=\"off\" autocapitalize=\"none\" spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" ></textarea></span>');\n this.$searchContainer = n, this.$search = n.find(\"textarea\"), this.$search.prop(\"autocomplete\", this.options.get(\"autocomplete\")), this.$search.attr(\"aria-label\", t());\n e = e.call(this);\n return this._transferTabIndex(), e.append(this.$searchContainer), e;\n }, e.prototype.bind = function (e, t, n) {\n var s = this,\n i = t.id + \"-results\",\n o = t.id + \"-container\";\n e.call(this, t, n), s.$search.attr(\"aria-describedby\", o), t.on(\"open\", function () {\n s.$search.attr(\"aria-controls\", i), s.$search.trigger(\"focus\");\n }), t.on(\"close\", function () {\n s.$search.val(\"\"), s.resizeSearch(), s.$search.removeAttr(\"aria-controls\"), s.$search.removeAttr(\"aria-activedescendant\"), s.$search.trigger(\"focus\");\n }), t.on(\"enable\", function () {\n s.$search.prop(\"disabled\", !1), s._transferTabIndex();\n }), t.on(\"disable\", function () {\n s.$search.prop(\"disabled\", !0);\n }), t.on(\"focus\", function (e) {\n s.$search.trigger(\"focus\");\n }), t.on(\"results:focus\", function (e) {\n e.data._resultId ? s.$search.attr(\"aria-activedescendant\", e.data._resultId) : s.$search.removeAttr(\"aria-activedescendant\");\n }), this.$selection.on(\"focusin\", \".select2-search--inline\", function (e) {\n s.trigger(\"focus\", e);\n }), this.$selection.on(\"focusout\", \".select2-search--inline\", function (e) {\n s._handleBlur(e);\n }), this.$selection.on(\"keydown\", \".select2-search--inline\", function (e) {\n var t;\n e.stopPropagation(), s.trigger(\"keypress\", e), s._keyUpPrevented = e.isDefaultPrevented(), e.which !== l.BACKSPACE || \"\" !== s.$search.val() || 0 < (t = s.$selection.find(\".select2-selection__choice\").last()).length && (t = a.GetData(t[0], \"data\"), s.searchRemoveChoice(t), e.preventDefault());\n }), this.$selection.on(\"click\", \".select2-search--inline\", function (e) {\n s.$search.val() && e.stopPropagation();\n });\n var t = document.documentMode,\n r = t && t <= 11;\n this.$selection.on(\"input.searchcheck\", \".select2-search--inline\", function (e) {\n r ? s.$selection.off(\"input.search input.searchcheck\") : s.$selection.off(\"keyup.search\");\n }), this.$selection.on(\"keyup.search input.search\", \".select2-search--inline\", function (e) {\n var t;\n r && \"input\" === e.type ? s.$selection.off(\"input.search input.searchcheck\") : (t = e.which) != l.SHIFT && t != l.CTRL && t != l.ALT && t != l.TAB && s.handleSearch(e);\n });\n }, e.prototype._transferTabIndex = function (e) {\n this.$search.attr(\"tabindex\", this.$selection.attr(\"tabindex\")), this.$selection.attr(\"tabindex\", \"-1\");\n }, e.prototype.createPlaceholder = function (e, t) {\n this.$search.attr(\"placeholder\", t.text);\n }, e.prototype.update = function (e, t) {\n var n = this.$search[0] == document.activeElement;\n this.$search.attr(\"placeholder\", \"\"), e.call(this, t), this.resizeSearch(), n && this.$search.trigger(\"focus\");\n }, e.prototype.handleSearch = function () {\n var e;\n this.resizeSearch(), this._keyUpPrevented || (e = this.$search.val(), this.trigger(\"query\", {\n term: e\n })), this._keyUpPrevented = !1;\n }, e.prototype.searchRemoveChoice = function (e, t) {\n this.trigger(\"unselect\", {\n data: t\n }), this.$search.val(t.text), this.handleSearch();\n }, e.prototype.resizeSearch = function () {\n this.$search.css(\"width\", \"25px\");\n var e = \"100%\";\n \"\" === this.$search.attr(\"placeholder\") && (e = .75 * (this.$search.val().length + 1) + \"em\"), this.$search.css(\"width\", e);\n }, e;\n }), u.define(\"select2/selection/selectionCss\", [\"../utils\"], function (n) {\n function e() {}\n return e.prototype.render = function (e) {\n var t = e.call(this),\n e = this.options.get(\"selectionCssClass\") || \"\";\n return -1 !== e.indexOf(\":all:\") && (e = e.replace(\":all:\", \"\"), n.copyNonInternalCssClasses(t[0], this.$element[0])), t.addClass(e), t;\n }, e;\n }), u.define(\"select2/selection/eventRelay\", [\"jquery\"], function (r) {\n function e() {}\n return e.prototype.bind = function (e, t, n) {\n var s = this,\n i = [\"open\", \"opening\", \"close\", \"closing\", \"select\", \"selecting\", \"unselect\", \"unselecting\", \"clear\", \"clearing\"],\n o = [\"opening\", \"closing\", \"selecting\", \"unselecting\", \"clearing\"];\n e.call(this, t, n), t.on(\"*\", function (e, t) {\n var n;\n -1 !== i.indexOf(e) && (t = t || {}, n = r.Event(\"select2:\" + e, {\n params: t\n }), s.$element.trigger(n), -1 !== o.indexOf(e) && (t.prevented = n.isDefaultPrevented()));\n });\n }, e;\n }), u.define(\"select2/translation\", [\"jquery\", \"require\"], function (t, n) {\n function s(e) {\n this.dict = e || {};\n }\n return s.prototype.all = function () {\n return this.dict;\n }, s.prototype.get = function (e) {\n return this.dict[e];\n }, s.prototype.extend = function (e) {\n this.dict = t.extend({}, e.all(), this.dict);\n }, s._cache = {}, s.loadPath = function (e) {\n var t;\n return e in s._cache || (t = n(e), s._cache[e] = t), new s(s._cache[e]);\n }, s;\n }), u.define(\"select2/diacritics\", [], function () {\n return {\n \"â’¶\": \"A\",\n \"A\": \"A\",\n \"À\": \"A\",\n \"Ã\": \"A\",\n \"Â\": \"A\",\n \"Ầ\": \"A\",\n \"Ấ\": \"A\",\n \"Ẫ\": \"A\",\n \"Ẩ\": \"A\",\n \"Ã\": \"A\",\n \"Ä€\": \"A\",\n \"Ä‚\": \"A\",\n \"Ằ\": \"A\",\n \"Ắ\": \"A\",\n \"Ẵ\": \"A\",\n \"Ẳ\": \"A\",\n \"Ȧ\": \"A\",\n \"Ç \": \"A\",\n \"Ä\": \"A\",\n \"Çž\": \"A\",\n \"Ả\": \"A\",\n \"Ã…\": \"A\",\n \"Ǻ\": \"A\",\n \"Ç\": \"A\",\n \"È€\": \"A\",\n \"È‚\": \"A\",\n \"Ạ\": \"A\",\n \"Ậ\": \"A\",\n \"Ặ\": \"A\",\n \"Ḁ\": \"A\",\n \"Ä„\": \"A\",\n \"Ⱥ\": \"A\",\n \"Ɐ\": \"A\",\n \"Ꜳ\": \"AA\",\n \"Æ\": \"AE\",\n \"Ǽ\": \"AE\",\n \"Ç¢\": \"AE\",\n \"Ꜵ\": \"AO\",\n \"Ꜷ\": \"AU\",\n \"Ꜹ\": \"AV\",\n \"Ꜻ\": \"AV\",\n \"Ꜽ\": \"AY\",\n \"â’·\": \"B\",\n \"ï¼¢\": \"B\",\n \"Ḃ\": \"B\",\n \"Ḅ\": \"B\",\n \"Ḇ\": \"B\",\n \"Ƀ\": \"B\",\n \"Æ‚\": \"B\",\n \"Æ\": \"B\",\n \"â’¸\": \"C\",\n \"ï¼£\": \"C\",\n \"Ć\": \"C\",\n \"Ĉ\": \"C\",\n \"ÄŠ\": \"C\",\n \"ÄŒ\": \"C\",\n \"Ç\": \"C\",\n \"Ḉ\": \"C\",\n \"Ƈ\": \"C\",\n \"È»\": \"C\",\n \"Ꜿ\": \"C\",\n \"â’¹\": \"D\",\n \"D\": \"D\",\n \"Ḋ\": \"D\",\n \"ÄŽ\": \"D\",\n \"Ḍ\": \"D\",\n \"á¸\": \"D\",\n \"Ḓ\": \"D\",\n \"Ḏ\": \"D\",\n \"Ä\": \"D\",\n \"Æ‹\": \"D\",\n \"ÆŠ\": \"D\",\n \"Ɖ\": \"D\",\n \"ê¹\": \"D\",\n \"DZ\": \"DZ\",\n \"Ç„\": \"DZ\",\n \"Dz\": \"Dz\",\n \"Ç…\": \"Dz\",\n \"â’º\": \"E\",\n \"ï¼¥\": \"E\",\n \"È\": \"E\",\n \"É\": \"E\",\n \"Ê\": \"E\",\n \"Ề\": \"E\",\n \"Ế\": \"E\",\n \"Ễ\": \"E\",\n \"Ể\": \"E\",\n \"Ẽ\": \"E\",\n \"Ä’\": \"E\",\n \"Ḕ\": \"E\",\n \"Ḗ\": \"E\",\n \"Ä”\": \"E\",\n \"Ä–\": \"E\",\n \"Ë\": \"E\",\n \"Ẻ\": \"E\",\n \"Äš\": \"E\",\n \"È„\": \"E\",\n \"Ȇ\": \"E\",\n \"Ẹ\": \"E\",\n \"Ệ\": \"E\",\n \"Ȩ\": \"E\",\n \"Ḝ\": \"E\",\n \"Ę\": \"E\",\n \"Ḙ\": \"E\",\n \"Ḛ\": \"E\",\n \"Æ\": \"E\",\n \"ÆŽ\": \"E\",\n \"â’»\": \"F\",\n \"F\": \"F\",\n \"Ḟ\": \"F\",\n \"Æ‘\": \"F\",\n \"ê»\": \"F\",\n \"â’¼\": \"G\",\n \"G\": \"G\",\n \"Ç´\": \"G\",\n \"Äœ\": \"G\",\n \"Ḡ\": \"G\",\n \"Äž\": \"G\",\n \"Ä \": \"G\",\n \"Ǧ\": \"G\",\n \"Ä¢\": \"G\",\n \"Ǥ\": \"G\",\n \"Æ“\": \"G\",\n \"êž \": \"G\",\n \"ê½\": \"G\",\n \"ê¾\": \"G\",\n \"â’½\": \"H\",\n \"H\": \"H\",\n \"Ĥ\": \"H\",\n \"Ḣ\": \"H\",\n \"Ḧ\": \"H\",\n \"Èž\": \"H\",\n \"Ḥ\": \"H\",\n \"Ḩ\": \"H\",\n \"Ḫ\": \"H\",\n \"Ħ\": \"H\",\n \"Ⱨ\": \"H\",\n \"â±µ\": \"H\",\n \"êž\": \"H\",\n \"â’¾\": \"I\",\n \"I\": \"I\",\n \"ÃŒ\": \"I\",\n \"Ã\": \"I\",\n \"ÃŽ\": \"I\",\n \"Ĩ\": \"I\",\n \"Ī\": \"I\",\n \"Ĭ\": \"I\",\n \"Ä°\": \"I\",\n \"Ã\": \"I\",\n \"Ḯ\": \"I\",\n \"Ỉ\": \"I\",\n \"Ç\": \"I\",\n \"Ȉ\": \"I\",\n \"ÈŠ\": \"I\",\n \"Ị\": \"I\",\n \"Ä®\": \"I\",\n \"Ḭ\": \"I\",\n \"Æ—\": \"I\",\n \"â’¿\": \"J\",\n \"J\": \"J\",\n \"Ä´\": \"J\",\n \"Ɉ\": \"J\",\n \"â“€\": \"K\",\n \"K\": \"K\",\n \"Ḱ\": \"K\",\n \"Ǩ\": \"K\",\n \"Ḳ\": \"K\",\n \"Ķ\": \"K\",\n \"Ḵ\": \"K\",\n \"Ƙ\": \"K\",\n \"Ⱪ\": \"K\",\n \"ê€\": \"K\",\n \"ê‚\": \"K\",\n \"ê„\": \"K\",\n \"Ꞣ\": \"K\",\n \"â“\": \"L\",\n \"L\": \"L\",\n \"Ä¿\": \"L\",\n \"Ĺ\": \"L\",\n \"Ľ\": \"L\",\n \"Ḷ\": \"L\",\n \"Ḹ\": \"L\",\n \"Ä»\": \"L\",\n \"Ḽ\": \"L\",\n \"Ḻ\": \"L\",\n \"Å\": \"L\",\n \"Ƚ\": \"L\",\n \"â±¢\": \"L\",\n \"â± \": \"L\",\n \"êˆ\": \"L\",\n \"ê†\": \"L\",\n \"Ꞁ\": \"L\",\n \"LJ\": \"LJ\",\n \"Lj\": \"Lj\",\n \"â“‚\": \"M\",\n \"ï¼\": \"M\",\n \"Ḿ\": \"M\",\n \"á¹€\": \"M\",\n \"Ṃ\": \"M\",\n \"â±®\": \"M\",\n \"Æœ\": \"M\",\n \"Ⓝ\": \"N\",\n \"ï¼®\": \"N\",\n \"Ǹ\": \"N\",\n \"Ń\": \"N\",\n \"Ñ\": \"N\",\n \"Ṅ\": \"N\",\n \"Ň\": \"N\",\n \"Ṇ\": \"N\",\n \"Å…\": \"N\",\n \"Ṋ\": \"N\",\n \"Ṉ\": \"N\",\n \"È \": \"N\",\n \"Æ\": \"N\",\n \"êž\": \"N\",\n \"Ꞥ\": \"N\",\n \"ÇŠ\": \"NJ\",\n \"Ç‹\": \"Nj\",\n \"â“„\": \"O\",\n \"O\": \"O\",\n \"Ã’\": \"O\",\n \"Ó\": \"O\",\n \"Ô\": \"O\",\n \"á»’\": \"O\",\n \"á»\": \"O\",\n \"á»–\": \"O\",\n \"á»”\": \"O\",\n \"Õ\": \"O\",\n \"Ṍ\": \"O\",\n \"Ȭ\": \"O\",\n \"Ṏ\": \"O\",\n \"ÅŒ\": \"O\",\n \"á¹\": \"O\",\n \"á¹’\": \"O\",\n \"ÅŽ\": \"O\",\n \"È®\": \"O\",\n \"È°\": \"O\",\n \"Ö\": \"O\",\n \"Ȫ\": \"O\",\n \"Ỏ\": \"O\",\n \"Å\": \"O\",\n \"Ç‘\": \"O\",\n \"ÈŒ\": \"O\",\n \"ÈŽ\": \"O\",\n \"Æ \": \"O\",\n \"Ờ\": \"O\",\n \"Ớ\": \"O\",\n \"á» \": \"O\",\n \"Ở\": \"O\",\n \"Ợ\": \"O\",\n \"Ọ\": \"O\",\n \"Ộ\": \"O\",\n \"Ǫ\": \"O\",\n \"Ǭ\": \"O\",\n \"Ø\": \"O\",\n \"Ǿ\": \"O\",\n \"Ɔ\": \"O\",\n \"ÆŸ\": \"O\",\n \"êŠ\": \"O\",\n \"êŒ\": \"O\",\n \"Å’\": \"OE\",\n \"Æ¢\": \"OI\",\n \"êŽ\": \"OO\",\n \"È¢\": \"OU\",\n \"â“…\": \"P\",\n \"ï¼°\": \"P\",\n \"á¹”\": \"P\",\n \"á¹–\": \"P\",\n \"Ƥ\": \"P\",\n \"â±£\": \"P\",\n \"ê\": \"P\",\n \"ê’\": \"P\",\n \"ê”\": \"P\",\n \"Ⓠ\": \"Q\",\n \"ï¼±\": \"Q\",\n \"ê–\": \"Q\",\n \"ê˜\": \"Q\",\n \"ÉŠ\": \"Q\",\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 \"êš\": \"R\",\n \"Ꞧ\": \"R\",\n \"êž‚\": \"R\",\n \"Ⓢ\": \"S\",\n \"ï¼³\": \"S\",\n \"ẞ\": \"S\",\n \"Åš\": \"S\",\n \"Ṥ\": \"S\",\n \"Åœ\": \"S\",\n \"á¹ \": \"S\",\n \"Å \": \"S\",\n \"Ṧ\": \"S\",\n \"á¹¢\": \"S\",\n \"Ṩ\": \"S\",\n \"Ș\": \"S\",\n \"Åž\": \"S\",\n \"â±¾\": \"S\",\n \"Ꞩ\": \"S\",\n \"êž„\": \"S\",\n \"Ⓣ\": \"T\",\n \"ï¼´\": \"T\",\n \"Ṫ\": \"T\",\n \"Ť\": \"T\",\n \"Ṭ\": \"T\",\n \"Èš\": \"T\",\n \"Å¢\": \"T\",\n \"á¹°\": \"T\",\n \"á¹®\": \"T\",\n \"Ŧ\": \"T\",\n \"Ƭ\": \"T\",\n \"Æ®\": \"T\",\n \"Ⱦ\": \"T\",\n \"Ꞇ\": \"T\",\n \"Ꜩ\": \"TZ\",\n \"â“Š\": \"U\",\n \"ï¼µ\": \"U\",\n \"Ù\": \"U\",\n \"Ú\": \"U\",\n \"Û\": \"U\",\n \"Ũ\": \"U\",\n \"Ṹ\": \"U\",\n \"Ū\": \"U\",\n \"Ṻ\": \"U\",\n \"Ŭ\": \"U\",\n \"Ãœ\": \"U\",\n \"Ç›\": \"U\",\n \"Ç—\": \"U\",\n \"Ç•\": \"U\",\n \"Ç™\": \"U\",\n \"Ủ\": \"U\",\n \"Å®\": \"U\",\n \"Å°\": \"U\",\n \"Ç“\": \"U\",\n \"È”\": \"U\",\n \"È–\": \"U\",\n \"Ư\": \"U\",\n \"Ừ\": \"U\",\n \"Ứ\": \"U\",\n \"á»®\": \"U\",\n \"Ử\": \"U\",\n \"á»°\": \"U\",\n \"Ụ\": \"U\",\n \"á¹²\": \"U\",\n \"Ų\": \"U\",\n \"Ṷ\": \"U\",\n \"á¹´\": \"U\",\n \"É„\": \"U\",\n \"â“‹\": \"V\",\n \"V\": \"V\",\n \"á¹¼\": \"V\",\n \"á¹¾\": \"V\",\n \"Ʋ\": \"V\",\n \"êž\": \"V\",\n \"É…\": \"V\",\n \"ê \": \"VY\",\n \"â“Œ\": \"W\",\n \"ï¼·\": \"W\",\n \"Ẁ\": \"W\",\n \"Ẃ\": \"W\",\n \"Å´\": \"W\",\n \"Ẇ\": \"W\",\n \"Ẅ\": \"W\",\n \"Ẉ\": \"W\",\n \"â±²\": \"W\",\n \"â“\": \"X\",\n \"X\": \"X\",\n \"Ẋ\": \"X\",\n \"Ẍ\": \"X\",\n \"â“Ž\": \"Y\",\n \"ï¼¹\": \"Y\",\n \"Ỳ\": \"Y\",\n \"Ã\": \"Y\",\n \"Ŷ\": \"Y\",\n \"Ỹ\": \"Y\",\n \"Ȳ\": \"Y\",\n \"Ẏ\": \"Y\",\n \"Ÿ\": \"Y\",\n \"Ỷ\": \"Y\",\n \"á»´\": \"Y\",\n \"Ƴ\": \"Y\",\n \"ÉŽ\": \"Y\",\n \"Ỿ\": \"Y\",\n \"â“\": \"Z\",\n \"Z\": \"Z\",\n \"Ź\": \"Z\",\n \"áº\": \"Z\",\n \"Å»\": \"Z\",\n \"Ž\": \"Z\",\n \"Ẓ\": \"Z\",\n \"Ẕ\": \"Z\",\n \"Ƶ\": \"Z\",\n \"Ȥ\": \"Z\",\n \"Ɀ\": \"Z\",\n \"Ⱬ\": \"Z\",\n \"ê¢\": \"Z\",\n \"â“\": \"a\",\n \"ï½\": \"a\",\n \"ẚ\": \"a\",\n \"à \": \"a\",\n \"á\": \"a\",\n \"â\": \"a\",\n \"ầ\": \"a\",\n \"ấ\": \"a\",\n \"ẫ\": \"a\",\n \"ẩ\": \"a\",\n \"ã\": \"a\",\n \"Ä\": \"a\",\n \"ă\": \"a\",\n \"ằ\": \"a\",\n \"ắ\": \"a\",\n \"ẵ\": \"a\",\n \"ẳ\": \"a\",\n \"ȧ\": \"a\",\n \"Ç¡\": \"a\",\n \"ä\": \"a\",\n \"ÇŸ\": \"a\",\n \"ả\": \"a\",\n \"Ã¥\": \"a\",\n \"Ç»\": \"a\",\n \"ÇŽ\": \"a\",\n \"È\": \"a\",\n \"ȃ\": \"a\",\n \"ạ\": \"a\",\n \"áº\": \"a\",\n \"ặ\": \"a\",\n \"á¸\": \"a\",\n \"Ä…\": \"a\",\n \"â±¥\": \"a\",\n \"É\": \"a\",\n \"ꜳ\": \"aa\",\n \"æ\": \"ae\",\n \"ǽ\": \"ae\",\n \"Ç£\": \"ae\",\n \"ꜵ\": \"ao\",\n \"ꜷ\": \"au\",\n \"ꜹ\": \"av\",\n \"ꜻ\": \"av\",\n \"ꜽ\": \"ay\",\n \"â“‘\": \"b\",\n \"b\": \"b\",\n \"ḃ\": \"b\",\n \"ḅ\": \"b\",\n \"ḇ\": \"b\",\n \"Æ€\": \"b\",\n \"ƃ\": \"b\",\n \"É“\": \"b\",\n \"â“’\": \"c\",\n \"c\": \"c\",\n \"ć\": \"c\",\n \"ĉ\": \"c\",\n \"Ä‹\": \"c\",\n \"Ä\": \"c\",\n \"ç\": \"c\",\n \"ḉ\": \"c\",\n \"ƈ\": \"c\",\n \"ȼ\": \"c\",\n \"ꜿ\": \"c\",\n \"ↄ\": \"c\",\n \"â““\": \"d\",\n \"d\": \"d\",\n \"ḋ\": \"d\",\n \"Ä\": \"d\",\n \"á¸\": \"d\",\n \"ḑ\": \"d\",\n \"ḓ\": \"d\",\n \"á¸\": \"d\",\n \"Ä‘\": \"d\",\n \"ÆŒ\": \"d\",\n \"É–\": \"d\",\n \"É—\": \"d\",\n \"êº\": \"d\",\n \"dz\": \"dz\",\n \"dž\": \"dz\",\n \"â“”\": \"e\",\n \"ï½…\": \"e\",\n \"è\": \"e\",\n \"é\": \"e\",\n \"ê\": \"e\",\n \"á»\": \"e\",\n \"ế\": \"e\",\n \"á»…\": \"e\",\n \"ể\": \"e\",\n \"ẽ\": \"e\",\n \"Ä“\": \"e\",\n \"ḕ\": \"e\",\n \"ḗ\": \"e\",\n \"Ä•\": \"e\",\n \"Ä—\": \"e\",\n \"ë\": \"e\",\n \"ẻ\": \"e\",\n \"Ä›\": \"e\",\n \"È…\": \"e\",\n \"ȇ\": \"e\",\n \"ẹ\": \"e\",\n \"ệ\": \"e\",\n \"È©\": \"e\",\n \"á¸\": \"e\",\n \"Ä™\": \"e\",\n \"ḙ\": \"e\",\n \"ḛ\": \"e\",\n \"ɇ\": \"e\",\n \"É›\": \"e\",\n \"Ç\": \"e\",\n \"â“•\": \"f\",\n \"f\": \"f\",\n \"ḟ\": \"f\",\n \"Æ’\": \"f\",\n \"ê¼\": \"f\",\n \"â“–\": \"g\",\n \"g\": \"g\",\n \"ǵ\": \"g\",\n \"Ä\": \"g\",\n \"ḡ\": \"g\",\n \"ÄŸ\": \"g\",\n \"Ä¡\": \"g\",\n \"ǧ\": \"g\",\n \"Ä£\": \"g\",\n \"Ç¥\": \"g\",\n \"É \": \"g\",\n \"êž¡\": \"g\",\n \"áµ¹\": \"g\",\n \"ê¿\": \"g\",\n \"â“—\": \"h\",\n \"h\": \"h\",\n \"Ä¥\": \"h\",\n \"ḣ\": \"h\",\n \"ḧ\": \"h\",\n \"ÈŸ\": \"h\",\n \"ḥ\": \"h\",\n \"ḩ\": \"h\",\n \"ḫ\": \"h\",\n \"ẖ\": \"h\",\n \"ħ\": \"h\",\n \"ⱨ\": \"h\",\n \"ⱶ\": \"h\",\n \"É¥\": \"h\",\n \"Æ•\": \"hv\",\n \"ⓘ\": \"i\",\n \"i\": \"i\",\n \"ì\": \"i\",\n \"Ã\": \"i\",\n \"î\": \"i\",\n \"Ä©\": \"i\",\n \"Ä«\": \"i\",\n \"Ä\": \"i\",\n \"ï\": \"i\",\n \"ḯ\": \"i\",\n \"ỉ\": \"i\",\n \"Ç\": \"i\",\n \"ȉ\": \"i\",\n \"È‹\": \"i\",\n \"ị\": \"i\",\n \"į\": \"i\",\n \"á¸\": \"i\",\n \"ɨ\": \"i\",\n \"ı\": \"i\",\n \"â“™\": \"j\",\n \"j\": \"j\",\n \"ĵ\": \"j\",\n \"Ç°\": \"j\",\n \"ɉ\": \"j\",\n \"â“š\": \"k\",\n \"k\": \"k\",\n \"ḱ\": \"k\",\n \"Ç©\": \"k\",\n \"ḳ\": \"k\",\n \"Ä·\": \"k\",\n \"ḵ\": \"k\",\n \"Æ™\": \"k\",\n \"ⱪ\": \"k\",\n \"ê\": \"k\",\n \"êƒ\": \"k\",\n \"ê…\": \"k\",\n \"ꞣ\": \"k\",\n \"â“›\": \"l\",\n \"l\": \"l\",\n \"Å€\": \"l\",\n \"ĺ\": \"l\",\n \"ľ\": \"l\",\n \"ḷ\": \"l\",\n \"ḹ\": \"l\",\n \"ļ\": \"l\",\n \"ḽ\": \"l\",\n \"ḻ\": \"l\",\n \"Å¿\": \"l\",\n \"Å‚\": \"l\",\n \"Æš\": \"l\",\n \"É«\": \"l\",\n \"ⱡ\": \"l\",\n \"ê‰\": \"l\",\n \"êž\": \"l\",\n \"ê‡\": \"l\",\n \"lj\": \"lj\",\n \"â“œ\": \"m\",\n \"ï½\": \"m\",\n \"ḿ\": \"m\",\n \"á¹\": \"m\",\n \"ṃ\": \"m\",\n \"ɱ\": \"m\",\n \"ɯ\": \"m\",\n \"â“\": \"n\",\n \"n\": \"n\",\n \"ǹ\": \"n\",\n \"Å„\": \"n\",\n \"ñ\": \"n\",\n \"á¹…\": \"n\",\n \"ň\": \"n\",\n \"ṇ\": \"n\",\n \"ņ\": \"n\",\n \"ṋ\": \"n\",\n \"ṉ\": \"n\",\n \"Æž\": \"n\",\n \"ɲ\": \"n\",\n \"ʼn\": \"n\",\n \"êž‘\": \"n\",\n \"ꞥ\": \"n\",\n \"ÇŒ\": \"nj\",\n \"â“ž\": \"o\",\n \"ï½\": \"o\",\n \"ò\": \"o\",\n \"ó\": \"o\",\n \"ô\": \"o\",\n \"ồ\": \"o\",\n \"ố\": \"o\",\n \"á»—\": \"o\",\n \"ổ\": \"o\",\n \"õ\": \"o\",\n \"á¹\": \"o\",\n \"È\": \"o\",\n \"á¹\": \"o\",\n \"Å\": \"o\",\n \"ṑ\": \"o\",\n \"ṓ\": \"o\",\n \"Å\": \"o\",\n \"ȯ\": \"o\",\n \"ȱ\": \"o\",\n \"ö\": \"o\",\n \"È«\": \"o\",\n \"á»\": \"o\",\n \"Å‘\": \"o\",\n \"Ç’\": \"o\",\n \"È\": \"o\",\n \"È\": \"o\",\n \"Æ¡\": \"o\",\n \"á»\": \"o\",\n \"á»›\": \"o\",\n \"ỡ\": \"o\",\n \"ở\": \"o\",\n \"ợ\": \"o\",\n \"á»\": \"o\",\n \"á»™\": \"o\",\n \"Ç«\": \"o\",\n \"Ç\": \"o\",\n \"ø\": \"o\",\n \"Ç¿\": \"o\",\n \"É”\": \"o\",\n \"ê‹\": \"o\",\n \"ê\": \"o\",\n \"ɵ\": \"o\",\n \"Å“\": \"oe\",\n \"Æ£\": \"oi\",\n \"È£\": \"ou\",\n \"ê\": \"oo\",\n \"â“Ÿ\": \"p\",\n \"ï½\": \"p\",\n \"ṕ\": \"p\",\n \"á¹—\": \"p\",\n \"Æ¥\": \"p\",\n \"áµ½\": \"p\",\n \"ê‘\": \"p\",\n \"ê“\": \"p\",\n \"ê•\": \"p\",\n \"â“ \": \"q\",\n \"q\": \"q\",\n \"É‹\": \"q\",\n \"ê—\": \"q\",\n \"ê™\": \"q\",\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 \"ê›\": \"r\",\n \"ꞧ\": \"r\",\n \"ꞃ\": \"r\",\n \"â“¢\": \"s\",\n \"s\": \"s\",\n \"ß\": \"s\",\n \"Å›\": \"s\",\n \"á¹¥\": \"s\",\n \"Å\": \"s\",\n \"ṡ\": \"s\",\n \"Å¡\": \"s\",\n \"ṧ\": \"s\",\n \"á¹£\": \"s\",\n \"ṩ\": \"s\",\n \"È™\": \"s\",\n \"ÅŸ\": \"s\",\n \"È¿\": \"s\",\n \"êž©\": \"s\",\n \"êž…\": \"s\",\n \"ẛ\": \"s\",\n \"â“£\": \"t\",\n \"ï½”\": \"t\",\n \"ṫ\": \"t\",\n \"ẗ\": \"t\",\n \"Å¥\": \"t\",\n \"á¹\": \"t\",\n \"È›\": \"t\",\n \"Å£\": \"t\",\n \"á¹±\": \"t\",\n \"ṯ\": \"t\",\n \"ŧ\": \"t\",\n \"Æ\": \"t\",\n \"ʈ\": \"t\",\n \"ⱦ\": \"t\",\n \"ꞇ\": \"t\",\n \"ꜩ\": \"tz\",\n \"ⓤ\": \"u\",\n \"u\": \"u\",\n \"ù\": \"u\",\n \"ú\": \"u\",\n \"û\": \"u\",\n \"Å©\": \"u\",\n \"á¹¹\": \"u\",\n \"Å«\": \"u\",\n \"á¹»\": \"u\",\n \"Å\": \"u\",\n \"ü\": \"u\",\n \"Çœ\": \"u\",\n \"ǘ\": \"u\",\n \"Ç–\": \"u\",\n \"Çš\": \"u\",\n \"ủ\": \"u\",\n \"ů\": \"u\",\n \"ű\": \"u\",\n \"Ç”\": \"u\",\n \"È•\": \"u\",\n \"È—\": \"u\",\n \"Æ°\": \"u\",\n \"ừ\": \"u\",\n \"ứ\": \"u\",\n \"ữ\": \"u\",\n \"á»\": \"u\",\n \"á»±\": \"u\",\n \"ụ\": \"u\",\n \"á¹³\": \"u\",\n \"ų\": \"u\",\n \"á¹·\": \"u\",\n \"á¹µ\": \"u\",\n \"ʉ\": \"u\",\n \"â“¥\": \"v\",\n \"ï½–\": \"v\",\n \"á¹½\": \"v\",\n \"ṿ\": \"v\",\n \"Ê‹\": \"v\",\n \"êŸ\": \"v\",\n \"ÊŒ\": \"v\",\n \"ê¡\": \"vy\",\n \"ⓦ\": \"w\",\n \"ï½—\": \"w\",\n \"áº\": \"w\",\n \"ẃ\": \"w\",\n \"ŵ\": \"w\",\n \"ẇ\": \"w\",\n \"ẅ\": \"w\",\n \"ẘ\": \"w\",\n \"ẉ\": \"w\",\n \"â±³\": \"w\",\n \"ⓧ\": \"x\",\n \"x\": \"x\",\n \"ẋ\": \"x\",\n \"áº\": \"x\",\n \"ⓨ\": \"y\",\n \"ï½™\": \"y\",\n \"ỳ\": \"y\",\n \"ý\": \"y\",\n \"Å·\": \"y\",\n \"ỹ\": \"y\",\n \"ȳ\": \"y\",\n \"áº\": \"y\",\n \"ÿ\": \"y\",\n \"á»·\": \"y\",\n \"ẙ\": \"y\",\n \"ỵ\": \"y\",\n \"Æ´\": \"y\",\n \"É\": \"y\",\n \"ỿ\": \"y\",\n \"â“©\": \"z\",\n \"z\": \"z\",\n \"ź\": \"z\",\n \"ẑ\": \"z\",\n \"ż\": \"z\",\n \"ž\": \"z\",\n \"ẓ\": \"z\",\n \"ẕ\": \"z\",\n \"ƶ\": \"z\",\n \"È¥\": \"z\",\n \"É€\": \"z\",\n \"ⱬ\": \"z\",\n \"ê£\": \"z\",\n \"Ά\": \"Α\",\n \"Έ\": \"Ε\",\n \"Ή\": \"Η\",\n \"Ί\": \"Ι\",\n \"Ϊ\": \"Ι\",\n \"ÎŒ\": \"Ο\",\n \"ÎŽ\": \"Î¥\",\n \"Ϋ\": \"Î¥\",\n \"Î\": \"Ω\",\n \"ά\": \"α\",\n \"Î\": \"ε\",\n \"ή\": \"η\",\n \"ί\": \"ι\",\n \"ÏŠ\": \"ι\",\n \"Î\": \"ι\",\n \"ÏŒ\": \"ο\",\n \"Ï\": \"Ï…\",\n \"Ï‹\": \"Ï…\",\n \"ΰ\": \"Ï…\",\n \"ÏŽ\": \"ω\",\n \"Ï‚\": \"σ\",\n \"’\": \"'\"\n };\n }), u.define(\"select2/data/base\", [\"../utils\"], function (n) {\n function s(e, t) {\n s.__super__.constructor.call(this);\n }\n return n.Extend(s, n.Observable), s.prototype.current = function (e) {\n throw new Error(\"The `current` method must be defined in child classes.\");\n }, s.prototype.query = function (e, t) {\n throw new Error(\"The `query` method must be defined in child classes.\");\n }, s.prototype.bind = function (e, t) {}, s.prototype.destroy = function () {}, s.prototype.generateResultId = function (e, t) {\n e = e.id + \"-result-\";\n return e += n.generateChars(4), null != t.id ? e += \"-\" + t.id.toString() : e += \"-\" + n.generateChars(4), e;\n }, s;\n }), u.define(\"select2/data/select\", [\"./base\", \"../utils\", \"jquery\"], function (e, a, l) {\n function n(e, t) {\n this.$element = e, this.options = t, n.__super__.constructor.call(this);\n }\n return a.Extend(n, e), n.prototype.current = function (e) {\n var t = this;\n e(Array.prototype.map.call(this.$element[0].querySelectorAll(\":checked\"), function (e) {\n return t.item(l(e));\n }));\n }, n.prototype.select = function (i) {\n var e,\n o = this;\n if (i.selected = !0, null != i.element && \"option\" === i.element.tagName.toLowerCase()) return i.element.selected = !0, void this.$element.trigger(\"input\").trigger(\"change\");\n this.$element.prop(\"multiple\") ? this.current(function (e) {\n var t = [];\n (i = [i]).push.apply(i, e);\n for (var n = 0; n < i.length; n++) {\n var s = i[n].id;\n -1 === t.indexOf(s) && t.push(s);\n }\n o.$element.val(t), o.$element.trigger(\"input\").trigger(\"change\");\n }) : (e = i.id, this.$element.val(e), this.$element.trigger(\"input\").trigger(\"change\"));\n }, n.prototype.unselect = function (i) {\n var o = this;\n if (this.$element.prop(\"multiple\")) {\n if (i.selected = !1, null != i.element && \"option\" === i.element.tagName.toLowerCase()) return i.element.selected = !1, void this.$element.trigger(\"input\").trigger(\"change\");\n this.current(function (e) {\n for (var t = [], n = 0; n < e.length; n++) {\n var s = e[n].id;\n s !== i.id && -1 === t.indexOf(s) && t.push(s);\n }\n o.$element.val(t), o.$element.trigger(\"input\").trigger(\"change\");\n });\n }\n }, n.prototype.bind = function (e, t) {\n var n = this;\n (this.container = e).on(\"select\", function (e) {\n n.select(e.data);\n }), e.on(\"unselect\", function (e) {\n n.unselect(e.data);\n });\n }, n.prototype.destroy = function () {\n this.$element.find(\"*\").each(function () {\n a.RemoveData(this);\n });\n }, n.prototype.query = function (t, e) {\n var n = [],\n s = this;\n this.$element.children().each(function () {\n var e;\n \"option\" !== this.tagName.toLowerCase() && \"optgroup\" !== this.tagName.toLowerCase() || (e = l(this), e = s.item(e), null !== (e = s.matches(t, e)) && n.push(e));\n }), e({\n results: n\n });\n }, n.prototype.addOptions = function (e) {\n this.$element.append(e);\n }, n.prototype.option = function (e) {\n var t;\n e.children ? (t = document.createElement(\"optgroup\")).label = e.text : void 0 !== (t = document.createElement(\"option\")).textContent ? t.textContent = e.text : t.innerText = e.text, void 0 !== e.id && (t.value = e.id), e.disabled && (t.disabled = !0), e.selected && (t.selected = !0), e.title && (t.title = e.title);\n e = this._normalizeItem(e);\n return e.element = t, a.StoreData(t, \"data\", e), l(t);\n }, n.prototype.item = function (e) {\n var t = {};\n if (null != (t = a.GetData(e[0], \"data\"))) return t;\n var n = e[0];\n if (\"option\" === n.tagName.toLowerCase()) t = {\n id: e.val(),\n text: e.text(),\n disabled: e.prop(\"disabled\"),\n selected: e.prop(\"selected\"),\n title: e.prop(\"title\")\n };else if (\"optgroup\" === n.tagName.toLowerCase()) {\n t = {\n text: e.prop(\"label\"),\n children: [],\n title: e.prop(\"title\")\n };\n for (var s = e.children(\"option\"), i = [], o = 0; o < s.length; o++) {\n var r = l(s[o]),\n r = this.item(r);\n i.push(r);\n }\n t.children = i;\n }\n return (t = this._normalizeItem(t)).element = e[0], a.StoreData(e[0], \"data\", t), t;\n }, n.prototype._normalizeItem = function (e) {\n e !== Object(e) && (e = {\n id: e,\n text: e\n });\n return null != (e = l.extend({}, {\n text: \"\"\n }, e)).id && (e.id = e.id.toString()), null != e.text && (e.text = e.text.toString()), null == e._resultId && e.id && null != this.container && (e._resultId = this.generateResultId(this.container, e)), l.extend({}, {\n selected: !1,\n disabled: !1\n }, e);\n }, n.prototype.matches = function (e, t) {\n return this.options.get(\"matcher\")(e, t);\n }, n;\n }), u.define(\"select2/data/array\", [\"./select\", \"../utils\", \"jquery\"], function (e, t, c) {\n function s(e, t) {\n this._dataToConvert = t.get(\"data\") || [], s.__super__.constructor.call(this, e, t);\n }\n return t.Extend(s, e), s.prototype.bind = function (e, t) {\n s.__super__.bind.call(this, e, t), this.addOptions(this.convertToOptions(this._dataToConvert));\n }, s.prototype.select = function (n) {\n var e = this.$element.find(\"option\").filter(function (e, t) {\n return t.value == n.id.toString();\n });\n 0 === e.length && (e = this.option(n), this.addOptions(e)), s.__super__.select.call(this, n);\n }, s.prototype.convertToOptions = function (e) {\n var t = this,\n n = this.$element.find(\"option\"),\n s = n.map(function () {\n return t.item(c(this)).id;\n }).get(),\n i = [];\n for (var o = 0; o < e.length; o++) {\n var r,\n a,\n l = this._normalizeItem(e[o]);\n 0 <= s.indexOf(l.id) ? (r = n.filter(function (e) {\n return function () {\n return c(this).val() == e.id;\n };\n }(l)), a = this.item(r), a = c.extend(!0, {}, l, a), a = this.option(a), r.replaceWith(a)) : (a = this.option(l), l.children && (l = this.convertToOptions(l.children), a.append(l)), i.push(a));\n }\n return i;\n }, s;\n }), u.define(\"select2/data/ajax\", [\"./array\", \"../utils\", \"jquery\"], function (e, t, o) {\n function n(e, t) {\n this.ajaxOptions = this._applyDefaults(t.get(\"ajax\")), null != this.ajaxOptions.processResults && (this.processResults = this.ajaxOptions.processResults), n.__super__.constructor.call(this, e, t);\n }\n return t.Extend(n, e), n.prototype._applyDefaults = function (e) {\n var t = {\n data: function (e) {\n return o.extend({}, e, {\n q: e.term\n });\n },\n transport: function (e, t, n) {\n e = o.ajax(e);\n return e.then(t), e.fail(n), e;\n }\n };\n return o.extend({}, t, e, !0);\n }, n.prototype.processResults = function (e) {\n return e;\n }, n.prototype.query = function (t, n) {\n var s = this;\n null != this._request && (\"function\" == typeof this._request.abort && this._request.abort(), this._request = null);\n var i = o.extend({\n type: \"GET\"\n }, this.ajaxOptions);\n function e() {\n var e = i.transport(i, function (e) {\n e = s.processResults(e, t);\n s.options.get(\"debug\") && window.console && console.error && (e && e.results && Array.isArray(e.results) || console.error(\"Select2: The AJAX results did not return an array in the `results` key of the response.\")), n(e);\n }, function () {\n \"status\" in e && (0 === e.status || \"0\" === e.status) || s.trigger(\"results:message\", {\n message: \"errorLoading\"\n });\n });\n s._request = e;\n }\n \"function\" == typeof i.url && (i.url = i.url.call(this.$element, t)), \"function\" == typeof i.data && (i.data = i.data.call(this.$element, t)), this.ajaxOptions.delay && null != t.term ? (this._queryTimeout && window.clearTimeout(this._queryTimeout), this._queryTimeout = window.setTimeout(e, this.ajaxOptions.delay)) : e();\n }, n;\n }), u.define(\"select2/data/tags\", [\"jquery\"], function (t) {\n function e(e, t, n) {\n var s = n.get(\"tags\"),\n i = n.get(\"createTag\");\n void 0 !== i && (this.createTag = i);\n i = n.get(\"insertTag\");\n if (void 0 !== i && (this.insertTag = i), e.call(this, t, n), Array.isArray(s)) for (var o = 0; o < s.length; o++) {\n var r = s[o],\n r = this._normalizeItem(r),\n r = this.option(r);\n this.$element.append(r);\n }\n }\n return e.prototype.query = function (e, c, u) {\n var d = this;\n this._removeOldTags(), null != c.term && null == c.page ? e.call(this, c, function e(t, n) {\n for (var s = t.results, i = 0; i < s.length; i++) {\n var o = s[i],\n r = null != o.children && !e({\n results: o.children\n }, !0);\n if ((o.text || \"\").toUpperCase() === (c.term || \"\").toUpperCase() || r) return !n && (t.data = s, void u(t));\n }\n if (n) return !0;\n var a,\n l = d.createTag(c);\n null != l && ((a = d.option(l)).attr(\"data-select2-tag\", \"true\"), d.addOptions([a]), d.insertTag(s, l)), t.results = s, u(t);\n }) : e.call(this, c, u);\n }, e.prototype.createTag = function (e, t) {\n if (null == t.term) return null;\n t = t.term.trim();\n return \"\" === t ? null : {\n id: t,\n text: t\n };\n }, e.prototype.insertTag = function (e, t, n) {\n t.unshift(n);\n }, e.prototype._removeOldTags = function (e) {\n this.$element.find(\"option[data-select2-tag]\").each(function () {\n this.selected || t(this).remove();\n });\n }, e;\n }), u.define(\"select2/data/tokenizer\", [\"jquery\"], function (c) {\n function e(e, t, n) {\n var s = n.get(\"tokenizer\");\n void 0 !== s && (this.tokenizer = s), e.call(this, t, n);\n }\n return e.prototype.bind = function (e, t, n) {\n e.call(this, t, n), this.$search = t.dropdown.$search || t.selection.$search || n.find(\".select2-search__field\");\n }, e.prototype.query = function (e, t, n) {\n var s = this;\n t.term = t.term || \"\";\n var i = this.tokenizer(t, this.options, function (e) {\n var t,\n n = s._normalizeItem(e);\n s.$element.find(\"option\").filter(function () {\n return c(this).val() === n.id;\n }).length || ((t = s.option(n)).attr(\"data-select2-tag\", !0), s._removeOldTags(), s.addOptions([t])), t = n, s.trigger(\"select\", {\n data: t\n });\n });\n i.term !== t.term && (this.$search.length && (this.$search.val(i.term), this.$search.trigger(\"focus\")), t.term = i.term), e.call(this, t, n);\n }, e.prototype.tokenizer = function (e, t, n, s) {\n for (var i = n.get(\"tokenSeparators\") || [], o = t.term, r = 0, a = this.createTag || function (e) {\n return {\n id: e.term,\n text: e.term\n };\n }; r < o.length;) {\n var l = o[r];\n -1 !== i.indexOf(l) ? (l = o.substr(0, r), null != (l = a(c.extend({}, t, {\n term: l\n }))) ? (s(l), o = o.substr(r + 1) || \"\", r = 0) : r++) : r++;\n }\n return {\n term: o\n };\n }, e;\n }), u.define(\"select2/data/minimumInputLength\", [], function () {\n function e(e, t, n) {\n this.minimumInputLength = n.get(\"minimumInputLength\"), e.call(this, t, n);\n }\n return e.prototype.query = function (e, t, n) {\n t.term = t.term || \"\", t.term.length < this.minimumInputLength ? this.trigger(\"results:message\", {\n message: \"inputTooShort\",\n args: {\n minimum: this.minimumInputLength,\n input: t.term,\n params: t\n }\n }) : e.call(this, t, n);\n }, e;\n }), u.define(\"select2/data/maximumInputLength\", [], function () {\n function e(e, t, n) {\n this.maximumInputLength = n.get(\"maximumInputLength\"), e.call(this, t, n);\n }\n return e.prototype.query = function (e, t, n) {\n t.term = t.term || \"\", 0 < this.maximumInputLength && t.term.length > this.maximumInputLength ? this.trigger(\"results:message\", {\n message: \"inputTooLong\",\n args: {\n maximum: this.maximumInputLength,\n input: t.term,\n params: t\n }\n }) : e.call(this, t, n);\n }, e;\n }), u.define(\"select2/data/maximumSelectionLength\", [], function () {\n function e(e, t, n) {\n this.maximumSelectionLength = n.get(\"maximumSelectionLength\"), e.call(this, t, n);\n }\n return e.prototype.bind = function (e, t, n) {\n var s = this;\n e.call(this, t, n), t.on(\"select\", function () {\n s._checkIfMaximumSelected();\n });\n }, e.prototype.query = function (e, t, n) {\n var s = this;\n this._checkIfMaximumSelected(function () {\n e.call(s, t, n);\n });\n }, e.prototype._checkIfMaximumSelected = function (e, t) {\n var n = this;\n this.current(function (e) {\n e = null != e ? e.length : 0;\n 0 < n.maximumSelectionLength && e >= n.maximumSelectionLength ? n.trigger(\"results:message\", {\n message: \"maximumSelected\",\n args: {\n maximum: n.maximumSelectionLength\n }\n }) : t && t();\n });\n }, e;\n }), u.define(\"select2/dropdown\", [\"jquery\", \"./utils\"], function (t, e) {\n function n(e, t) {\n this.$element = e, this.options = t, n.__super__.constructor.call(this);\n }\n return e.Extend(n, e.Observable), n.prototype.render = function () {\n var e = t('<span class=\"select2-dropdown\"><span class=\"select2-results\"></span></span>');\n return e.attr(\"dir\", this.options.get(\"dir\")), this.$dropdown = e;\n }, n.prototype.bind = function () {}, n.prototype.position = function (e, t) {}, n.prototype.destroy = function () {\n this.$dropdown.remove();\n }, n;\n }), u.define(\"select2/dropdown/search\", [\"jquery\"], function (o) {\n function e() {}\n return e.prototype.render = function (e) {\n var t = e.call(this),\n n = this.options.get(\"translations\").get(\"search\"),\n e = o('<span class=\"select2-search select2-search--dropdown\"><input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\" autocorrect=\"off\" autocapitalize=\"none\" spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" /></span>');\n return this.$searchContainer = e, this.$search = e.find(\"input\"), this.$search.prop(\"autocomplete\", this.options.get(\"autocomplete\")), this.$search.attr(\"aria-label\", n()), t.prepend(e), t;\n }, e.prototype.bind = function (e, t, n) {\n var s = this,\n i = t.id + \"-results\";\n e.call(this, t, n), this.$search.on(\"keydown\", function (e) {\n s.trigger(\"keypress\", e), s._keyUpPrevented = e.isDefaultPrevented();\n }), this.$search.on(\"input\", function (e) {\n o(this).off(\"keyup\");\n }), this.$search.on(\"keyup input\", function (e) {\n s.handleSearch(e);\n }), t.on(\"open\", function () {\n s.$search.attr(\"tabindex\", 0), s.$search.attr(\"aria-controls\", i), s.$search.trigger(\"focus\"), window.setTimeout(function () {\n s.$search.trigger(\"focus\");\n }, 0);\n }), t.on(\"close\", function () {\n s.$search.attr(\"tabindex\", -1), s.$search.removeAttr(\"aria-controls\"), s.$search.removeAttr(\"aria-activedescendant\"), s.$search.val(\"\"), s.$search.trigger(\"blur\");\n }), t.on(\"focus\", function () {\n t.isOpen() || s.$search.trigger(\"focus\");\n }), t.on(\"results:all\", function (e) {\n null != e.query.term && \"\" !== e.query.term || (s.showSearch(e) ? s.$searchContainer[0].classList.remove(\"select2-search--hide\") : s.$searchContainer[0].classList.add(\"select2-search--hide\"));\n }), t.on(\"results:focus\", function (e) {\n e.data._resultId ? s.$search.attr(\"aria-activedescendant\", e.data._resultId) : s.$search.removeAttr(\"aria-activedescendant\");\n });\n }, e.prototype.handleSearch = function (e) {\n var t;\n this._keyUpPrevented || (t = this.$search.val(), this.trigger(\"query\", {\n term: t\n })), this._keyUpPrevented = !1;\n }, e.prototype.showSearch = function (e, t) {\n return !0;\n }, e;\n }), u.define(\"select2/dropdown/hidePlaceholder\", [], function () {\n function e(e, t, n, s) {\n this.placeholder = this.normalizePlaceholder(n.get(\"placeholder\")), e.call(this, t, n, s);\n }\n return e.prototype.append = function (e, t) {\n t.results = this.removePlaceholder(t.results), e.call(this, t);\n }, e.prototype.normalizePlaceholder = function (e, t) {\n return t = \"string\" == typeof t ? {\n id: \"\",\n text: t\n } : t;\n }, e.prototype.removePlaceholder = function (e, t) {\n for (var n = t.slice(0), s = t.length - 1; 0 <= s; s--) {\n var i = t[s];\n this.placeholder.id === i.id && n.splice(s, 1);\n }\n return n;\n }, e;\n }), u.define(\"select2/dropdown/infiniteScroll\", [\"jquery\"], function (n) {\n function e(e, t, n, s) {\n this.lastParams = {}, e.call(this, t, n, s), this.$loadingMore = this.createLoadingMore(), this.loading = !1;\n }\n return e.prototype.append = function (e, t) {\n this.$loadingMore.remove(), this.loading = !1, e.call(this, t), this.showLoadingMore(t) && (this.$results.append(this.$loadingMore), this.loadMoreIfNeeded());\n }, e.prototype.bind = function (e, t, n) {\n var s = this;\n e.call(this, t, n), t.on(\"query\", function (e) {\n s.lastParams = e, s.loading = !0;\n }), t.on(\"query:append\", function (e) {\n s.lastParams = e, s.loading = !0;\n }), this.$results.on(\"scroll\", this.loadMoreIfNeeded.bind(this));\n }, e.prototype.loadMoreIfNeeded = function () {\n var e = n.contains(document.documentElement, this.$loadingMore[0]);\n !this.loading && e && (e = this.$results.offset().top + this.$results.outerHeight(!1), this.$loadingMore.offset().top + this.$loadingMore.outerHeight(!1) <= e + 50 && this.loadMore());\n }, e.prototype.loadMore = function () {\n this.loading = !0;\n var e = n.extend({}, {\n page: 1\n }, this.lastParams);\n e.page++, this.trigger(\"query:append\", e);\n }, e.prototype.showLoadingMore = function (e, t) {\n return t.pagination && t.pagination.more;\n }, e.prototype.createLoadingMore = function () {\n var e = n('<li class=\"select2-results__option select2-results__option--load-more\"role=\"option\" aria-disabled=\"true\"></li>'),\n t = this.options.get(\"translations\").get(\"loadingMore\");\n return e.html(t(this.lastParams)), e;\n }, e;\n }), u.define(\"select2/dropdown/attachBody\", [\"jquery\", \"../utils\"], function (u, r) {\n function e(e, t, n) {\n this.$dropdownParent = u(n.get(\"dropdownParent\") || document.body), e.call(this, t, n);\n }\n return e.prototype.bind = function (e, t, n) {\n var s = this;\n e.call(this, t, n), t.on(\"open\", function () {\n s._showDropdown(), s._attachPositioningHandler(t), s._bindContainerResultHandlers(t);\n }), t.on(\"close\", function () {\n s._hideDropdown(), s._detachPositioningHandler(t);\n }), this.$dropdownContainer.on(\"mousedown\", function (e) {\n e.stopPropagation();\n });\n }, e.prototype.destroy = function (e) {\n e.call(this), this.$dropdownContainer.remove();\n }, e.prototype.position = function (e, t, n) {\n t.attr(\"class\", n.attr(\"class\")), t[0].classList.remove(\"select2\"), t[0].classList.add(\"select2-container--open\"), t.css({\n position: \"absolute\",\n top: -999999\n }), this.$container = n;\n }, e.prototype.render = function (e) {\n var t = u(\"<span></span>\"),\n e = e.call(this);\n return t.append(e), this.$dropdownContainer = t;\n }, e.prototype._hideDropdown = function (e) {\n this.$dropdownContainer.detach();\n }, e.prototype._bindContainerResultHandlers = function (e, t) {\n var n;\n this._containerResultsHandlersBound || (n = this, t.on(\"results:all\", function () {\n n._positionDropdown(), n._resizeDropdown();\n }), t.on(\"results:append\", function () {\n n._positionDropdown(), n._resizeDropdown();\n }), t.on(\"results:message\", function () {\n n._positionDropdown(), n._resizeDropdown();\n }), t.on(\"select\", function () {\n n._positionDropdown(), n._resizeDropdown();\n }), t.on(\"unselect\", function () {\n n._positionDropdown(), n._resizeDropdown();\n }), this._containerResultsHandlersBound = !0);\n }, e.prototype._attachPositioningHandler = function (e, t) {\n var n = this,\n s = \"scroll.select2.\" + t.id,\n i = \"resize.select2.\" + t.id,\n o = \"orientationchange.select2.\" + t.id,\n t = this.$container.parents().filter(r.hasScroll);\n t.each(function () {\n r.StoreData(this, \"select2-scroll-position\", {\n x: u(this).scrollLeft(),\n y: u(this).scrollTop()\n });\n }), t.on(s, function (e) {\n var t = r.GetData(this, \"select2-scroll-position\");\n u(this).scrollTop(t.y);\n }), u(window).on(s + \" \" + i + \" \" + o, function (e) {\n n._positionDropdown(), n._resizeDropdown();\n });\n }, e.prototype._detachPositioningHandler = function (e, t) {\n var n = \"scroll.select2.\" + t.id,\n s = \"resize.select2.\" + t.id,\n t = \"orientationchange.select2.\" + t.id;\n this.$container.parents().filter(r.hasScroll).off(n), u(window).off(n + \" \" + s + \" \" + t);\n }, e.prototype._positionDropdown = function () {\n var e = u(window),\n t = this.$dropdown[0].classList.contains(\"select2-dropdown--above\"),\n n = this.$dropdown[0].classList.contains(\"select2-dropdown--below\"),\n s = null,\n i = this.$container.offset();\n i.bottom = i.top + this.$container.outerHeight(!1);\n var o = {\n height: this.$container.outerHeight(!1)\n };\n o.top = i.top, o.bottom = i.top + o.height;\n var r = this.$dropdown.outerHeight(!1),\n a = e.scrollTop(),\n l = e.scrollTop() + e.height(),\n c = a < i.top - r,\n e = l > i.bottom + r,\n a = {\n left: i.left,\n top: o.bottom\n },\n l = this.$dropdownParent;\n \"static\" === l.css(\"position\") && (l = l.offsetParent());\n i = {\n top: 0,\n left: 0\n };\n (u.contains(document.body, l[0]) || l[0].isConnected) && (i = l.offset()), a.top -= i.top, a.left -= i.left, t || n || (s = \"below\"), e || !c || t ? !c && e && t && (s = \"below\") : s = \"above\", (\"above\" == s || t && \"below\" !== s) && (a.top = o.top - i.top - r), null != s && (this.$dropdown[0].classList.remove(\"select2-dropdown--below\"), this.$dropdown[0].classList.remove(\"select2-dropdown--above\"), this.$dropdown[0].classList.add(\"select2-dropdown--\" + s), this.$container[0].classList.remove(\"select2-container--below\"), this.$container[0].classList.remove(\"select2-container--above\"), this.$container[0].classList.add(\"select2-container--\" + s)), this.$dropdownContainer.css(a);\n }, e.prototype._resizeDropdown = function () {\n var e = {\n width: this.$container.outerWidth(!1) + \"px\"\n };\n this.options.get(\"dropdownAutoWidth\") && (e.minWidth = e.width, e.position = \"relative\", e.width = \"auto\"), this.$dropdown.css(e);\n }, e.prototype._showDropdown = function (e) {\n this.$dropdownContainer.appendTo(this.$dropdownParent), this._positionDropdown(), this._resizeDropdown();\n }, e;\n }), u.define(\"select2/dropdown/minimumResultsForSearch\", [], function () {\n function e(e, t, n, s) {\n this.minimumResultsForSearch = n.get(\"minimumResultsForSearch\"), this.minimumResultsForSearch < 0 && (this.minimumResultsForSearch = 1 / 0), e.call(this, t, n, s);\n }\n return e.prototype.showSearch = function (e, t) {\n return !(function e(t) {\n for (var n = 0, s = 0; s < t.length; s++) {\n var i = t[s];\n i.children ? n += e(i.children) : n++;\n }\n return n;\n }(t.data.results) < this.minimumResultsForSearch) && e.call(this, t);\n }, e;\n }), u.define(\"select2/dropdown/selectOnClose\", [\"../utils\"], function (s) {\n function e() {}\n return e.prototype.bind = function (e, t, n) {\n var s = this;\n e.call(this, t, n), t.on(\"close\", function (e) {\n s._handleSelectOnClose(e);\n });\n }, e.prototype._handleSelectOnClose = function (e, t) {\n if (t && null != t.originalSelect2Event) {\n var n = t.originalSelect2Event;\n if (\"select\" === n._type || \"unselect\" === n._type) return;\n }\n n = this.getHighlightedResults();\n n.length < 1 || null != (n = s.GetData(n[0], \"data\")).element && n.element.selected || null == n.element && n.selected || this.trigger(\"select\", {\n data: n\n });\n }, e;\n }), u.define(\"select2/dropdown/closeOnSelect\", [], function () {\n function e() {}\n return e.prototype.bind = function (e, t, n) {\n var s = this;\n e.call(this, t, n), t.on(\"select\", function (e) {\n s._selectTriggered(e);\n }), t.on(\"unselect\", function (e) {\n s._selectTriggered(e);\n });\n }, e.prototype._selectTriggered = function (e, t) {\n var n = t.originalEvent;\n n && (n.ctrlKey || n.metaKey) || this.trigger(\"close\", {\n originalEvent: n,\n originalSelect2Event: t\n });\n }, e;\n }), u.define(\"select2/dropdown/dropdownCss\", [\"../utils\"], function (n) {\n function e() {}\n return e.prototype.render = function (e) {\n var t = e.call(this),\n e = this.options.get(\"dropdownCssClass\") || \"\";\n return -1 !== e.indexOf(\":all:\") && (e = e.replace(\":all:\", \"\"), n.copyNonInternalCssClasses(t[0], this.$element[0])), t.addClass(e), t;\n }, e;\n }), u.define(\"select2/dropdown/tagsSearchHighlight\", [\"../utils\"], function (s) {\n function e() {}\n return e.prototype.highlightFirstItem = function (e) {\n var t = this.$results.find(\".select2-results__option--selectable:not(.select2-results__option--selected)\");\n if (0 < t.length) {\n var n = t.first(),\n t = s.GetData(n[0], \"data\").element;\n if (t && t.getAttribute && \"true\" === t.getAttribute(\"data-select2-tag\")) return void n.trigger(\"mouseenter\");\n }\n e.call(this);\n }, e;\n }), u.define(\"select2/i18n/en\", [], function () {\n return {\n errorLoading: function () {\n return \"The results could not be loaded.\";\n },\n inputTooLong: function (e) {\n var t = e.input.length - e.maximum,\n e = \"Please delete \" + t + \" character\";\n return 1 != t && (e += \"s\"), e;\n },\n inputTooShort: function (e) {\n return \"Please enter \" + (e.minimum - e.input.length) + \" or more characters\";\n },\n loadingMore: function () {\n return \"Loading more results…\";\n },\n maximumSelected: function (e) {\n var t = \"You can only select \" + e.maximum + \" item\";\n return 1 != e.maximum && (t += \"s\"), t;\n },\n noResults: function () {\n return \"No results found\";\n },\n searching: function () {\n return \"Searching…\";\n },\n removeAllItems: function () {\n return \"Remove all items\";\n },\n removeItem: function () {\n return \"Remove item\";\n },\n search: function () {\n return \"Search\";\n }\n };\n }), u.define(\"select2/defaults\", [\"jquery\", \"./results\", \"./selection/single\", \"./selection/multiple\", \"./selection/placeholder\", \"./selection/allowClear\", \"./selection/search\", \"./selection/selectionCss\", \"./selection/eventRelay\", \"./utils\", \"./translation\", \"./diacritics\", \"./data/select\", \"./data/array\", \"./data/ajax\", \"./data/tags\", \"./data/tokenizer\", \"./data/minimumInputLength\", \"./data/maximumInputLength\", \"./data/maximumSelectionLength\", \"./dropdown\", \"./dropdown/search\", \"./dropdown/hidePlaceholder\", \"./dropdown/infiniteScroll\", \"./dropdown/attachBody\", \"./dropdown/minimumResultsForSearch\", \"./dropdown/selectOnClose\", \"./dropdown/closeOnSelect\", \"./dropdown/dropdownCss\", \"./dropdown/tagsSearchHighlight\", \"./i18n/en\"], function (l, o, r, a, c, u, d, p, h, f, g, t, m, v, y, _, b, w, $, x, A, D, S, O, L, E, C, T, q, I, e) {\n function n() {\n this.reset();\n }\n return n.prototype.apply = function (e) {\n var t;\n null == (e = l.extend(!0, {}, this.defaults, e)).dataAdapter && (null != e.ajax ? e.dataAdapter = y : null != e.data ? e.dataAdapter = v : e.dataAdapter = m, 0 < e.minimumInputLength && (e.dataAdapter = f.Decorate(e.dataAdapter, w)), 0 < e.maximumInputLength && (e.dataAdapter = f.Decorate(e.dataAdapter, $)), 0 < e.maximumSelectionLength && (e.dataAdapter = f.Decorate(e.dataAdapter, x)), e.tags && (e.dataAdapter = f.Decorate(e.dataAdapter, _)), null == e.tokenSeparators && null == e.tokenizer || (e.dataAdapter = f.Decorate(e.dataAdapter, b))), null == e.resultsAdapter && (e.resultsAdapter = o, null != e.ajax && (e.resultsAdapter = f.Decorate(e.resultsAdapter, O)), null != e.placeholder && (e.resultsAdapter = f.Decorate(e.resultsAdapter, S)), e.selectOnClose && (e.resultsAdapter = f.Decorate(e.resultsAdapter, C)), e.tags && (e.resultsAdapter = f.Decorate(e.resultsAdapter, I))), null == e.dropdownAdapter && (e.multiple ? e.dropdownAdapter = A : (t = f.Decorate(A, D), e.dropdownAdapter = t), 0 !== e.minimumResultsForSearch && (e.dropdownAdapter = f.Decorate(e.dropdownAdapter, E)), e.closeOnSelect && (e.dropdownAdapter = f.Decorate(e.dropdownAdapter, T)), null != e.dropdownCssClass && (e.dropdownAdapter = f.Decorate(e.dropdownAdapter, q)), e.dropdownAdapter = f.Decorate(e.dropdownAdapter, L)), null == e.selectionAdapter && (e.multiple ? e.selectionAdapter = a : e.selectionAdapter = r, null != e.placeholder && (e.selectionAdapter = f.Decorate(e.selectionAdapter, c)), e.allowClear && (e.selectionAdapter = f.Decorate(e.selectionAdapter, u)), e.multiple && (e.selectionAdapter = f.Decorate(e.selectionAdapter, d)), null != e.selectionCssClass && (e.selectionAdapter = f.Decorate(e.selectionAdapter, p)), e.selectionAdapter = f.Decorate(e.selectionAdapter, h)), e.language = this._resolveLanguage(e.language), e.language.push(\"en\");\n for (var n = [], s = 0; s < e.language.length; s++) {\n var i = e.language[s];\n -1 === n.indexOf(i) && n.push(i);\n }\n return e.language = n, e.translations = this._processTranslations(e.language, e.debug), e;\n }, n.prototype.reset = function () {\n function a(e) {\n return e.replace(/[^\\u0000-\\u007E]/g, function (e) {\n return t[e] || e;\n });\n }\n this.defaults = {\n amdLanguageBase: \"./i18n/\",\n autocomplete: \"off\",\n closeOnSelect: !0,\n debug: !1,\n dropdownAutoWidth: !1,\n escapeMarkup: f.escapeMarkup,\n language: {},\n matcher: function e(t, n) {\n if (null == t.term || \"\" === t.term.trim()) return n;\n if (n.children && 0 < n.children.length) {\n for (var s = l.extend(!0, {}, n), i = n.children.length - 1; 0 <= i; i--) null == e(t, n.children[i]) && s.children.splice(i, 1);\n return 0 < s.children.length ? s : e(t, s);\n }\n var o = a(n.text).toUpperCase(),\n r = a(t.term).toUpperCase();\n return -1 < o.indexOf(r) ? n : null;\n },\n minimumInputLength: 0,\n maximumInputLength: 0,\n maximumSelectionLength: 0,\n minimumResultsForSearch: 0,\n selectOnClose: !1,\n scrollAfterSelect: !1,\n sorter: function (e) {\n return e;\n },\n templateResult: function (e) {\n return e.text;\n },\n templateSelection: function (e) {\n return e.text;\n },\n theme: \"default\",\n width: \"resolve\"\n };\n }, n.prototype.applyFromElement = function (e, t) {\n var n = e.language,\n s = this.defaults.language,\n i = t.prop(\"lang\"),\n t = t.closest(\"[lang]\").prop(\"lang\"),\n t = Array.prototype.concat.call(this._resolveLanguage(i), this._resolveLanguage(n), this._resolveLanguage(s), this._resolveLanguage(t));\n return e.language = t, e;\n }, n.prototype._resolveLanguage = function (e) {\n if (!e) return [];\n if (l.isEmptyObject(e)) return [];\n if (l.isPlainObject(e)) return [e];\n for (var t, n = Array.isArray(e) ? e : [e], s = [], i = 0; i < n.length; i++) s.push(n[i]), \"string\" == typeof n[i] && 0 < n[i].indexOf(\"-\") && (t = n[i].split(\"-\")[0], s.push(t));\n return s;\n }, n.prototype._processTranslations = function (e, t) {\n for (var n = new g(), s = 0; s < e.length; s++) {\n var i = new g(),\n o = e[s];\n if (\"string\" == typeof o) try {\n i = g.loadPath(o);\n } catch (e) {\n try {\n o = this.defaults.amdLanguageBase + o, i = g.loadPath(o);\n } catch (e) {\n t && window.console && console.warn && console.warn('Select2: The language file for \"' + o + '\" could not be automatically loaded. A fallback will be used instead.');\n }\n } else i = l.isPlainObject(o) ? new g(o) : o;\n n.extend(i);\n }\n return n;\n }, n.prototype.set = function (e, t) {\n var n = {};\n n[l.camelCase(e)] = t;\n n = f._convertData(n);\n l.extend(!0, this.defaults, n);\n }, new n();\n }), u.define(\"select2/options\", [\"jquery\", \"./defaults\", \"./utils\"], function (c, n, u) {\n function e(e, t) {\n this.options = e, null != t && this.fromElement(t), null != t && (this.options = n.applyFromElement(this.options, t)), this.options = n.apply(this.options);\n }\n return e.prototype.fromElement = function (e) {\n var t = [\"select2\"];\n null == this.options.multiple && (this.options.multiple = e.prop(\"multiple\")), null == this.options.disabled && (this.options.disabled = e.prop(\"disabled\")), null == this.options.autocomplete && e.prop(\"autocomplete\") && (this.options.autocomplete = e.prop(\"autocomplete\")), null == this.options.dir && (e.prop(\"dir\") ? this.options.dir = e.prop(\"dir\") : e.closest(\"[dir]\").prop(\"dir\") ? this.options.dir = e.closest(\"[dir]\").prop(\"dir\") : this.options.dir = \"ltr\"), e.prop(\"disabled\", this.options.disabled), e.prop(\"multiple\", this.options.multiple), u.GetData(e[0], \"select2Tags\") && (this.options.debug && window.console && console.warn && console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags=\"true\"` attributes and will be removed in future versions of Select2.'), u.StoreData(e[0], \"data\", u.GetData(e[0], \"select2Tags\")), u.StoreData(e[0], \"tags\", !0)), u.GetData(e[0], \"ajaxUrl\") && (this.options.debug && window.console && console.warn && console.warn(\"Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2.\"), e.attr(\"ajax--url\", u.GetData(e[0], \"ajaxUrl\")), u.StoreData(e[0], \"ajax-Url\", u.GetData(e[0], \"ajaxUrl\")));\n var n = {};\n function s(e, t) {\n return t.toUpperCase();\n }\n for (var i = 0; i < e[0].attributes.length; i++) {\n var o = e[0].attributes[i].name,\n r = \"data-\";\n o.substr(0, r.length) == r && (o = o.substring(r.length), r = u.GetData(e[0], o), n[o.replace(/-([a-z])/g, s)] = r);\n }\n c.fn.jquery && \"1.\" == c.fn.jquery.substr(0, 2) && e[0].dataset && (n = c.extend(!0, {}, e[0].dataset, n));\n var a,\n l = c.extend(!0, {}, u.GetData(e[0]), n);\n for (a in l = u._convertData(l)) -1 < t.indexOf(a) || (c.isPlainObject(this.options[a]) ? c.extend(this.options[a], l[a]) : this.options[a] = l[a]);\n return this;\n }, e.prototype.get = function (e) {\n return this.options[e];\n }, e.prototype.set = function (e, t) {\n this.options[e] = t;\n }, e;\n }), u.define(\"select2/core\", [\"jquery\", \"./options\", \"./utils\", \"./keys\"], function (t, i, o, s) {\n var r = function (e, t) {\n null != o.GetData(e[0], \"select2\") && o.GetData(e[0], \"select2\").destroy(), this.$element = e, this.id = this._generateId(e), t = t || {}, this.options = new i(t, e), r.__super__.constructor.call(this);\n var n = e.attr(\"tabindex\") || 0;\n o.StoreData(e[0], \"old-tabindex\", n), e.attr(\"tabindex\", \"-1\");\n t = this.options.get(\"dataAdapter\");\n this.dataAdapter = new t(e, this.options);\n n = this.render();\n this._placeContainer(n);\n t = this.options.get(\"selectionAdapter\");\n this.selection = new t(e, this.options), this.$selection = this.selection.render(), this.selection.position(this.$selection, n);\n t = this.options.get(\"dropdownAdapter\");\n this.dropdown = new t(e, this.options), this.$dropdown = this.dropdown.render(), this.dropdown.position(this.$dropdown, n);\n n = this.options.get(\"resultsAdapter\");\n this.results = new n(e, this.options, this.dataAdapter), this.$results = this.results.render(), this.results.position(this.$results, this.$dropdown);\n var s = this;\n this._bindAdapters(), this._registerDomEvents(), this._registerDataEvents(), this._registerSelectionEvents(), this._registerDropdownEvents(), this._registerResultsEvents(), this._registerEvents(), this.dataAdapter.current(function (e) {\n s.trigger(\"selection:update\", {\n data: e\n });\n }), e[0].classList.add(\"select2-hidden-accessible\"), e.attr(\"aria-hidden\", \"true\"), this._syncAttributes(), o.StoreData(e[0], \"select2\", this), e.data(\"select2\", this);\n };\n return o.Extend(r, o.Observable), r.prototype._generateId = function (e) {\n return \"select2-\" + (null != e.attr(\"id\") ? e.attr(\"id\") : null != e.attr(\"name\") ? e.attr(\"name\") + \"-\" + o.generateChars(2) : o.generateChars(4)).replace(/(:|\\.|\\[|\\]|,)/g, \"\");\n }, r.prototype._placeContainer = function (e) {\n e.insertAfter(this.$element);\n var t = this._resolveWidth(this.$element, this.options.get(\"width\"));\n null != t && e.css(\"width\", t);\n }, r.prototype._resolveWidth = function (e, t) {\n var n = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n if (\"resolve\" == t) {\n var s = this._resolveWidth(e, \"style\");\n return null != s ? s : this._resolveWidth(e, \"element\");\n }\n if (\"element\" == t) {\n s = e.outerWidth(!1);\n return s <= 0 ? \"auto\" : s + \"px\";\n }\n if (\"style\" != t) return \"computedstyle\" != t ? t : window.getComputedStyle(e[0]).width;\n e = e.attr(\"style\");\n if (\"string\" != typeof e) return null;\n for (var i = e.split(\";\"), o = 0, r = i.length; o < r; o += 1) {\n var a = i[o].replace(/\\s/g, \"\").match(n);\n if (null !== a && 1 <= a.length) return a[1];\n }\n return null;\n }, r.prototype._bindAdapters = function () {\n this.dataAdapter.bind(this, this.$container), this.selection.bind(this, this.$container), this.dropdown.bind(this, this.$container), this.results.bind(this, this.$container);\n }, r.prototype._registerDomEvents = function () {\n var t = this;\n this.$element.on(\"change.select2\", function () {\n t.dataAdapter.current(function (e) {\n t.trigger(\"selection:update\", {\n data: e\n });\n });\n }), this.$element.on(\"focus.select2\", function (e) {\n t.trigger(\"focus\", e);\n }), this._syncA = o.bind(this._syncAttributes, this), this._syncS = o.bind(this._syncSubtree, this), this._observer = new window.MutationObserver(function (e) {\n t._syncA(), t._syncS(e);\n }), this._observer.observe(this.$element[0], {\n attributes: !0,\n childList: !0,\n subtree: !1\n });\n }, r.prototype._registerDataEvents = function () {\n var n = this;\n this.dataAdapter.on(\"*\", function (e, t) {\n n.trigger(e, t);\n });\n }, r.prototype._registerSelectionEvents = function () {\n var n = this,\n s = [\"toggle\", \"focus\"];\n this.selection.on(\"toggle\", function () {\n n.toggleDropdown();\n }), this.selection.on(\"focus\", function (e) {\n n.focus(e);\n }), this.selection.on(\"*\", function (e, t) {\n -1 === s.indexOf(e) && n.trigger(e, t);\n });\n }, r.prototype._registerDropdownEvents = function () {\n var n = this;\n this.dropdown.on(\"*\", function (e, t) {\n n.trigger(e, t);\n });\n }, r.prototype._registerResultsEvents = function () {\n var n = this;\n this.results.on(\"*\", function (e, t) {\n n.trigger(e, t);\n });\n }, r.prototype._registerEvents = function () {\n var n = this;\n this.on(\"open\", function () {\n n.$container[0].classList.add(\"select2-container--open\");\n }), this.on(\"close\", function () {\n n.$container[0].classList.remove(\"select2-container--open\");\n }), this.on(\"enable\", function () {\n n.$container[0].classList.remove(\"select2-container--disabled\");\n }), this.on(\"disable\", function () {\n n.$container[0].classList.add(\"select2-container--disabled\");\n }), this.on(\"blur\", function () {\n n.$container[0].classList.remove(\"select2-container--focus\");\n }), this.on(\"query\", function (t) {\n n.isOpen() || n.trigger(\"open\", {}), this.dataAdapter.query(t, function (e) {\n n.trigger(\"results:all\", {\n data: e,\n query: t\n });\n });\n }), this.on(\"query:append\", function (t) {\n this.dataAdapter.query(t, function (e) {\n n.trigger(\"results:append\", {\n data: e,\n query: t\n });\n });\n }), this.on(\"keypress\", function (e) {\n var t = e.which;\n n.isOpen() ? t === s.ESC || t === s.UP && e.altKey ? (n.close(e), e.preventDefault()) : t === s.ENTER || t === s.TAB ? (n.trigger(\"results:select\", {}), e.preventDefault()) : t === s.SPACE && e.ctrlKey ? (n.trigger(\"results:toggle\", {}), e.preventDefault()) : t === s.UP ? (n.trigger(\"results:previous\", {}), e.preventDefault()) : t === s.DOWN && (n.trigger(\"results:next\", {}), e.preventDefault()) : (t === s.ENTER || t === s.SPACE || t === s.DOWN && e.altKey) && (n.open(), e.preventDefault());\n });\n }, r.prototype._syncAttributes = function () {\n this.options.set(\"disabled\", this.$element.prop(\"disabled\")), this.isDisabled() ? (this.isOpen() && this.close(), this.trigger(\"disable\", {})) : this.trigger(\"enable\", {});\n }, r.prototype._isChangeMutation = function (e) {\n var t = this;\n if (e.addedNodes && 0 < e.addedNodes.length) {\n for (var n = 0; n < e.addedNodes.length; n++) if (e.addedNodes[n].selected) return !0;\n } else {\n if (e.removedNodes && 0 < e.removedNodes.length) return !0;\n if (Array.isArray(e)) return e.some(function (e) {\n return t._isChangeMutation(e);\n });\n }\n return !1;\n }, r.prototype._syncSubtree = function (e) {\n var e = this._isChangeMutation(e),\n t = this;\n e && this.dataAdapter.current(function (e) {\n t.trigger(\"selection:update\", {\n data: e\n });\n });\n }, r.prototype.trigger = function (e, t) {\n var n = r.__super__.trigger,\n s = {\n open: \"opening\",\n close: \"closing\",\n select: \"selecting\",\n unselect: \"unselecting\",\n clear: \"clearing\"\n };\n if (void 0 === t && (t = {}), e in s) {\n var i = s[e],\n s = {\n prevented: !1,\n name: e,\n args: t\n };\n if (n.call(this, i, s), s.prevented) return void (t.prevented = !0);\n }\n n.call(this, e, t);\n }, r.prototype.toggleDropdown = function () {\n this.isDisabled() || (this.isOpen() ? this.close() : this.open());\n }, r.prototype.open = function () {\n this.isOpen() || this.isDisabled() || this.trigger(\"query\", {});\n }, r.prototype.close = function (e) {\n this.isOpen() && this.trigger(\"close\", {\n originalEvent: e\n });\n }, r.prototype.isEnabled = function () {\n return !this.isDisabled();\n }, r.prototype.isDisabled = function () {\n return this.options.get(\"disabled\");\n }, r.prototype.isOpen = function () {\n return this.$container[0].classList.contains(\"select2-container--open\");\n }, r.prototype.hasFocus = function () {\n return this.$container[0].classList.contains(\"select2-container--focus\");\n }, r.prototype.focus = function (e) {\n this.hasFocus() || (this.$container[0].classList.add(\"select2-container--focus\"), this.trigger(\"focus\", {}));\n }, r.prototype.enable = function (e) {\n this.options.get(\"debug\") && window.console && console.warn && console.warn('Select2: The `select2(\"enable\")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop(\"disabled\") instead.');\n e = !(e = null == e || 0 === e.length ? [!0] : e)[0];\n this.$element.prop(\"disabled\", e);\n }, r.prototype.data = function () {\n this.options.get(\"debug\") && 0 < arguments.length && window.console && console.warn && console.warn('Select2: Data can no longer be set using `select2(\"data\")`. You should consider setting the value instead using `$element.val()`.');\n var t = [];\n return this.dataAdapter.current(function (e) {\n t = e;\n }), t;\n }, r.prototype.val = function (e) {\n if (this.options.get(\"debug\") && window.console && console.warn && console.warn('Select2: The `select2(\"val\")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'), null == e || 0 === e.length) return this.$element.val();\n e = e[0];\n Array.isArray(e) && (e = e.map(function (e) {\n return e.toString();\n })), this.$element.val(e).trigger(\"input\").trigger(\"change\");\n }, r.prototype.destroy = function () {\n o.RemoveData(this.$container[0]), this.$container.remove(), this._observer.disconnect(), this._observer = null, this._syncA = null, this._syncS = null, this.$element.off(\".select2\"), this.$element.attr(\"tabindex\", o.GetData(this.$element[0], \"old-tabindex\")), this.$element[0].classList.remove(\"select2-hidden-accessible\"), this.$element.attr(\"aria-hidden\", \"false\"), o.RemoveData(this.$element[0]), this.$element.removeData(\"select2\"), this.dataAdapter.destroy(), this.selection.destroy(), this.dropdown.destroy(), this.results.destroy(), this.dataAdapter = null, this.selection = null, this.dropdown = null, this.results = null;\n }, r.prototype.render = function () {\n var e = t('<span class=\"select2 select2-container\"><span class=\"selection\"></span><span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span></span>');\n return e.attr(\"dir\", this.options.get(\"dir\")), this.$container = e, this.$container[0].classList.add(\"select2-container--\" + this.options.get(\"theme\")), o.StoreData(e[0], \"element\", this.$element), e;\n }, r;\n }), u.define(\"select2/dropdown/attachContainer\", [], function () {\n function e(e, t, n) {\n e.call(this, t, n);\n }\n return e.prototype.position = function (e, t, n) {\n n.find(\".dropdown-wrapper\").append(t), t[0].classList.add(\"select2-dropdown--below\"), n[0].classList.add(\"select2-container--below\");\n }, e;\n }), u.define(\"select2/dropdown/stopPropagation\", [], function () {\n function e() {}\n return e.prototype.bind = function (e, t, n) {\n e.call(this, t, n);\n this.$dropdown.on([\"blur\", \"change\", \"click\", \"dblclick\", \"focus\", \"focusin\", \"focusout\", \"input\", \"keydown\", \"keyup\", \"keypress\", \"mousedown\", \"mouseenter\", \"mouseleave\", \"mousemove\", \"mouseover\", \"mouseup\", \"search\", \"touchend\", \"touchstart\"].join(\" \"), function (e) {\n e.stopPropagation();\n });\n }, e;\n }), u.define(\"select2/selection/stopPropagation\", [], function () {\n function e() {}\n return e.prototype.bind = function (e, t, n) {\n e.call(this, t, n);\n this.$selection.on([\"blur\", \"change\", \"click\", \"dblclick\", \"focus\", \"focusin\", \"focusout\", \"input\", \"keydown\", \"keyup\", \"keypress\", \"mousedown\", \"mouseenter\", \"mouseleave\", \"mousemove\", \"mouseover\", \"mouseup\", \"search\", \"touchend\", \"touchstart\"].join(\" \"), function (e) {\n e.stopPropagation();\n });\n }, e;\n }), a = function (u) {\n var d,\n p,\n e = [\"wheel\", \"mousewheel\", \"DOMMouseScroll\", \"MozMousePixelScroll\"],\n t = \"onwheel\" in document || 9 <= document.documentMode ? [\"wheel\"] : [\"mousewheel\", \"DomMouseScroll\", \"MozMousePixelScroll\"],\n h = Array.prototype.slice;\n if (u.event.fixHooks) for (var n = e.length; n;) u.event.fixHooks[e[--n]] = u.event.mouseHooks;\n var f = u.event.special.mousewheel = {\n version: \"3.1.12\",\n setup: function () {\n if (this.addEventListener) for (var e = t.length; e;) this.addEventListener(t[--e], s, !1);else this.onmousewheel = s;\n u.data(this, \"mousewheel-line-height\", f.getLineHeight(this)), u.data(this, \"mousewheel-page-height\", f.getPageHeight(this));\n },\n teardown: function () {\n if (this.removeEventListener) for (var e = t.length; e;) this.removeEventListener(t[--e], s, !1);else this.onmousewheel = null;\n u.removeData(this, \"mousewheel-line-height\"), u.removeData(this, \"mousewheel-page-height\");\n },\n getLineHeight: function (e) {\n var t = u(e),\n e = t[\"offsetParent\" in u.fn ? \"offsetParent\" : \"parent\"]();\n return e.length || (e = u(\"body\")), parseInt(e.css(\"fontSize\"), 10) || parseInt(t.css(\"fontSize\"), 10) || 16;\n },\n getPageHeight: function (e) {\n return u(e).height();\n },\n settings: {\n adjustOldDeltas: !0,\n normalizeOffset: !0\n }\n };\n function s(e) {\n var t,\n n = e || window.event,\n s = h.call(arguments, 1),\n i = 0,\n o = 0,\n r = 0,\n a = 0,\n l = 0,\n c = 0;\n if (e = u.event.fix(n), e.type = \"mousewheel\", \"detail\" in n && (r = -1 * n.detail), \"wheelDelta\" in n && (r = n.wheelDelta), \"wheelDeltaY\" in n && (r = n.wheelDeltaY), \"wheelDeltaX\" in n && (o = -1 * n.wheelDeltaX), \"axis\" in n && n.axis === n.HORIZONTAL_AXIS && (o = -1 * r, r = 0), i = 0 === r ? o : r, \"deltaY\" in n && (i = r = -1 * n.deltaY), \"deltaX\" in n && (o = n.deltaX, 0 === r && (i = -1 * o)), 0 !== r || 0 !== o) return 1 === n.deltaMode ? (i *= t = u.data(this, \"mousewheel-line-height\"), r *= t, o *= t) : 2 === n.deltaMode && (i *= t = u.data(this, \"mousewheel-page-height\"), r *= t, o *= t), a = Math.max(Math.abs(r), Math.abs(o)), (!p || a < p) && m(n, p = a) && (p /= 40), m(n, a) && (i /= 40, o /= 40, r /= 40), i = Math[1 <= i ? \"floor\" : \"ceil\"](i / p), o = Math[1 <= o ? \"floor\" : \"ceil\"](o / p), r = Math[1 <= r ? \"floor\" : \"ceil\"](r / p), f.settings.normalizeOffset && this.getBoundingClientRect && (a = this.getBoundingClientRect(), l = e.clientX - a.left, c = e.clientY - a.top), e.deltaX = o, e.deltaY = r, e.deltaFactor = p, e.offsetX = l, e.offsetY = c, e.deltaMode = 0, s.unshift(e, i, o, r), d && clearTimeout(d), d = setTimeout(g, 200), (u.event.dispatch || u.event.handle).apply(this, s);\n }\n function g() {\n p = null;\n }\n function m(e, t) {\n return f.settings.adjustOldDeltas && \"mousewheel\" === e.type && t % 120 == 0;\n }\n u.fn.extend({\n mousewheel: function (e) {\n return e ? this.bind(\"mousewheel\", e) : this.trigger(\"mousewheel\");\n },\n unmousewheel: function (e) {\n return this.unbind(\"mousewheel\", e);\n }\n });\n }, \"function\" == typeof u.define && u.define.amd ? u.define(\"jquery-mousewheel\", [\"jquery\"], a) : \"object\" == typeof exports ? module.exports = a : a(t), u.define(\"jquery.select2\", [\"jquery\", \"jquery-mousewheel\", \"./select2/core\", \"./select2/defaults\", \"./select2/utils\"], function (i, e, o, t, r) {\n var a;\n return null == i.fn.select2 && (a = [\"open\", \"close\", \"destroy\"], i.fn.select2 = function (t) {\n if (\"object\" == typeof (t = t || {})) return this.each(function () {\n var e = i.extend(!0, {}, t);\n new o(i(this), e);\n }), this;\n if (\"string\" != typeof t) throw new Error(\"Invalid arguments for Select2: \" + t);\n var n,\n s = Array.prototype.slice.call(arguments, 1);\n return this.each(function () {\n var e = r.GetData(this, \"select2\");\n null == e && window.console && console.error && console.error(\"The select2('\" + t + \"') method was called on an element that is not using Select2.\"), n = e[t].apply(e, s);\n }), -1 < a.indexOf(t) ? this : n;\n }), null == i.fn.select2.defaults && (i.fn.select2.defaults = t), o;\n }), {\n define: u.define,\n require: u.require\n });\n function b(e, t) {\n return s.call(e, t);\n }\n function l(e, t) {\n var n,\n s,\n i,\n o,\n r,\n a,\n l,\n c,\n u,\n d,\n p = t && t.split(\"/\"),\n h = v.map,\n f = h && h[\"*\"] || {};\n if (e) {\n for (t = (e = e.split(\"/\")).length - 1, v.nodeIdCompat && _.test(e[t]) && (e[t] = e[t].replace(_, \"\")), \".\" === e[0].charAt(0) && p && (e = p.slice(0, p.length - 1).concat(e)), c = 0; c < e.length; c++) \".\" === (d = e[c]) ? (e.splice(c, 1), --c) : \"..\" === d && (0 === c || 1 === c && \"..\" === e[2] || \"..\" === e[c - 1] || 0 < c && (e.splice(c - 1, 2), c -= 2));\n e = e.join(\"/\");\n }\n if ((p || f) && h) {\n for (c = (n = e.split(\"/\")).length; 0 < c; --c) {\n if (s = n.slice(0, c).join(\"/\"), p) for (u = p.length; 0 < u; --u) if (i = h[p.slice(0, u).join(\"/\")], i = i && i[s]) {\n o = i, r = c;\n break;\n }\n if (o) break;\n !a && f && f[s] && (a = f[s], l = c);\n }\n !o && a && (o = a, r = l), o && (n.splice(0, r, o), e = n.join(\"/\"));\n }\n return e;\n }\n function w(t, n) {\n return function () {\n var e = i.call(arguments, 0);\n return \"string\" != typeof e[0] && 1 === e.length && e.push(null), r.apply(p, e.concat([t, n]));\n };\n }\n function x(e) {\n var t;\n if (b(m, e) && (t = m[e], delete m[e], y[e] = !0, o.apply(p, t)), !b(g, e) && !b(y, e)) throw new Error(\"No \" + e);\n return g[e];\n }\n function c(e) {\n var t,\n n = e ? e.indexOf(\"!\") : -1;\n return -1 < n && (t = e.substring(0, n), e = e.substring(n + 1, e.length)), [t, e];\n }\n function A(e) {\n return e ? c(e) : [];\n }\n var u = a.require(\"jquery.select2\");\n return t.fn.select2.amd = a, u;\n});","/**\n * multiple-select - Multiple select is a jQuery plugin to select multiple elements with checkboxes :).\n *\n * @version v1.7.0\n * @homepage http://multiple-select.wenzhixin.net.cn\n * @author wenzhixin <wenzhixin2010@gmail.com> (http://wenzhixin.net.cn/)\n * @license MIT\n */\n\n!function (t, e) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? e(require(\"jquery\")) : \"function\" == typeof define && define.amd ? define([\"jquery\"], e) : e((t = \"undefined\" != typeof globalThis ? globalThis : t || self).jQuery);\n}(this, function (t) {\n \"use strict\";\n\n function e(t) {\n return e = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (t) {\n return typeof t;\n } : function (t) {\n return t && \"function\" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? \"symbol\" : typeof t;\n }, e(t);\n }\n function n(t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }\n function i(t, e) {\n for (var n = 0; n < e.length; n++) {\n var i = e[n];\n i.enumerable = i.enumerable || !1, i.configurable = !0, \"value\" in i && (i.writable = !0), Object.defineProperty(t, (u = i.key, r = void 0, \"symbol\" == typeof (r = function (t, e) {\n if (\"object\" != typeof t || null === t) return t;\n var n = t[Symbol.toPrimitive];\n if (void 0 !== n) {\n var i = n.call(t, e || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === e ? String : Number)(t);\n }(u, \"string\")) ? r : String(r)), i);\n }\n var u, r;\n }\n function u(t, e, n) {\n return e && i(t.prototype, e), n && i(t, n), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), t;\n }\n function r(t, e) {\n return function (t) {\n if (Array.isArray(t)) return t;\n }(t) || function (t, e) {\n var n = null == t ? null : \"undefined\" != typeof Symbol && t[Symbol.iterator] || t[\"@@iterator\"];\n if (null != n) {\n var i,\n u,\n r,\n o,\n s = [],\n a = !0,\n l = !1;\n try {\n if (r = (n = n.call(t)).next, 0 === e) {\n if (Object(n) !== n) return;\n a = !1;\n } else for (; !(a = (i = r.call(n)).done) && (s.push(i.value), s.length !== e); a = !0);\n } catch (t) {\n l = !0, u = t;\n } finally {\n try {\n if (!a && null != n.return && (o = n.return(), Object(o) !== o)) return;\n } finally {\n if (l) throw u;\n }\n }\n return s;\n }\n }(t, e) || s(t, e) || function () {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }\n function o(t) {\n return function (t) {\n if (Array.isArray(t)) return a(t);\n }(t) || function (t) {\n if (\"undefined\" != typeof Symbol && null != t[Symbol.iterator] || null != t[\"@@iterator\"]) return Array.from(t);\n }(t) || s(t) || function () {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }\n function s(t, e) {\n if (t) {\n if (\"string\" == typeof t) return a(t, e);\n var n = Object.prototype.toString.call(t).slice(8, -1);\n return \"Object\" === n && t.constructor && (n = t.constructor.name), \"Map\" === n || \"Set\" === n ? Array.from(t) : \"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? a(t, e) : void 0;\n }\n }\n function a(t, e) {\n (null == e || e > t.length) && (e = t.length);\n for (var n = 0, i = new Array(e); n < e; n++) i[n] = t[n];\n return i;\n }\n function l(t, e) {\n var n = \"undefined\" != typeof Symbol && t[Symbol.iterator] || t[\"@@iterator\"];\n if (!n) {\n if (Array.isArray(t) || (n = s(t)) || e && t && \"number\" == typeof t.length) {\n n && (t = n);\n var i = 0,\n u = function () {};\n return {\n s: u,\n n: function () {\n return i >= t.length ? {\n done: !0\n } : {\n done: !1,\n value: t[i++]\n };\n },\n e: function (t) {\n throw t;\n },\n f: u\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var r,\n o = !0,\n a = !1;\n return {\n s: function () {\n n = n.call(t);\n },\n n: function () {\n var t = n.next();\n return o = t.done, t;\n },\n e: function (t) {\n a = !0, r = t;\n },\n f: function () {\n try {\n o || null == n.return || n.return();\n } finally {\n if (a) throw r;\n }\n }\n };\n }\n var c = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof window ? window : \"undefined\" != typeof global ? global : \"undefined\" != typeof self ? self : {},\n h = function (t) {\n return t && t.Math == Math && t;\n },\n f = h(\"object\" == typeof globalThis && globalThis) || h(\"object\" == typeof window && window) || h(\"object\" == typeof self && self) || h(\"object\" == typeof c && c) || function () {\n return this;\n }() || c || Function(\"return this\")(),\n d = {},\n p = function (t) {\n try {\n return !!t();\n } catch (t) {\n return !0;\n }\n },\n v = !p(function () {\n return 7 != Object.defineProperty({}, 1, {\n get: function () {\n return 7;\n }\n })[1];\n }),\n g = !p(function () {\n var t = function () {}.bind();\n return \"function\" != typeof t || t.hasOwnProperty(\"prototype\");\n }),\n E = g,\n b = Function.prototype.call,\n y = E ? b.bind(b) : function () {\n return b.apply(b, arguments);\n },\n m = {},\n A = {}.propertyIsEnumerable,\n C = Object.getOwnPropertyDescriptor,\n F = C && !A.call({\n 1: 2\n }, 1);\n m.f = F ? function (t) {\n var e = C(this, t);\n return !!e && e.enumerable;\n } : A;\n var S,\n k,\n D = function (t, e) {\n return {\n enumerable: !(1 & t),\n configurable: !(2 & t),\n writable: !(4 & t),\n value: e\n };\n },\n x = g,\n w = Function.prototype,\n O = w.call,\n $ = x && w.bind.bind(O, O),\n B = x ? $ : function (t) {\n return function () {\n return O.apply(t, arguments);\n };\n },\n j = B,\n T = j({}.toString),\n L = j(\"\".slice),\n I = function (t) {\n return L(T(t), 8, -1);\n },\n R = p,\n _ = I,\n M = Object,\n P = B(\"\".split),\n N = R(function () {\n return !M(\"z\").propertyIsEnumerable(0);\n }) ? function (t) {\n return \"String\" == _(t) ? P(t, \"\") : M(t);\n } : M,\n H = function (t) {\n return null == t;\n },\n U = H,\n G = TypeError,\n W = function (t) {\n if (U(t)) throw G(\"Can't call method on \" + t);\n return t;\n },\n z = N,\n K = W,\n V = function (t) {\n return z(K(t));\n },\n q = \"object\" == typeof document && document.all,\n Y = {\n all: q,\n IS_HTMLDDA: void 0 === q && void 0 !== q\n },\n X = Y.all,\n J = Y.IS_HTMLDDA ? function (t) {\n return \"function\" == typeof t || t === X;\n } : function (t) {\n return \"function\" == typeof t;\n },\n Z = J,\n Q = Y.all,\n tt = Y.IS_HTMLDDA ? function (t) {\n return \"object\" == typeof t ? null !== t : Z(t) || t === Q;\n } : function (t) {\n return \"object\" == typeof t ? null !== t : Z(t);\n },\n et = f,\n nt = J,\n it = function (t, e) {\n return arguments.length < 2 ? (n = et[t], nt(n) ? n : void 0) : et[t] && et[t][e];\n var n;\n },\n ut = B({}.isPrototypeOf),\n rt = f,\n ot = \"undefined\" != typeof navigator && String(navigator.userAgent) || \"\",\n st = rt.process,\n at = rt.Deno,\n lt = st && st.versions || at && at.version,\n ct = lt && lt.v8;\n ct && (k = (S = ct.split(\".\"))[0] > 0 && S[0] < 4 ? 1 : +(S[0] + S[1])), !k && ot && (!(S = ot.match(/Edge\\/(\\d+)/)) || S[1] >= 74) && (S = ot.match(/Chrome\\/(\\d+)/)) && (k = +S[1]);\n var ht = k,\n ft = ht,\n dt = p,\n pt = f.String,\n vt = !!Object.getOwnPropertySymbols && !dt(function () {\n var t = Symbol();\n return !pt(t) || !(Object(t) instanceof Symbol) || !Symbol.sham && ft && ft < 41;\n }),\n gt = vt && !Symbol.sham && \"symbol\" == typeof Symbol.iterator,\n Et = it,\n bt = J,\n yt = ut,\n mt = Object,\n At = gt ? function (t) {\n return \"symbol\" == typeof t;\n } : function (t) {\n var e = Et(\"Symbol\");\n return bt(e) && yt(e.prototype, mt(t));\n },\n Ct = String,\n Ft = function (t) {\n try {\n return Ct(t);\n } catch (t) {\n return \"Object\";\n }\n },\n St = J,\n kt = Ft,\n Dt = TypeError,\n xt = function (t) {\n if (St(t)) return t;\n throw Dt(kt(t) + \" is not a function\");\n },\n wt = xt,\n Ot = H,\n $t = function (t, e) {\n var n = t[e];\n return Ot(n) ? void 0 : wt(n);\n },\n Bt = y,\n jt = J,\n Tt = tt,\n Lt = TypeError,\n It = {\n exports: {}\n },\n Rt = f,\n _t = Object.defineProperty,\n Mt = function (t, e) {\n try {\n _t(Rt, t, {\n value: e,\n configurable: !0,\n writable: !0\n });\n } catch (n) {\n Rt[t] = e;\n }\n return e;\n },\n Pt = Mt,\n Nt = \"__core-js_shared__\",\n Ht = f[Nt] || Pt(Nt, {}),\n Ut = Ht;\n (It.exports = function (t, e) {\n return Ut[t] || (Ut[t] = void 0 !== e ? e : {});\n })(\"versions\", []).push({\n version: \"3.30.2\",\n mode: \"global\",\n copyright: \"© 2014-2023 Denis Pushkarev (zloirock.ru)\",\n license: \"https://github.com/zloirock/core-js/blob/v3.30.2/LICENSE\",\n source: \"https://github.com/zloirock/core-js\"\n });\n var Gt = It.exports,\n Wt = W,\n zt = Object,\n Kt = function (t) {\n return zt(Wt(t));\n },\n Vt = Kt,\n qt = B({}.hasOwnProperty),\n Yt = Object.hasOwn || function (t, e) {\n return qt(Vt(t), e);\n },\n Xt = B,\n Jt = 0,\n Zt = Math.random(),\n Qt = Xt(1..toString),\n te = function (t) {\n return \"Symbol(\" + (void 0 === t ? \"\" : t) + \")_\" + Qt(++Jt + Zt, 36);\n },\n ee = Gt,\n ne = Yt,\n ie = te,\n ue = vt,\n re = gt,\n oe = f.Symbol,\n se = ee(\"wks\"),\n ae = re ? oe.for || oe : oe && oe.withoutSetter || ie,\n le = function (t) {\n return ne(se, t) || (se[t] = ue && ne(oe, t) ? oe[t] : ae(\"Symbol.\" + t)), se[t];\n },\n ce = y,\n he = tt,\n fe = At,\n de = $t,\n pe = function (t, e) {\n var n, i;\n if (\"string\" === e && jt(n = t.toString) && !Tt(i = Bt(n, t))) return i;\n if (jt(n = t.valueOf) && !Tt(i = Bt(n, t))) return i;\n if (\"string\" !== e && jt(n = t.toString) && !Tt(i = Bt(n, t))) return i;\n throw Lt(\"Can't convert object to primitive value\");\n },\n ve = TypeError,\n ge = le(\"toPrimitive\"),\n Ee = function (t, e) {\n if (!he(t) || fe(t)) return t;\n var n,\n i = de(t, ge);\n if (i) {\n if (void 0 === e && (e = \"default\"), n = ce(i, t, e), !he(n) || fe(n)) return n;\n throw ve(\"Can't convert object to primitive value\");\n }\n return void 0 === e && (e = \"number\"), pe(t, e);\n },\n be = At,\n ye = function (t) {\n var e = Ee(t, \"string\");\n return be(e) ? e : e + \"\";\n },\n me = tt,\n Ae = f.document,\n Ce = me(Ae) && me(Ae.createElement),\n Fe = function (t) {\n return Ce ? Ae.createElement(t) : {};\n },\n Se = Fe,\n ke = !v && !p(function () {\n return 7 != Object.defineProperty(Se(\"div\"), \"a\", {\n get: function () {\n return 7;\n }\n }).a;\n }),\n De = v,\n xe = y,\n we = m,\n Oe = D,\n $e = V,\n Be = ye,\n je = Yt,\n Te = ke,\n Le = Object.getOwnPropertyDescriptor;\n d.f = De ? Le : function (t, e) {\n if (t = $e(t), e = Be(e), Te) try {\n return Le(t, e);\n } catch (t) {}\n if (je(t, e)) return Oe(!xe(we.f, t, e), t[e]);\n };\n var Ie = {},\n Re = v && p(function () {\n return 42 != Object.defineProperty(function () {}, \"prototype\", {\n value: 42,\n writable: !1\n }).prototype;\n }),\n _e = tt,\n Me = String,\n Pe = TypeError,\n Ne = function (t) {\n if (_e(t)) return t;\n throw Pe(Me(t) + \" is not an object\");\n },\n He = v,\n Ue = ke,\n Ge = Re,\n We = Ne,\n ze = ye,\n Ke = TypeError,\n Ve = Object.defineProperty,\n qe = Object.getOwnPropertyDescriptor,\n Ye = \"enumerable\",\n Xe = \"configurable\",\n Je = \"writable\";\n Ie.f = He ? Ge ? function (t, e, n) {\n if (We(t), e = ze(e), We(n), \"function\" == typeof t && \"prototype\" === e && \"value\" in n && Je in n && !n[Je]) {\n var i = qe(t, e);\n i && i[Je] && (t[e] = n.value, n = {\n configurable: Xe in n ? n[Xe] : i[Xe],\n enumerable: Ye in n ? n[Ye] : i[Ye],\n writable: !1\n });\n }\n return Ve(t, e, n);\n } : Ve : function (t, e, n) {\n if (We(t), e = ze(e), We(n), Ue) try {\n return Ve(t, e, n);\n } catch (t) {}\n if (\"get\" in n || \"set\" in n) throw Ke(\"Accessors not supported\");\n return \"value\" in n && (t[e] = n.value), t;\n };\n var Ze = Ie,\n Qe = D,\n tn = v ? function (t, e, n) {\n return Ze.f(t, e, Qe(1, n));\n } : function (t, e, n) {\n return t[e] = n, t;\n },\n en = {\n exports: {}\n },\n nn = v,\n un = Yt,\n rn = Function.prototype,\n on = nn && Object.getOwnPropertyDescriptor,\n sn = un(rn, \"name\"),\n an = {\n EXISTS: sn,\n PROPER: sn && \"something\" === function () {}.name,\n CONFIGURABLE: sn && (!nn || nn && on(rn, \"name\").configurable)\n },\n ln = J,\n cn = Ht,\n hn = B(Function.toString);\n ln(cn.inspectSource) || (cn.inspectSource = function (t) {\n return hn(t);\n });\n var fn,\n dn,\n pn,\n vn = cn.inspectSource,\n gn = J,\n En = f.WeakMap,\n bn = gn(En) && /native code/.test(String(En)),\n yn = te,\n mn = Gt(\"keys\"),\n An = function (t) {\n return mn[t] || (mn[t] = yn(t));\n },\n Cn = {},\n Fn = bn,\n Sn = f,\n kn = tt,\n Dn = tn,\n xn = Yt,\n wn = Ht,\n On = An,\n $n = Cn,\n Bn = \"Object already initialized\",\n jn = Sn.TypeError,\n Tn = Sn.WeakMap;\n if (Fn || wn.state) {\n var Ln = wn.state || (wn.state = new Tn());\n Ln.get = Ln.get, Ln.has = Ln.has, Ln.set = Ln.set, fn = function (t, e) {\n if (Ln.has(t)) throw jn(Bn);\n return e.facade = t, Ln.set(t, e), e;\n }, dn = function (t) {\n return Ln.get(t) || {};\n }, pn = function (t) {\n return Ln.has(t);\n };\n } else {\n var In = On(\"state\");\n $n[In] = !0, fn = function (t, e) {\n if (xn(t, In)) throw jn(Bn);\n return e.facade = t, Dn(t, In, e), e;\n }, dn = function (t) {\n return xn(t, In) ? t[In] : {};\n }, pn = function (t) {\n return xn(t, In);\n };\n }\n var Rn = {\n set: fn,\n get: dn,\n has: pn,\n enforce: function (t) {\n return pn(t) ? dn(t) : fn(t, {});\n },\n getterFor: function (t) {\n return function (e) {\n var n;\n if (!kn(e) || (n = dn(e)).type !== t) throw jn(\"Incompatible receiver, \" + t + \" required\");\n return n;\n };\n }\n },\n _n = B,\n Mn = p,\n Pn = J,\n Nn = Yt,\n Hn = v,\n Un = an.CONFIGURABLE,\n Gn = vn,\n Wn = Rn.enforce,\n zn = Rn.get,\n Kn = String,\n Vn = Object.defineProperty,\n qn = _n(\"\".slice),\n Yn = _n(\"\".replace),\n Xn = _n([].join),\n Jn = Hn && !Mn(function () {\n return 8 !== Vn(function () {}, \"length\", {\n value: 8\n }).length;\n }),\n Zn = String(String).split(\"String\"),\n Qn = en.exports = function (t, e, n) {\n \"Symbol(\" === qn(Kn(e), 0, 7) && (e = \"[\" + Yn(Kn(e), /^Symbol\\(([^)]*)\\)/, \"$1\") + \"]\"), n && n.getter && (e = \"get \" + e), n && n.setter && (e = \"set \" + e), (!Nn(t, \"name\") || Un && t.name !== e) && (Hn ? Vn(t, \"name\", {\n value: e,\n configurable: !0\n }) : t.name = e), Jn && n && Nn(n, \"arity\") && t.length !== n.arity && Vn(t, \"length\", {\n value: n.arity\n });\n try {\n n && Nn(n, \"constructor\") && n.constructor ? Hn && Vn(t, \"prototype\", {\n writable: !1\n }) : t.prototype && (t.prototype = void 0);\n } catch (t) {}\n var i = Wn(t);\n return Nn(i, \"source\") || (i.source = Xn(Zn, \"string\" == typeof e ? e : \"\")), t;\n };\n Function.prototype.toString = Qn(function () {\n return Pn(this) && zn(this).source || Gn(this);\n }, \"toString\");\n var ti = en.exports,\n ei = J,\n ni = Ie,\n ii = ti,\n ui = Mt,\n ri = function (t, e, n, i) {\n i || (i = {});\n var u = i.enumerable,\n r = void 0 !== i.name ? i.name : e;\n if (ei(n) && ii(n, r, i), i.global) u ? t[e] = n : ui(e, n);else {\n try {\n i.unsafe ? t[e] && (u = !0) : delete t[e];\n } catch (t) {}\n u ? t[e] = n : ni.f(t, e, {\n value: n,\n enumerable: !1,\n configurable: !i.nonConfigurable,\n writable: !i.nonWritable\n });\n }\n return t;\n },\n oi = {},\n si = Math.ceil,\n ai = Math.floor,\n li = Math.trunc || function (t) {\n var e = +t;\n return (e > 0 ? ai : si)(e);\n },\n ci = function (t) {\n var e = +t;\n return e != e || 0 === e ? 0 : li(e);\n },\n hi = ci,\n fi = Math.max,\n di = Math.min,\n pi = function (t, e) {\n var n = hi(t);\n return n < 0 ? fi(n + e, 0) : di(n, e);\n },\n vi = ci,\n gi = Math.min,\n Ei = function (t) {\n return t > 0 ? gi(vi(t), 9007199254740991) : 0;\n },\n bi = Ei,\n yi = function (t) {\n return bi(t.length);\n },\n mi = V,\n Ai = pi,\n Ci = yi,\n Fi = function (t) {\n return function (e, n, i) {\n var u,\n r = mi(e),\n o = Ci(r),\n s = Ai(i, o);\n if (t && n != n) {\n for (; o > s;) if ((u = r[s++]) != u) return !0;\n } else for (; o > s; s++) if ((t || s in r) && r[s] === n) return t || s || 0;\n return !t && -1;\n };\n },\n Si = {\n includes: Fi(!0),\n indexOf: Fi(!1)\n },\n ki = Yt,\n Di = V,\n xi = Si.indexOf,\n wi = Cn,\n Oi = B([].push),\n $i = function (t, e) {\n var n,\n i = Di(t),\n u = 0,\n r = [];\n for (n in i) !ki(wi, n) && ki(i, n) && Oi(r, n);\n for (; e.length > u;) ki(i, n = e[u++]) && (~xi(r, n) || Oi(r, n));\n return r;\n },\n Bi = [\"constructor\", \"hasOwnProperty\", \"isPrototypeOf\", \"propertyIsEnumerable\", \"toLocaleString\", \"toString\", \"valueOf\"],\n ji = $i,\n Ti = Bi.concat(\"length\", \"prototype\");\n oi.f = Object.getOwnPropertyNames || function (t) {\n return ji(t, Ti);\n };\n var Li = {};\n Li.f = Object.getOwnPropertySymbols;\n var Ii = it,\n Ri = oi,\n _i = Li,\n Mi = Ne,\n Pi = B([].concat),\n Ni = Ii(\"Reflect\", \"ownKeys\") || function (t) {\n var e = Ri.f(Mi(t)),\n n = _i.f;\n return n ? Pi(e, n(t)) : e;\n },\n Hi = Yt,\n Ui = Ni,\n Gi = d,\n Wi = Ie,\n zi = p,\n Ki = J,\n Vi = /#|\\.prototype\\./,\n qi = function (t, e) {\n var n = Xi[Yi(t)];\n return n == Zi || n != Ji && (Ki(e) ? zi(e) : !!e);\n },\n Yi = qi.normalize = function (t) {\n return String(t).replace(Vi, \".\").toLowerCase();\n },\n Xi = qi.data = {},\n Ji = qi.NATIVE = \"N\",\n Zi = qi.POLYFILL = \"P\",\n Qi = qi,\n tu = f,\n eu = d.f,\n nu = tn,\n iu = ri,\n uu = Mt,\n ru = function (t, e, n) {\n for (var i = Ui(e), u = Wi.f, r = Gi.f, o = 0; o < i.length; o++) {\n var s = i[o];\n Hi(t, s) || n && Hi(n, s) || u(t, s, r(e, s));\n }\n },\n ou = Qi,\n su = function (t, e) {\n var n,\n i,\n u,\n r,\n o,\n s = t.target,\n a = t.global,\n l = t.stat;\n if (n = a ? tu : l ? tu[s] || uu(s, {}) : (tu[s] || {}).prototype) for (i in e) {\n if (r = e[i], u = t.dontCallGetSet ? (o = eu(n, i)) && o.value : n[i], !ou(a ? i : s + (l ? \".\" : \"#\") + i, t.forced) && void 0 !== u) {\n if (typeof r == typeof u) continue;\n ru(r, u);\n }\n (t.sham || u && u.sham) && nu(r, \"sham\", !0), iu(n, i, r, t);\n }\n },\n au = {};\n au[le(\"toStringTag\")] = \"z\";\n var lu = \"[object z]\" === String(au),\n cu = lu,\n hu = J,\n fu = I,\n du = le(\"toStringTag\"),\n pu = Object,\n vu = \"Arguments\" == fu(function () {\n return arguments;\n }()),\n gu = cu ? fu : function (t) {\n var e, n, i;\n return void 0 === t ? \"Undefined\" : null === t ? \"Null\" : \"string\" == typeof (n = function (t, e) {\n try {\n return t[e];\n } catch (t) {}\n }(e = pu(t), du)) ? n : vu ? fu(e) : \"Object\" == (i = fu(e)) && hu(e.callee) ? \"Arguments\" : i;\n },\n Eu = gu,\n bu = String,\n yu = function (t) {\n if (\"Symbol\" === Eu(t)) throw TypeError(\"Cannot convert a Symbol value to a string\");\n return bu(t);\n },\n mu = Ne,\n Au = function () {\n var t = mu(this),\n e = \"\";\n return t.hasIndices && (e += \"d\"), t.global && (e += \"g\"), t.ignoreCase && (e += \"i\"), t.multiline && (e += \"m\"), t.dotAll && (e += \"s\"), t.unicode && (e += \"u\"), t.unicodeSets && (e += \"v\"), t.sticky && (e += \"y\"), e;\n },\n Cu = p,\n Fu = f.RegExp,\n Su = Cu(function () {\n var t = Fu(\"a\", \"y\");\n return t.lastIndex = 2, null != t.exec(\"abcd\");\n }),\n ku = Su || Cu(function () {\n return !Fu(\"a\", \"y\").sticky;\n }),\n Du = {\n BROKEN_CARET: Su || Cu(function () {\n var t = Fu(\"^r\", \"gy\");\n return t.lastIndex = 2, null != t.exec(\"str\");\n }),\n MISSED_STICKY: ku,\n UNSUPPORTED_Y: Su\n },\n xu = {},\n wu = $i,\n Ou = Bi,\n $u = Object.keys || function (t) {\n return wu(t, Ou);\n },\n Bu = v,\n ju = Re,\n Tu = Ie,\n Lu = Ne,\n Iu = V,\n Ru = $u;\n xu.f = Bu && !ju ? Object.defineProperties : function (t, e) {\n Lu(t);\n for (var n, i = Iu(e), u = Ru(e), r = u.length, o = 0; r > o;) Tu.f(t, n = u[o++], i[n]);\n return t;\n };\n var _u,\n Mu = it(\"document\", \"documentElement\"),\n Pu = Ne,\n Nu = xu,\n Hu = Bi,\n Uu = Cn,\n Gu = Mu,\n Wu = Fe,\n zu = \"prototype\",\n Ku = \"script\",\n Vu = An(\"IE_PROTO\"),\n qu = function () {},\n Yu = function (t) {\n return \"<\" + Ku + \">\" + t + \"</\" + Ku + \">\";\n },\n Xu = function (t) {\n t.write(Yu(\"\")), t.close();\n var e = t.parentWindow.Object;\n return t = null, e;\n },\n Ju = function () {\n try {\n _u = new ActiveXObject(\"htmlfile\");\n } catch (t) {}\n var t, e, n;\n Ju = \"undefined\" != typeof document ? document.domain && _u ? Xu(_u) : (e = Wu(\"iframe\"), n = \"java\" + Ku + \":\", e.style.display = \"none\", Gu.appendChild(e), e.src = String(n), (t = e.contentWindow.document).open(), t.write(Yu(\"document.F=Object\")), t.close(), t.F) : Xu(_u);\n for (var i = Hu.length; i--;) delete Ju[zu][Hu[i]];\n return Ju();\n };\n Uu[Vu] = !0;\n var Zu,\n Qu,\n tr = Object.create || function (t, e) {\n var n;\n return null !== t ? (qu[zu] = Pu(t), n = new qu(), qu[zu] = null, n[Vu] = t) : n = Ju(), void 0 === e ? n : Nu.f(n, e);\n },\n er = p,\n nr = f.RegExp,\n ir = er(function () {\n var t = nr(\".\", \"s\");\n return !(t.dotAll && t.exec(\"\\n\") && \"s\" === t.flags);\n }),\n ur = p,\n rr = f.RegExp,\n or = ur(function () {\n var t = rr(\"(?<a>b)\", \"g\");\n return \"b\" !== t.exec(\"b\").groups.a || \"bc\" !== \"b\".replace(t, \"$<a>c\");\n }),\n sr = y,\n ar = B,\n lr = yu,\n cr = Au,\n hr = Du,\n fr = tr,\n dr = Rn.get,\n pr = ir,\n vr = or,\n gr = Gt(\"native-string-replace\", String.prototype.replace),\n Er = RegExp.prototype.exec,\n br = Er,\n yr = ar(\"\".charAt),\n mr = ar(\"\".indexOf),\n Ar = ar(\"\".replace),\n Cr = ar(\"\".slice),\n Fr = (Qu = /b*/g, sr(Er, Zu = /a/, \"a\"), sr(Er, Qu, \"a\"), 0 !== Zu.lastIndex || 0 !== Qu.lastIndex),\n Sr = hr.BROKEN_CARET,\n kr = void 0 !== /()??/.exec(\"\")[1];\n (Fr || kr || Sr || pr || vr) && (br = function (t) {\n var e,\n n,\n i,\n u,\n r,\n o,\n s,\n a = this,\n l = dr(a),\n c = lr(t),\n h = l.raw;\n if (h) return h.lastIndex = a.lastIndex, e = sr(br, h, c), a.lastIndex = h.lastIndex, e;\n var f = l.groups,\n d = Sr && a.sticky,\n p = sr(cr, a),\n v = a.source,\n g = 0,\n E = c;\n if (d && (p = Ar(p, \"y\", \"\"), -1 === mr(p, \"g\") && (p += \"g\"), E = Cr(c, a.lastIndex), a.lastIndex > 0 && (!a.multiline || a.multiline && \"\\n\" !== yr(c, a.lastIndex - 1)) && (v = \"(?: \" + v + \")\", E = \" \" + E, g++), n = new RegExp(\"^(?:\" + v + \")\", p)), kr && (n = new RegExp(\"^\" + v + \"$(?!\\\\s)\", p)), Fr && (i = a.lastIndex), u = sr(Er, d ? n : a, E), d ? u ? (u.input = Cr(u.input, g), u[0] = Cr(u[0], g), u.index = a.lastIndex, a.lastIndex += u[0].length) : a.lastIndex = 0 : Fr && u && (a.lastIndex = a.global ? u.index + u[0].length : i), kr && u && u.length > 1 && sr(gr, u[0], n, function () {\n for (r = 1; r < arguments.length - 2; r++) void 0 === arguments[r] && (u[r] = void 0);\n }), u && f) for (u.groups = o = fr(null), r = 0; r < f.length; r++) o[(s = f[r])[0]] = u[s[1]];\n return u;\n });\n var Dr = br;\n su({\n target: \"RegExp\",\n proto: !0,\n forced: /./.exec !== Dr\n }, {\n exec: Dr\n });\n var xr = I,\n wr = B,\n Or = function (t) {\n if (\"Function\" === xr(t)) return wr(t);\n },\n $r = Or,\n Br = ri,\n jr = Dr,\n Tr = p,\n Lr = le,\n Ir = tn,\n Rr = Lr(\"species\"),\n _r = RegExp.prototype,\n Mr = function (t, e, n, i) {\n var u = Lr(t),\n r = !Tr(function () {\n var e = {};\n return e[u] = function () {\n return 7;\n }, 7 != \"\"[t](e);\n }),\n o = r && !Tr(function () {\n var e = !1,\n n = /a/;\n return \"split\" === t && ((n = {}).constructor = {}, n.constructor[Rr] = function () {\n return n;\n }, n.flags = \"\", n[u] = /./[u]), n.exec = function () {\n return e = !0, null;\n }, n[u](\"\"), !e;\n });\n if (!r || !o || n) {\n var s = $r(/./[u]),\n a = e(u, \"\"[t], function (t, e, n, i, u) {\n var o = $r(t),\n a = e.exec;\n return a === jr || a === _r.exec ? r && !u ? {\n done: !0,\n value: s(e, n, i)\n } : {\n done: !0,\n value: o(n, e, i)\n } : {\n done: !1\n };\n });\n Br(String.prototype, t, a[0]), Br(_r, u, a[1]);\n }\n i && Ir(_r[u], \"sham\", !0);\n },\n Pr = Object.is || function (t, e) {\n return t === e ? 0 !== t || 1 / t == 1 / e : t != t && e != e;\n },\n Nr = y,\n Hr = Ne,\n Ur = J,\n Gr = I,\n Wr = Dr,\n zr = TypeError,\n Kr = function (t, e) {\n var n = t.exec;\n if (Ur(n)) {\n var i = Nr(n, t, e);\n return null !== i && Hr(i), i;\n }\n if (\"RegExp\" === Gr(t)) return Nr(Wr, t, e);\n throw zr(\"RegExp#exec called on incompatible receiver\");\n },\n Vr = y,\n qr = Ne,\n Yr = H,\n Xr = W,\n Jr = Pr,\n Zr = yu,\n Qr = $t,\n to = Kr;\n Mr(\"search\", function (t, e, n) {\n return [function (e) {\n var n = Xr(this),\n i = Yr(e) ? void 0 : Qr(e, t);\n return i ? Vr(i, e, n) : new RegExp(e)[t](Zr(n));\n }, function (t) {\n var i = qr(this),\n u = Zr(t),\n r = n(e, i, u);\n if (r.done) return r.value;\n var o = i.lastIndex;\n Jr(o, 0) || (i.lastIndex = 0);\n var s = to(i, u);\n return Jr(i.lastIndex, o) || (i.lastIndex = o), null === s ? -1 : s.index;\n }];\n });\n var eo = le,\n no = tr,\n io = Ie.f,\n uo = eo(\"unscopables\"),\n ro = Array.prototype;\n null == ro[uo] && io(ro, uo, {\n configurable: !0,\n value: no(null)\n });\n var oo = function (t) {\n ro[uo][t] = !0;\n },\n so = Si.includes,\n ao = oo;\n su({\n target: \"Array\",\n proto: !0,\n forced: p(function () {\n return !Array(1).includes();\n })\n }, {\n includes: function (t) {\n return so(this, t, arguments.length > 1 ? arguments[1] : void 0);\n }\n }), ao(\"includes\");\n var lo = tt,\n co = I,\n ho = le(\"match\"),\n fo = function (t) {\n var e;\n return lo(t) && (void 0 !== (e = t[ho]) ? !!e : \"RegExp\" == co(t));\n },\n po = fo,\n vo = TypeError,\n go = le(\"match\"),\n Eo = su,\n bo = function (t) {\n if (po(t)) throw vo(\"The method doesn't accept regular expressions\");\n return t;\n },\n yo = W,\n mo = yu,\n Ao = function (t) {\n var e = /./;\n try {\n \"/./\"[t](e);\n } catch (n) {\n try {\n return e[go] = !1, \"/./\"[t](e);\n } catch (t) {}\n }\n return !1;\n },\n Co = B(\"\".indexOf);\n Eo({\n target: \"String\",\n proto: !0,\n forced: !Ao(\"includes\")\n }, {\n includes: function (t) {\n return !!~Co(mo(yo(this)), mo(bo(t)), arguments.length > 1 ? arguments[1] : void 0);\n }\n });\n var Fo = \"\\t\\n\\v\\f\\r    â€â€‚         âŸã€€\\u2028\\u2029\\ufeff\",\n So = W,\n ko = yu,\n Do = Fo,\n xo = B(\"\".replace),\n wo = RegExp(\"^[\" + Do + \"]+\"),\n Oo = RegExp(\"(^|[^\" + Do + \"])[\" + Do + \"]+$\"),\n $o = function (t) {\n return function (e) {\n var n = ko(So(e));\n return 1 & t && (n = xo(n, wo, \"\")), 2 & t && (n = xo(n, Oo, \"$1\")), n;\n };\n },\n Bo = {\n start: $o(1),\n end: $o(2),\n trim: $o(3)\n },\n jo = an.PROPER,\n To = p,\n Lo = Fo,\n Io = Bo.trim;\n su({\n target: \"String\",\n proto: !0,\n forced: function (t) {\n return To(function () {\n return !!Lo[t]() || \"â€‹Â…á Ž\" !== \"â€‹Â…á Ž\"[t]() || jo && Lo[t].name !== t;\n });\n }(\"trim\")\n }, {\n trim: function () {\n return Io(this);\n }\n });\n var Ro = I,\n _o = Array.isArray || function (t) {\n return \"Array\" == Ro(t);\n },\n Mo = TypeError,\n Po = ye,\n No = Ie,\n Ho = D,\n Uo = function (t, e, n) {\n var i = Po(e);\n i in t ? No.f(t, i, Ho(0, n)) : t[i] = n;\n },\n Go = B,\n Wo = p,\n zo = J,\n Ko = gu,\n Vo = vn,\n qo = function () {},\n Yo = [],\n Xo = it(\"Reflect\", \"construct\"),\n Jo = /^\\s*(?:class|function)\\b/,\n Zo = Go(Jo.exec),\n Qo = !Jo.exec(qo),\n ts = function (t) {\n if (!zo(t)) return !1;\n try {\n return Xo(qo, Yo, t), !0;\n } catch (t) {\n return !1;\n }\n },\n es = function (t) {\n if (!zo(t)) return !1;\n switch (Ko(t)) {\n case \"AsyncFunction\":\n case \"GeneratorFunction\":\n case \"AsyncGeneratorFunction\":\n return !1;\n }\n try {\n return Qo || !!Zo(Jo, Vo(t));\n } catch (t) {\n return !0;\n }\n };\n es.sham = !0;\n var ns = !Xo || Wo(function () {\n var t;\n return ts(ts.call) || !ts(Object) || !ts(function () {\n t = !0;\n }) || t;\n }) ? es : ts,\n is = _o,\n us = ns,\n rs = tt,\n os = le(\"species\"),\n ss = Array,\n as = function (t) {\n var e;\n return is(t) && (e = t.constructor, (us(e) && (e === ss || is(e.prototype)) || rs(e) && null === (e = e[os])) && (e = void 0)), void 0 === e ? ss : e;\n },\n ls = function (t, e) {\n return new (as(t))(0 === e ? 0 : e);\n },\n cs = p,\n hs = ht,\n fs = le(\"species\"),\n ds = function (t) {\n return hs >= 51 || !cs(function () {\n var e = [];\n return (e.constructor = {})[fs] = function () {\n return {\n foo: 1\n };\n }, 1 !== e[t](Boolean).foo;\n });\n },\n ps = su,\n vs = p,\n gs = _o,\n Es = tt,\n bs = Kt,\n ys = yi,\n ms = function (t) {\n if (t > 9007199254740991) throw Mo(\"Maximum allowed index exceeded\");\n return t;\n },\n As = Uo,\n Cs = ls,\n Fs = ds,\n Ss = ht,\n ks = le(\"isConcatSpreadable\"),\n Ds = Ss >= 51 || !vs(function () {\n var t = [];\n return t[ks] = !1, t.concat()[0] !== t;\n }),\n xs = function (t) {\n if (!Es(t)) return !1;\n var e = t[ks];\n return void 0 !== e ? !!e : gs(t);\n };\n ps({\n target: \"Array\",\n proto: !0,\n arity: 1,\n forced: !Ds || !Fs(\"concat\")\n }, {\n concat: function (t) {\n var e,\n n,\n i,\n u,\n r,\n o = bs(this),\n s = Cs(o, 0),\n a = 0;\n for (e = -1, i = arguments.length; e < i; e++) if (xs(r = -1 === e ? o : arguments[e])) for (u = ys(r), ms(a + u), n = 0; n < u; n++, a++) n in r && As(s, a, r[n]);else ms(a + 1), As(s, a++, r);\n return s.length = a, s;\n }\n });\n var ws = v,\n Os = B,\n $s = y,\n Bs = p,\n js = $u,\n Ts = Li,\n Ls = m,\n Is = Kt,\n Rs = N,\n _s = Object.assign,\n Ms = Object.defineProperty,\n Ps = Os([].concat),\n Ns = !_s || Bs(function () {\n if (ws && 1 !== _s({\n b: 1\n }, _s(Ms({}, \"a\", {\n enumerable: !0,\n get: function () {\n Ms(this, \"b\", {\n value: 3,\n enumerable: !1\n });\n }\n }), {\n b: 2\n })).b) return !0;\n var t = {},\n e = {},\n n = Symbol(),\n i = \"abcdefghijklmnopqrst\";\n return t[n] = 7, i.split(\"\").forEach(function (t) {\n e[t] = t;\n }), 7 != _s({}, t)[n] || js(_s({}, e)).join(\"\") != i;\n }) ? function (t, e) {\n for (var n = Is(t), i = arguments.length, u = 1, r = Ts.f, o = Ls.f; i > u;) for (var s, a = Rs(arguments[u++]), l = r ? Ps(js(a), r(a)) : js(a), c = l.length, h = 0; c > h;) s = l[h++], ws && !$s(o, a, s) || (n[s] = a[s]);\n return n;\n } : _s,\n Hs = Ns;\n su({\n target: \"Object\",\n stat: !0,\n arity: 2,\n forced: Object.assign !== Hs\n }, {\n assign: Hs\n });\n var Us = {\n name: \"\",\n placeholder: \"\",\n classes: \"\",\n classPrefix: \"\",\n data: void 0,\n locale: void 0,\n selectAll: !0,\n single: void 0,\n singleRadio: !1,\n multiple: !1,\n hideOptgroupCheckboxes: !1,\n multipleWidth: 80,\n width: void 0,\n size: void 0,\n dropWidth: void 0,\n maxHeight: 250,\n maxHeightUnit: \"px\",\n position: \"bottom\",\n displayValues: !1,\n displayTitle: !1,\n displayDelimiter: \", \",\n minimumCountSelected: 3,\n ellipsis: !1,\n isOpen: !1,\n keepOpen: !1,\n openOnHover: !1,\n container: null,\n filter: !1,\n filterGroup: !1,\n filterPlaceholder: \"\",\n filterAcceptOnEnter: !1,\n filterByDataLength: void 0,\n customFilter: function (t) {\n var e = t.text,\n n = t.label,\n i = t.search;\n return (n || e).includes(i);\n },\n showClear: !1,\n animate: void 0,\n styler: function () {\n return !1;\n },\n textTemplate: function (t) {\n return t[0].innerHTML.trim();\n },\n labelTemplate: function (t) {\n return t[0].getAttribute(\"label\");\n },\n onOpen: function () {\n return !1;\n },\n onClose: function () {\n return !1;\n },\n onCheckAll: function () {\n return !1;\n },\n onUncheckAll: function () {\n return !1;\n },\n onFocus: function () {\n return !1;\n },\n onBlur: function () {\n return !1;\n },\n onOptgroupClick: function () {\n return !1;\n },\n onBeforeClick: function () {\n return !0;\n },\n onClick: function () {\n return !1;\n },\n onFilter: function () {\n return !1;\n },\n onClear: function () {\n return !1;\n },\n onAfterCreate: function () {\n return !1;\n }\n },\n Gs = {\n formatSelectAll: function () {\n return \"[Select all]\";\n },\n formatAllSelected: function () {\n return \"All selected\";\n },\n formatCountSelected: function (t, e) {\n return \"\".concat(t, \" of \").concat(e, \" selected\");\n },\n formatNoMatchesFound: function () {\n return \"No matches found\";\n }\n };\n Object.assign(Us, Gs);\n var Ws = {\n VERSION: \"1.7.0\",\n BLOCK_ROWS: 500,\n CLUSTER_BLOCKS: 4,\n DEFAULTS: Us,\n METHODS: [\"getOptions\", \"refreshOptions\", \"getData\", \"getSelects\", \"setSelects\", \"enable\", \"disable\", \"open\", \"close\", \"check\", \"uncheck\", \"checkAll\", \"uncheckAll\", \"checkInvert\", \"focus\", \"blur\", \"refresh\", \"destroy\"],\n LOCALES: {\n en: Gs,\n \"en-US\": Gs\n }\n },\n zs = g,\n Ks = Function.prototype,\n Vs = Ks.apply,\n qs = Ks.call,\n Ys = \"object\" == typeof Reflect && Reflect.apply || (zs ? qs.bind(Vs) : function () {\n return qs.apply(Vs, arguments);\n }),\n Xs = ns,\n Js = Ft,\n Zs = TypeError,\n Qs = Ne,\n ta = function (t) {\n if (Xs(t)) return t;\n throw Zs(Js(t) + \" is not a constructor\");\n },\n ea = H,\n na = le(\"species\"),\n ia = B,\n ua = ci,\n ra = yu,\n oa = W,\n sa = ia(\"\".charAt),\n aa = ia(\"\".charCodeAt),\n la = ia(\"\".slice),\n ca = function (t) {\n return function (e, n) {\n var i,\n u,\n r = ra(oa(e)),\n o = ua(n),\n s = r.length;\n return o < 0 || o >= s ? t ? \"\" : void 0 : (i = aa(r, o)) < 55296 || i > 56319 || o + 1 === s || (u = aa(r, o + 1)) < 56320 || u > 57343 ? t ? sa(r, o) : i : t ? la(r, o, o + 2) : u - 56320 + (i - 55296 << 10) + 65536;\n };\n },\n ha = {\n codeAt: ca(!1),\n charAt: ca(!0)\n }.charAt,\n fa = function (t, e, n) {\n return e + (n ? ha(t, e).length : 1);\n },\n da = pi,\n pa = yi,\n va = Uo,\n ga = Array,\n Ea = Math.max,\n ba = Ys,\n ya = y,\n ma = B,\n Aa = Mr,\n Ca = Ne,\n Fa = H,\n Sa = fo,\n ka = W,\n Da = function (t, e) {\n var n,\n i = Qs(t).constructor;\n return void 0 === i || ea(n = Qs(i)[na]) ? e : ta(n);\n },\n xa = fa,\n wa = Ei,\n Oa = yu,\n $a = $t,\n Ba = function (t, e, n) {\n for (var i = pa(t), u = da(e, i), r = da(void 0 === n ? i : n, i), o = ga(Ea(r - u, 0)), s = 0; u < r; u++, s++) va(o, s, t[u]);\n return o.length = s, o;\n },\n ja = Kr,\n Ta = Dr,\n La = p,\n Ia = Du.UNSUPPORTED_Y,\n Ra = 4294967295,\n _a = Math.min,\n Ma = [].push,\n Pa = ma(/./.exec),\n Na = ma(Ma),\n Ha = ma(\"\".slice),\n Ua = !La(function () {\n var t = /(?:)/,\n e = t.exec;\n t.exec = function () {\n return e.apply(this, arguments);\n };\n var n = \"ab\".split(t);\n return 2 !== n.length || \"a\" !== n[0] || \"b\" !== n[1];\n });\n Aa(\"split\", function (t, e, n) {\n var i;\n return i = \"c\" == \"abbc\".split(/(b)*/)[1] || 4 != \"test\".split(/(?:)/, -1).length || 2 != \"ab\".split(/(?:ab)*/).length || 4 != \".\".split(/(.?)(.?)/).length || \".\".split(/()()/).length > 1 || \"\".split(/.?/).length ? function (t, n) {\n var i = Oa(ka(this)),\n u = void 0 === n ? Ra : n >>> 0;\n if (0 === u) return [];\n if (void 0 === t) return [i];\n if (!Sa(t)) return ya(e, i, t, u);\n for (var r, o, s, a = [], l = (t.ignoreCase ? \"i\" : \"\") + (t.multiline ? \"m\" : \"\") + (t.unicode ? \"u\" : \"\") + (t.sticky ? \"y\" : \"\"), c = 0, h = new RegExp(t.source, l + \"g\"); (r = ya(Ta, h, i)) && !((o = h.lastIndex) > c && (Na(a, Ha(i, c, r.index)), r.length > 1 && r.index < i.length && ba(Ma, a, Ba(r, 1)), s = r[0].length, c = o, a.length >= u));) h.lastIndex === r.index && h.lastIndex++;\n return c === i.length ? !s && Pa(h, \"\") || Na(a, \"\") : Na(a, Ha(i, c)), a.length > u ? Ba(a, 0, u) : a;\n } : \"0\".split(void 0, 0).length ? function (t, n) {\n return void 0 === t && 0 === n ? [] : ya(e, this, t, n);\n } : e, [function (e, n) {\n var u = ka(this),\n r = Fa(e) ? void 0 : $a(e, t);\n return r ? ya(r, e, u, n) : ya(i, Oa(u), e, n);\n }, function (t, u) {\n var r = Ca(this),\n o = Oa(t),\n s = n(i, r, o, u, i !== e);\n if (s.done) return s.value;\n var a = Da(r, RegExp),\n l = r.unicode,\n c = (r.ignoreCase ? \"i\" : \"\") + (r.multiline ? \"m\" : \"\") + (r.unicode ? \"u\" : \"\") + (Ia ? \"g\" : \"y\"),\n h = new a(Ia ? \"^(?:\" + r.source + \")\" : r, c),\n f = void 0 === u ? Ra : u >>> 0;\n if (0 === f) return [];\n if (0 === o.length) return null === ja(h, o) ? [o] : [];\n for (var d = 0, p = 0, v = []; p < o.length;) {\n h.lastIndex = Ia ? 0 : p;\n var g,\n E = ja(h, Ia ? Ha(o, p) : o);\n if (null === E || (g = _a(wa(h.lastIndex + (Ia ? p : 0)), o.length)) === d) p = xa(o, p, l);else {\n if (Na(v, Ha(o, d, p)), v.length === f) return v;\n for (var b = 1; b <= E.length - 1; b++) if (Na(v, E[b]), v.length === f) return v;\n p = d = g;\n }\n }\n return Na(v, Ha(o, d)), v;\n }];\n }, !Ua, Ia);\n var Ga = p,\n Wa = function (t, e) {\n var n = [][t];\n return !!n && Ga(function () {\n n.call(null, e || function () {\n return 1;\n }, 1);\n });\n },\n za = su,\n Ka = N,\n Va = V,\n qa = Wa,\n Ya = B([].join);\n za({\n target: \"Array\",\n proto: !0,\n forced: Ka != Object || !qa(\"join\", \",\")\n }, {\n join: function (t) {\n return Ya(Va(this), void 0 === t ? \",\" : t);\n }\n });\n var Xa = ti,\n Ja = Ie,\n Za = v,\n Qa = an.EXISTS,\n tl = B,\n el = function (t, e, n) {\n return n.get && Xa(n.get, e, {\n getter: !0\n }), n.set && Xa(n.set, e, {\n setter: !0\n }), Ja.f(t, e, n);\n },\n nl = Function.prototype,\n il = tl(nl.toString),\n ul = /function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/,\n rl = tl(ul.exec);\n Za && !Qa && el(nl, \"name\", {\n configurable: !0,\n get: function () {\n try {\n return rl(ul, il(this))[1];\n } catch (t) {\n return \"\";\n }\n }\n });\n var ol = xt,\n sl = g,\n al = Or(Or.bind),\n ll = function (t, e) {\n return ol(t), void 0 === e ? t : sl ? al(t, e) : function () {\n return t.apply(e, arguments);\n };\n },\n cl = N,\n hl = Kt,\n fl = yi,\n dl = ls,\n pl = B([].push),\n vl = function (t) {\n var e = 1 == t,\n n = 2 == t,\n i = 3 == t,\n u = 4 == t,\n r = 6 == t,\n o = 7 == t,\n s = 5 == t || r;\n return function (a, l, c, h) {\n for (var f, d, p = hl(a), v = cl(p), g = ll(l, c), E = fl(v), b = 0, y = h || dl, m = e ? y(a, E) : n || o ? y(a, 0) : void 0; E > b; b++) if ((s || b in v) && (d = g(f = v[b], b, p), t)) if (e) m[b] = d;else if (d) switch (t) {\n case 3:\n return !0;\n case 5:\n return f;\n case 6:\n return b;\n case 2:\n pl(m, f);\n } else switch (t) {\n case 4:\n return !1;\n case 7:\n pl(m, f);\n }\n return r ? -1 : i || u ? u : m;\n };\n },\n gl = {\n forEach: vl(0),\n map: vl(1),\n filter: vl(2),\n some: vl(3),\n every: vl(4),\n find: vl(5),\n findIndex: vl(6),\n filterReject: vl(7)\n },\n El = su,\n bl = gl.find,\n yl = oo,\n ml = \"find\",\n Al = !0;\n ml in [] && Array(1)[ml](function () {\n Al = !1;\n }), El({\n target: \"Array\",\n proto: !0,\n forced: Al\n }, {\n find: function (t) {\n return bl(this, t, arguments.length > 1 ? arguments[1] : void 0);\n }\n }), yl(ml);\n var Cl = gu,\n Fl = lu ? {}.toString : function () {\n return \"[object \" + Cl(this) + \"]\";\n };\n lu || ri(Object.prototype, \"toString\", Fl, {\n unsafe: !0\n });\n var Sl = gl.map;\n su({\n target: \"Array\",\n proto: !0,\n forced: !ds(\"map\")\n }, {\n map: function (t) {\n return Sl(this, t, arguments.length > 1 ? arguments[1] : void 0);\n }\n });\n var kl = v,\n Dl = B,\n xl = $u,\n wl = V,\n Ol = Dl(m.f),\n $l = Dl([].push),\n Bl = function (t) {\n return function (e) {\n for (var n, i = wl(e), u = xl(i), r = u.length, o = 0, s = []; r > o;) n = u[o++], kl && !Ol(i, n) || $l(s, t ? [n, i[n]] : i[n]);\n return s;\n };\n },\n jl = {\n entries: Bl(!0),\n values: Bl(!1)\n }.entries;\n su({\n target: \"Object\",\n stat: !0\n }, {\n entries: function (t) {\n return jl(t);\n }\n });\n var Tl = Kt,\n Ll = $u;\n su({\n target: \"Object\",\n stat: !0,\n forced: p(function () {\n Ll(1);\n })\n }, {\n keys: function (t) {\n return Ll(Tl(t));\n }\n });\n var Il = gl.filter;\n su({\n target: \"Array\",\n proto: !0,\n forced: !ds(\"filter\")\n }, {\n filter: function (t) {\n return Il(this, t, arguments.length > 1 ? arguments[1] : void 0);\n }\n });\n var Rl = Fe(\"span\").classList,\n _l = Rl && Rl.constructor && Rl.constructor.prototype,\n Ml = _l === Object.prototype ? void 0 : _l,\n Pl = gl.forEach,\n Nl = Wa(\"forEach\") ? [].forEach : function (t) {\n return Pl(this, t, arguments.length > 1 ? arguments[1] : void 0);\n },\n Hl = f,\n Ul = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n },\n Gl = Ml,\n Wl = Nl,\n zl = tn,\n Kl = function (t) {\n if (t && t.forEach !== Wl) try {\n zl(t, \"forEach\", Wl);\n } catch (e) {\n t.forEach = Wl;\n }\n };\n for (var Vl in Ul) Ul[Vl] && Kl(Hl[Vl] && Hl[Vl].prototype);\n Kl(Gl);\n var ql = B([].slice),\n Yl = su,\n Xl = _o,\n Jl = ns,\n Zl = tt,\n Ql = pi,\n tc = yi,\n ec = V,\n nc = Uo,\n ic = le,\n uc = ql,\n rc = ds(\"slice\"),\n oc = ic(\"species\"),\n sc = Array,\n ac = Math.max;\n Yl({\n target: \"Array\",\n proto: !0,\n forced: !rc\n }, {\n slice: function (t, e) {\n var n,\n i,\n u,\n r = ec(this),\n o = tc(r),\n s = Ql(t, o),\n a = Ql(void 0 === e ? o : e, o);\n if (Xl(r) && (n = r.constructor, (Jl(n) && (n === sc || Xl(n.prototype)) || Zl(n) && null === (n = n[oc])) && (n = void 0), n === sc || void 0 === n)) return uc(r, s, a);\n for (i = new (void 0 === n ? sc : n)(ac(a - s, 0)), u = 0; s < a; s++, u++) s in r && nc(i, u, r[s]);\n return i.length = u, i;\n }\n });\n var lc = y,\n cc = Yt,\n hc = ut,\n fc = Au,\n dc = RegExp.prototype,\n pc = an.PROPER,\n vc = ri,\n gc = Ne,\n Ec = yu,\n bc = p,\n yc = function (t) {\n var e = t.flags;\n return void 0 !== e || \"flags\" in dc || cc(t, \"flags\") || !hc(dc, t) ? e : lc(fc, t);\n },\n mc = \"toString\",\n Ac = RegExp.prototype[mc],\n Cc = bc(function () {\n return \"/a/b\" != Ac.call({\n source: \"a\",\n flags: \"b\"\n });\n }),\n Fc = pc && Ac.name != mc;\n (Cc || Fc) && vc(RegExp.prototype, mc, function () {\n var t = gc(this);\n return \"/\" + Ec(t.source) + \"/\" + Ec(yc(t));\n }, {\n unsafe: !0\n });\n var Sc = function () {\n function t(e) {\n var i = this;\n n(this, t), this.rows = e.rows, this.scrollEl = e.scrollEl, this.contentEl = e.contentEl, this.callback = e.callback, this.cache = {}, this.scrollTop = this.scrollEl.scrollTop, this.initDOM(this.rows), this.scrollEl.scrollTop = this.scrollTop, this.lastCluster = 0;\n var u = function () {\n i.lastCluster !== (i.lastCluster = i.getNum()) && (i.initDOM(i.rows), i.callback());\n };\n this.scrollEl.addEventListener(\"scroll\", u, !1), this.destroy = function () {\n i.contentEl.innerHtml = \"\", i.scrollEl.removeEventListener(\"scroll\", u, !1);\n };\n }\n return u(t, [{\n key: \"initDOM\",\n value: function (t) {\n void 0 === this.clusterHeight && (this.cache.scrollTop = this.scrollEl.scrollTop, this.cache.data = this.contentEl.innerHTML = t[0] + t[0] + t[0], this.getRowsHeight(t));\n var e = this.initData(t, this.getNum()),\n n = e.rows.join(\"\"),\n i = this.checkChanges(\"data\", n),\n u = this.checkChanges(\"top\", e.topOffset),\n r = this.checkChanges(\"bottom\", e.bottomOffset),\n o = [];\n i && u ? (e.topOffset && o.push(this.getExtra(\"top\", e.topOffset)), o.push(n), e.bottomOffset && o.push(this.getExtra(\"bottom\", e.bottomOffset)), this.contentEl.innerHTML = o.join(\"\")) : r && (this.contentEl.lastChild.style.height = \"\".concat(e.bottomOffset, \"px\"));\n }\n }, {\n key: \"getRowsHeight\",\n value: function () {\n if (void 0 === this.itemHeight) {\n var t = this.contentEl.children,\n e = t[Math.floor(t.length / 2)];\n this.itemHeight = e.offsetHeight;\n }\n this.blockHeight = this.itemHeight * Ws.BLOCK_ROWS, this.clusterRows = Ws.BLOCK_ROWS * Ws.CLUSTER_BLOCKS, this.clusterHeight = this.blockHeight * Ws.CLUSTER_BLOCKS;\n }\n }, {\n key: \"getNum\",\n value: function () {\n return this.scrollTop = this.scrollEl.scrollTop, Math.floor(this.scrollTop / (this.clusterHeight - this.blockHeight)) || 0;\n }\n }, {\n key: \"initData\",\n value: function (t, e) {\n if (t.length < Ws.BLOCK_ROWS) return {\n topOffset: 0,\n bottomOffset: 0,\n rowsAbove: 0,\n rows: t\n };\n var n = Math.max((this.clusterRows - Ws.BLOCK_ROWS) * e, 0),\n i = n + this.clusterRows,\n u = Math.max(n * this.itemHeight, 0),\n r = Math.max((t.length - i) * this.itemHeight, 0),\n o = [],\n s = n;\n u < 1 && s++;\n for (var a = n; a < i; a++) t[a] && o.push(t[a]);\n return this.dataStart = n, this.dataEnd = i, {\n topOffset: u,\n bottomOffset: r,\n rowsAbove: s,\n rows: o\n };\n }\n }, {\n key: \"checkChanges\",\n value: function (t, e) {\n var n = e !== this.cache[t];\n return this.cache[t] = e, n;\n }\n }, {\n key: \"getExtra\",\n value: function (t, e) {\n var n = document.createElement(\"li\");\n return n.className = \"virtual-scroll-\".concat(t), e && (n.style.height = \"\".concat(e, \"px\")), n.outerHTML;\n }\n }]), t;\n }(),\n kc = B,\n Dc = Kt,\n xc = Math.floor,\n wc = kc(\"\".charAt),\n Oc = kc(\"\".replace),\n $c = kc(\"\".slice),\n Bc = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g,\n jc = /\\$([$&'`]|\\d{1,2})/g,\n Tc = Ys,\n Lc = y,\n Ic = B,\n Rc = Mr,\n _c = p,\n Mc = Ne,\n Pc = J,\n Nc = H,\n Hc = ci,\n Uc = Ei,\n Gc = yu,\n Wc = W,\n zc = fa,\n Kc = $t,\n Vc = function (t, e, n, i, u, r) {\n var o = n + t.length,\n s = i.length,\n a = jc;\n return void 0 !== u && (u = Dc(u), a = Bc), Oc(r, a, function (r, a) {\n var l;\n switch (wc(a, 0)) {\n case \"$\":\n return \"$\";\n case \"&\":\n return t;\n case \"`\":\n return $c(e, 0, n);\n case \"'\":\n return $c(e, o);\n case \"<\":\n l = u[$c(a, 1, -1)];\n break;\n default:\n var c = +a;\n if (0 === c) return r;\n if (c > s) {\n var h = xc(c / 10);\n return 0 === h ? r : h <= s ? void 0 === i[h - 1] ? wc(a, 1) : i[h - 1] + wc(a, 1) : r;\n }\n l = i[c - 1];\n }\n return void 0 === l ? \"\" : l;\n });\n },\n qc = Kr,\n Yc = le(\"replace\"),\n Xc = Math.max,\n Jc = Math.min,\n Zc = Ic([].concat),\n Qc = Ic([].push),\n th = Ic(\"\".indexOf),\n eh = Ic(\"\".slice),\n nh = \"$0\" === \"a\".replace(/./, \"$0\"),\n ih = !!/./[Yc] && \"\" === /./[Yc](\"a\", \"$0\");\n Rc(\"replace\", function (t, e, n) {\n var i = ih ? \"$\" : \"$0\";\n return [function (t, n) {\n var i = Wc(this),\n u = Nc(t) ? void 0 : Kc(t, Yc);\n return u ? Lc(u, t, i, n) : Lc(e, Gc(i), t, n);\n }, function (t, u) {\n var r = Mc(this),\n o = Gc(t);\n if (\"string\" == typeof u && -1 === th(u, i) && -1 === th(u, \"$<\")) {\n var s = n(e, r, o, u);\n if (s.done) return s.value;\n }\n var a = Pc(u);\n a || (u = Gc(u));\n var l = r.global;\n if (l) {\n var c = r.unicode;\n r.lastIndex = 0;\n }\n for (var h = [];;) {\n var f = qc(r, o);\n if (null === f) break;\n if (Qc(h, f), !l) break;\n \"\" === Gc(f[0]) && (r.lastIndex = zc(o, Uc(r.lastIndex), c));\n }\n for (var d, p = \"\", v = 0, g = 0; g < h.length; g++) {\n for (var E = Gc((f = h[g])[0]), b = Xc(Jc(Hc(f.index), o.length), 0), y = [], m = 1; m < f.length; m++) Qc(y, void 0 === (d = f[m]) ? d : String(d));\n var A = f.groups;\n if (a) {\n var C = Zc([E], y, b, o);\n void 0 !== A && Qc(C, A);\n var F = Gc(Tc(u, void 0, C));\n } else F = Vc(E, o, b, y, A, u);\n b >= v && (p += eh(o, v, b) + F, v = b + E.length);\n }\n return p + eh(o, v);\n }];\n }, !!_c(function () {\n var t = /./;\n return t.exec = function () {\n var t = [];\n return t.groups = {\n a: \"7\"\n }, t;\n }, \"7\" !== \"\".replace(t, \"$<a>\");\n }) || !nh || ih);\n var uh = xt,\n rh = Kt,\n oh = N,\n sh = yi,\n ah = TypeError,\n lh = function (t) {\n return function (e, n, i, u) {\n uh(n);\n var r = rh(e),\n o = oh(r),\n s = sh(r),\n a = t ? s - 1 : 0,\n l = t ? -1 : 1;\n if (i < 2) for (;;) {\n if (a in o) {\n u = o[a], a += l;\n break;\n }\n if (a += l, t ? a < 0 : s <= a) throw ah(\"Reduce of empty array with no initial value\");\n }\n for (; t ? a >= 0 : s > a; a += l) a in o && (u = n(u, o[a], a, r));\n return u;\n };\n },\n ch = {\n left: lh(!1),\n right: lh(!0)\n },\n hh = \"undefined\" != typeof process && \"process\" == I(process),\n fh = ch.left;\n su({\n target: \"Array\",\n proto: !0,\n forced: !hh && ht > 79 && ht < 83 || !Wa(\"reduce\")\n }, {\n reduce: function (t) {\n var e = arguments.length;\n return fh(this, t, e, e > 1 ? arguments[1] : void 0);\n }\n });\n var dh = function (t) {\n if (t.normalize) return t.normalize(\"NFD\").replace(/[\\u0300-\\u036F]/g, \"\");\n return [{\n base: \"A\",\n letters: /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g\n }, {\n base: \"AA\",\n letters: /[\\uA732]/g\n }, {\n base: \"AE\",\n letters: /[\\u00C6\\u01FC\\u01E2]/g\n }, {\n base: \"AO\",\n letters: /[\\uA734]/g\n }, {\n base: \"AU\",\n letters: /[\\uA736]/g\n }, {\n base: \"AV\",\n letters: /[\\uA738\\uA73A]/g\n }, {\n base: \"AY\",\n letters: /[\\uA73C]/g\n }, {\n base: \"B\",\n letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g\n }, {\n base: \"C\",\n letters: /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g\n }, {\n base: \"D\",\n letters: /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g\n }, {\n base: \"DZ\",\n letters: /[\\u01F1\\u01C4]/g\n }, {\n base: \"Dz\",\n letters: /[\\u01F2\\u01C5]/g\n }, {\n base: \"E\",\n letters: /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g\n }, {\n base: \"F\",\n letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g\n }, {\n base: \"G\",\n letters: /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g\n }, {\n base: \"H\",\n letters: /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g\n }, {\n base: \"I\",\n letters: /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g\n }, {\n base: \"J\",\n letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g\n }, {\n base: \"K\",\n letters: /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g\n }, {\n base: \"L\",\n letters: /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g\n }, {\n base: \"LJ\",\n letters: /[\\u01C7]/g\n }, {\n base: \"Lj\",\n letters: /[\\u01C8]/g\n }, {\n base: \"M\",\n letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g\n }, {\n base: \"N\",\n letters: /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g\n }, {\n base: \"NJ\",\n letters: /[\\u01CA]/g\n }, {\n base: \"Nj\",\n letters: /[\\u01CB]/g\n }, {\n base: \"O\",\n letters: /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g\n }, {\n base: \"OI\",\n letters: /[\\u01A2]/g\n }, {\n base: \"OO\",\n letters: /[\\uA74E]/g\n }, {\n base: \"OU\",\n letters: /[\\u0222]/g\n }, {\n base: \"P\",\n letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g\n }, {\n base: \"Q\",\n letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g\n }, {\n base: \"R\",\n letters: /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g\n }, {\n base: \"S\",\n letters: /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g\n }, {\n base: \"T\",\n letters: /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g\n }, {\n base: \"TZ\",\n letters: /[\\uA728]/g\n }, {\n base: \"U\",\n letters: /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g\n }, {\n base: \"V\",\n letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g\n }, {\n base: \"VY\",\n letters: /[\\uA760]/g\n }, {\n base: \"W\",\n letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g\n }, {\n base: \"X\",\n letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g\n }, {\n base: \"Y\",\n letters: /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g\n }, {\n base: \"Z\",\n letters: /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g\n }, {\n base: \"a\",\n letters: /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g\n }, {\n base: \"aa\",\n letters: /[\\uA733]/g\n }, {\n base: \"ae\",\n letters: /[\\u00E6\\u01FD\\u01E3]/g\n }, {\n base: \"ao\",\n letters: /[\\uA735]/g\n }, {\n base: \"au\",\n letters: /[\\uA737]/g\n }, {\n base: \"av\",\n letters: /[\\uA739\\uA73B]/g\n }, {\n base: \"ay\",\n letters: /[\\uA73D]/g\n }, {\n base: \"b\",\n letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g\n }, {\n base: \"c\",\n letters: /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g\n }, {\n base: \"d\",\n letters: /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g\n }, {\n base: \"dz\",\n letters: /[\\u01F3\\u01C6]/g\n }, {\n base: \"e\",\n letters: /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g\n }, {\n base: \"f\",\n letters: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g\n }, {\n base: \"g\",\n letters: /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g\n }, {\n base: \"h\",\n letters: /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g\n }, {\n base: \"hv\",\n letters: /[\\u0195]/g\n }, {\n base: \"i\",\n letters: /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g\n }, {\n base: \"j\",\n letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g\n }, {\n base: \"k\",\n letters: /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g\n }, {\n base: \"l\",\n letters: /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g\n }, {\n base: \"lj\",\n letters: /[\\u01C9]/g\n }, {\n base: \"m\",\n letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g\n }, {\n base: \"n\",\n letters: /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g\n }, {\n base: \"nj\",\n letters: /[\\u01CC]/g\n }, {\n base: \"o\",\n letters: /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g\n }, {\n base: \"oi\",\n letters: /[\\u01A3]/g\n }, {\n base: \"ou\",\n letters: /[\\u0223]/g\n }, {\n base: \"oo\",\n letters: /[\\uA74F]/g\n }, {\n base: \"p\",\n letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g\n }, {\n base: \"q\",\n letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g\n }, {\n base: \"r\",\n letters: /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g\n }, {\n base: \"s\",\n letters: /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g\n }, {\n base: \"t\",\n letters: /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g\n }, {\n base: \"tz\",\n letters: /[\\uA729]/g\n }, {\n base: \"u\",\n letters: /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g\n }, {\n base: \"v\",\n letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g\n }, {\n base: \"vy\",\n letters: /[\\uA761]/g\n }, {\n base: \"w\",\n letters: /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g\n }, {\n base: \"x\",\n letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g\n }, {\n base: \"y\",\n letters: /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g\n }, {\n base: \"z\",\n letters: /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g\n }].reduce(function (t, e) {\n var n = e.letters,\n i = e.base;\n return t.replace(n, i);\n }, t);\n },\n ph = function (t, e, n) {\n var i,\n u = l(t);\n try {\n for (u.s(); !(i = u.n()).done;) {\n var r = i.value;\n if (r[e] === n || r[e] === \"\".concat(+r[e]) && +r[e] === n) return r;\n if (\"optgroup\" === r.type) {\n var o,\n s = l(r.children);\n try {\n for (s.s(); !(o = s.n()).done;) {\n var a = o.value;\n if (a[e] === n || a[e] === \"\".concat(+a[e]) && +a[e] === n) return a;\n }\n } catch (t) {\n s.e(t);\n } finally {\n s.f();\n }\n }\n }\n } catch (t) {\n u.e(t);\n } finally {\n u.f();\n }\n },\n vh = function (t) {\n return Object.keys(t).forEach(function (e) {\n return void 0 === t[e] ? delete t[e] : \"\";\n }), t;\n },\n gh = function () {\n function i(e, u) {\n n(this, i), this.$el = e, this.options = t.extend({}, Ws.DEFAULTS, u);\n }\n return u(i, [{\n key: \"init\",\n value: function () {\n this.initLocale(), this.initContainer(), this.initData(), this.initSelected(!0), this.initFilter(), this.initDrop(), this.initView(), this.options.onAfterCreate();\n }\n }, {\n key: \"initLocale\",\n value: function () {\n if (this.options.locale) {\n var e = t.fn.multipleSelect.locales,\n n = this.options.locale.split(/-|_/);\n n[0] = n[0].toLowerCase(), n[1] && (n[1] = n[1].toUpperCase()), e[this.options.locale] ? t.extend(this.options, e[this.options.locale]) : e[n.join(\"-\")] ? t.extend(this.options, e[n.join(\"-\")]) : e[n[0]] && t.extend(this.options, e[n[0]]);\n }\n }\n }, {\n key: \"initContainer\",\n value: function () {\n var e = this,\n n = this.$el[0],\n i = n.getAttribute(\"name\") || this.options.name || \"\";\n this.options.classes && this.$el.addClass(this.options.classes), this.options.classPrefix && (this.$el.addClass(this.options.classPrefix), this.options.size && this.$el.addClass(\"\".concat(this.options.classPrefix, \"-\").concat(this.options.size))), this.$el.hide(), this.$label = this.$el.closest(\"label\"), !this.$label.length && this.$el.attr(\"id\") && (this.$label = t('label[for=\"'.concat(this.$el.attr(\"id\"), '\"]'))), this.$label.find(\">input\").length && (this.$label = null), void 0 === this.options.single && (this.options.single = null === n.getAttribute(\"multiple\")), this.$parent = t('\\n <div class=\"ms-parent '.concat(n.getAttribute(\"class\") || \"\", \" \").concat(this.options.classes, '\"\\n title=\"').concat(n.getAttribute(\"title\") || \"\", '\" />\\n ')), this.options.placeholder = this.options.placeholder || n.getAttribute(\"placeholder\") || \"\", this.tabIndex = n.getAttribute(\"tabindex\");\n var u = \"\";\n if (null !== this.tabIndex && (u = this.tabIndex && 'tabindex=\"'.concat(this.tabIndex, '\"')), this.$el.attr(\"tabindex\", -1), this.$choice = t('\\n <button type=\"button\" class=\"ms-choice\"'.concat(u, '>\\n <span class=\"placeholder\">').concat(this.options.placeholder, \"</span>\\n \").concat(this.options.showClear ? '<div class=\"icon-close\"></div>' : \"\", '\\n <div class=\"icon-caret\"></div>\\n </button>\\n ')), this.$drop = t('<div class=\"ms-drop '.concat(this.options.position, '\" />')), this.$close = this.$choice.find(\".icon-close\"), this.options.dropWidth && this.$drop.css(\"width\", this.options.dropWidth), this.$el.after(this.$parent), this.$parent.append(this.$choice), this.$parent.append(this.$drop), n.disabled && this.$choice.addClass(\"disabled\"), this.selectAllName = 'data-name=\"selectAll'.concat(i, '\"'), this.selectGroupName = 'data-name=\"selectGroup'.concat(i, '\"'), this.selectItemName = 'data-name=\"selectItem'.concat(i, '\"'), !this.options.keepOpen) {\n var r = function () {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : \"\";\n return t = t || \"\".concat(+new Date()).concat(~~(1e6 * Math.random())), \"click.multiple-select-\".concat(t);\n }(this.$el.attr(\"id\"));\n t(document).off(r).on(r, function (i) {\n t(i.target)[0] !== e.$choice[0] && t(i.target).parents(\".ms-choice\")[0] !== e.$choice[0] && (t(i.target)[0] === e.$drop[0] || t(i.target).parents(\".ms-drop\")[0] !== e.$drop[0] && i.target !== n) && e.options.isOpen && e.close();\n });\n }\n }\n }, {\n key: \"initData\",\n value: function () {\n var n = this,\n i = [];\n if (this.options.data) {\n if (Array.isArray(this.options.data)) this.data = this.options.data.map(function (t) {\n return \"string\" == typeof t || \"number\" == typeof t ? {\n text: t,\n value: t\n } : t;\n });else if (\"object\" === e(this.options.data)) {\n for (var u = 0, o = Object.entries(this.options.data); u < o.length; u++) {\n var s = r(o[u], 2),\n a = s[0],\n l = s[1];\n i.push({\n value: a,\n text: l\n });\n }\n this.data = i;\n }\n } else t.each(this.$el.children(), function (t, e) {\n n.initRow(t, e) && i.push(n.initRow(t, e));\n }), this.options.data = i, this.data = i, this.fromHtml = !0;\n this.dataTotal = function (t) {\n var e = 0;\n return t.forEach(function (t, n) {\n \"optgroup\" === t.type ? (t._key = \"group_\".concat(n), t.visible = void 0 === t.visible || t.visible, t.children.forEach(function (t, i) {\n t.visible = void 0 === t.visible || t.visible, t.divider || (t._key = \"option_\".concat(n, \"_\").concat(i), e += 1);\n })) : (t.visible = void 0 === t.visible || t.visible, t.divider || (t._key = \"option_\".concat(n), e += 1));\n }), e;\n }(this.data);\n }\n }, {\n key: \"initRow\",\n value: function (e, n, i) {\n var u = this,\n r = {},\n o = t(n);\n return o.is(\"option\") ? (r.type = \"option\", r.text = this.options.textTemplate(o), r.value = n.value, r.visible = !0, r.selected = !!n.selected, r.disabled = i || n.disabled, r.classes = n.getAttribute(\"class\") || \"\", r.title = n.getAttribute(\"title\") || \"\", o.data(\"value\") && (r._value = o.data(\"value\")), Object.keys(o.data()).length && (r._data = o.data(), r._data.divider && (r.divider = r._data.divider)), r) : o.is(\"optgroup\") ? (r.type = \"optgroup\", r.label = this.options.labelTemplate(o), r.visible = !0, r.selected = !!n.selected, r.disabled = n.disabled, r.children = [], Object.keys(o.data()).length && (r._data = o.data()), t.each(o.children(), function (t, e) {\n r.children.push(u.initRow(t, e, r.disabled));\n }), r) : null;\n }\n }, {\n key: \"initSelected\",\n value: function (t) {\n var e,\n n = 0,\n i = l(this.data);\n try {\n for (i.s(); !(e = i.n()).done;) {\n var u = e.value;\n if (\"optgroup\" === u.type) {\n var r = u.children.filter(function (t) {\n return t.selected && !t.disabled && t.visible;\n }).length;\n u.children.length && (u.selected = !this.options.single && r && r === u.children.filter(function (t) {\n return !t.disabled && t.visible && !t.divider;\n }).length), n += r;\n } else n += u.selected && !u.disabled && u.visible ? 1 : 0;\n }\n } catch (t) {\n i.e(t);\n } finally {\n i.f();\n }\n this.allSelected = this.data.filter(function (t) {\n return t.selected && !t.disabled && t.visible;\n }).length === this.data.filter(function (t) {\n return !t.disabled && t.visible && !t.divider;\n }).length, t || (this.allSelected ? this.options.onCheckAll() : 0 === n && this.options.onUncheckAll());\n }\n }, {\n key: \"initFilter\",\n value: function () {\n if (this.filterText = \"\", !this.options.filter && this.options.filterByDataLength) {\n var t,\n e = 0,\n n = l(this.data);\n try {\n for (n.s(); !(t = n.n()).done;) {\n var i = t.value;\n \"optgroup\" === i.type ? e += i.children.length : e += 1;\n }\n } catch (t) {\n n.e(t);\n } finally {\n n.f();\n }\n this.options.filter = e > this.options.filterByDataLength;\n }\n }\n }, {\n key: \"initDrop\",\n value: function () {\n var t = this;\n this.initList(), this.update(!0), this.options.isOpen && setTimeout(function () {\n t.open();\n }, 50), this.options.openOnHover && this.$parent.hover(function () {\n t.open();\n }, function () {\n t.close();\n });\n }\n }, {\n key: \"initList\",\n value: function () {\n var t = [];\n this.options.filter && t.push('\\n <div class=\"ms-search\">\\n <input type=\"text\" autocomplete=\"off\" autocorrect=\"off\"\\n autocapitalize=\"off\" spellcheck=\"false\"\\n placeholder=\"'.concat(this.options.filterPlaceholder, '\">\\n </div>\\n ')), t.push(\"<ul></ul>\"), this.$drop.html(t.join(\"\")), this.$ul = this.$drop.find(\">ul\"), this.initListItems();\n }\n }, {\n key: \"initListItems\",\n value: function () {\n var t = this,\n e = this.getListRows(),\n n = 0;\n if (this.options.selectAll && !this.options.single && (n = -1), e.length > Ws.BLOCK_ROWS * Ws.CLUSTER_BLOCKS) {\n this.virtualScroll && this.virtualScroll.destroy();\n var i = this.$drop.is(\":visible\");\n i || this.$drop.css(\"left\", -1e4).show();\n var u = function () {\n t.updateDataStart = t.virtualScroll.dataStart + n, t.updateDataEnd = t.virtualScroll.dataEnd + n, t.updateDataStart < 0 && (t.updateDataStart = 0), t.updateDataEnd > t.data.length && (t.updateDataEnd = t.data.length);\n };\n this.virtualScroll = new Sc({\n rows: e,\n scrollEl: this.$ul[0],\n contentEl: this.$ul[0],\n callback: function () {\n u(), t.events();\n }\n }), u(), i || this.$drop.css(\"left\", 0).hide();\n } else this.$ul.html(e.join(\"\")), this.updateDataStart = 0, this.updateDataEnd = this.updateData.length, this.virtualScroll = null;\n this.events();\n }\n }, {\n key: \"getListRows\",\n value: function () {\n var t = this,\n e = [];\n return this.options.selectAll && !this.options.single && e.push('\\n <li class=\"ms-select-all\" tabindex=\"0\">\\n <label>\\n <input type=\"checkbox\" '.concat(this.selectAllName).concat(this.allSelected ? ' checked=\"checked\"' : \"\", ' tabindex=\"-1\" />\\n <span>').concat(this.options.formatSelectAll(), \"</span>\\n </label>\\n </li>\\n \")), this.updateData = [], this.data.forEach(function (n) {\n e.push.apply(e, o(t.initListItem(n)));\n }), e.push('<li class=\"ms-no-results\">'.concat(this.options.formatNoMatchesFound(), \"</li>\")), e;\n }\n }, {\n key: \"initListItem\",\n value: function (t) {\n var e = this,\n n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,\n i = t.title ? 'title=\"'.concat(t.title, '\"') : \"\",\n u = this.options.multiple ? \"multiple\" : \"\",\n r = this.options.single ? \"radio\" : \"checkbox\",\n s = \"\";\n if (!t.visible) return [];\n if (this.updateData.push(t), this.options.single && !this.options.singleRadio && (s = \"hide-radio \"), t.selected && (s += \"selected \"), \"optgroup\" === t.type) {\n var a = this.options.styler(t),\n l = a ? 'style=\"'.concat(a, '\"') : \"\",\n c = [],\n h = this.options.hideOptgroupCheckboxes || this.options.single ? \"<span \".concat(this.selectGroupName, ' data-key=\"').concat(t._key, '\"></span>') : '<input type=\"checkbox\"\\n '.concat(this.selectGroupName, '\\n data-key=\"').concat(t._key, '\"\\n ').concat(t.selected ? ' checked=\"checked\"' : \"\", \"\\n \").concat(t.disabled ? ' disabled=\"disabled\"' : \"\", '\\n tabindex=\"-1\"\\n >');\n return s.includes(\"hide-radio\") || !this.options.hideOptgroupCheckboxes && !this.options.single || (s += \"hide-radio \"), c.push('\\n <li class=\"group '.concat(s, '\" ').concat(l, ' tabindex=\"').concat(s.includes(\"hide-radio\") || t.disabled ? -1 : 0, '\">\\n <label class=\"optgroup').concat(this.options.single || t.disabled ? \" disabled\" : \"\", '\">\\n ').concat(h).concat(t.label, \"\\n </label>\\n </li>\\n \")), t.children.forEach(function (t) {\n c.push.apply(c, o(e.initListItem(t, 1)));\n }), c;\n }\n var f = this.options.styler(t),\n d = f ? 'style=\"'.concat(f, '\"') : \"\";\n return s += t.classes || \"\", n && this.options.single && (s += \"option-level-\".concat(n, \" \")), t.divider ? '<li class=\"option-divider\"/>' : ['\\n <li class=\"'.concat(u, \" \").concat(s, '\" ').concat(i, \" \").concat(d, ' tabindex=\"').concat(t.disabled ? -1 : 0, '\">\\n <label class=\"').concat(t.disabled ? \"disabled\" : \"\", '\">\\n <input type=\"').concat(r, '\"\\n value=\"').concat(t.value, '\"\\n data-key=\"').concat(t._key, '\"\\n ').concat(this.selectItemName, \"\\n \").concat(t.selected ? ' checked=\"checked\"' : \"\", \"\\n \").concat(t.disabled ? ' disabled=\"disabled\"' : \"\", '\\n tabindex=\"-1\"\\n >\\n <span>').concat(t.text, \"</span>\\n </label>\\n </li>\\n \")];\n }\n }, {\n key: \"events\",\n value: function () {\n var e = this;\n this.$searchInput = this.$drop.find(\".ms-search input\"), this.$selectAll = this.$drop.find(\"input[\".concat(this.selectAllName, \"]\")), this.$selectGroups = this.$drop.find(\"input[\".concat(this.selectGroupName, \"],span[\").concat(this.selectGroupName, \"]\")), this.$selectItems = this.$drop.find(\"input[\".concat(this.selectItemName, \"]:enabled\")), this.$disableItems = this.$drop.find(\"input[\".concat(this.selectItemName, \"]:disabled\")), this.$noResults = this.$drop.find(\".ms-no-results\");\n var n = function (n) {\n n.preventDefault(), t(n.target).hasClass(\"icon-close\") || e[e.options.isOpen ? \"close\" : \"open\"]();\n };\n this.$label && this.$label.length && this.$label.off(\"click\").on(\"click\", function (t) {\n \"label\" === t.target.nodeName.toLowerCase() && (n(t), e.options.filter && e.options.isOpen || e.focus(), t.stopPropagation());\n }), this.$choice.off(\"click\").on(\"click\", n).off(\"focus\").on(\"focus\", this.options.onFocus).off(\"blur\").on(\"blur\", this.options.onBlur), this.$parent.off(\"keydown\").on(\"keydown\", function (t) {\n 27 !== t.which || e.options.keepOpen || (e.close(), e.$choice.focus());\n }), this.$close.off(\"click\").on(\"click\", function (t) {\n t.preventDefault(), e._checkAll(!1, !0), e.initSelected(!1), e.updateSelected(), e.update(), e.options.onClear();\n }), this.$searchInput.off(\"keydown\").on(\"keydown\", function (t) {\n 9 === t.keyCode && t.shiftKey && e.close();\n }).off(\"keyup\").on(\"keyup\", function (t) {\n if (e.options.filterAcceptOnEnter && [13, 32].includes(t.which) && e.$searchInput.val()) {\n if (e.options.single) {\n var n = e.$selectItems.closest(\"li\").filter(\":visible\");\n n.length && e.setSelects([n.first().find(\"input[\".concat(e.selectItemName, \"]\")).val()]);\n } else e.$selectAll.click();\n return e.close(), void e.focus();\n }\n e.filter();\n }), this.$selectAll.off(\"click\").on(\"click\", function (n) {\n e._checkAll(t(n.currentTarget).prop(\"checked\"));\n }), this.$selectGroups.off(\"click\").on(\"click\", function (n) {\n var i = t(n.currentTarget),\n u = i.prop(\"checked\"),\n r = ph(e.data, \"_key\", i.data(\"key\"));\n e._checkGroup(r, u), e.options.onOptgroupClick(vh({\n label: r.label,\n selected: r.selected,\n data: r._data,\n children: r.children.map(function (t) {\n return vh({\n text: t.text,\n value: t.value,\n selected: t.selected,\n disabled: t.disabled,\n data: t._data\n });\n })\n }));\n }), this.$selectItems.off(\"click\").on(\"click\", function (n) {\n var i = t(n.currentTarget),\n u = i.prop(\"checked\"),\n r = ph(e.data, \"_key\", i.data(\"key\")),\n o = function () {\n e.options.single && e.options.isOpen && !e.options.keepOpen && e.close();\n };\n !1 !== e.options.onBeforeClick(r) ? (e._check(r, u), e.options.onClick(vh({\n text: r.text,\n value: r.value,\n selected: r.selected,\n data: r._data\n })), o()) : o();\n }), this.$ul.find(\"li\").off(\"keydown\").on(\"keydown\", function (n) {\n var i,\n u = t(n.currentTarget);\n switch (n.key) {\n case \"ArrowUp\":\n n.preventDefault(), ((i = u.prev(\"li.option-divider\")).length ? i : u).prev().trigger(\"focus\");\n break;\n case \"ArrowDown\":\n n.preventDefault(), ((i = u.next(\"li.option-divider\")).length ? i : u).next().trigger(\"focus\");\n break;\n case \"Enter\":\n n.preventDefault(), u.find(\"input\").trigger(\"click\"), e.options.single && e.$choice.trigger(\"focus\");\n }\n });\n }\n }, {\n key: \"initView\",\n value: function () {\n var t;\n window.getComputedStyle ? \"auto\" === (t = window.getComputedStyle(this.$el[0]).width) && (t = this.$drop.outerWidth() + 20) : t = this.$el.outerWidth() + 20, this.$parent.css(\"width\", this.options.width || t), this.$el.show().addClass(\"ms-offscreen\");\n }\n }, {\n key: \"open\",\n value: function () {\n if (!this.$choice.hasClass(\"disabled\")) {\n if (this.options.isOpen = !0, this.$parent.addClass(\"ms-parent-open\"), this.$choice.find(\">div\").addClass(\"open\"), this.$drop[this.animateMethod(\"show\")](), this.$selectAll.parent().show(), this.$noResults.hide(), this.data.length || (this.$selectAll.parent().hide(), this.$noResults.show()), this.options.container) {\n var e = this.$drop.offset();\n this.$drop.appendTo(t(this.options.container)), this.$drop.offset({\n top: e.top,\n left: e.left\n }).css(\"min-width\", \"auto\").outerWidth(this.$parent.outerWidth());\n }\n var n = this.options.maxHeight;\n \"row\" === this.options.maxHeightUnit && (n = this.$drop.find(\">ul>li\").first().outerHeight() * this.options.maxHeight), this.$drop.find(\">ul\").css(\"max-height\", \"\".concat(n, \"px\")), this.$drop.find(\".multiple\").css(\"width\", \"\".concat(this.options.multipleWidth, \"px\")), this.data.length && this.options.filter && (this.$searchInput.val(\"\"), this.$searchInput.focus(), this.filter(!0)), this.options.onOpen();\n }\n }\n }, {\n key: \"close\",\n value: function () {\n this.options.isOpen = !1, this.$parent.removeClass(\"ms-parent-open\"), this.$choice.find(\">div\").removeClass(\"open\"), this.$drop[this.animateMethod(\"hide\")](), this.options.container && (this.$parent.append(this.$drop), this.$drop.css({\n top: \"auto\",\n left: \"auto\"\n })), this.options.onClose();\n }\n }, {\n key: \"animateMethod\",\n value: function (t) {\n return {\n show: {\n fade: \"fadeIn\",\n slide: \"slideDown\"\n },\n hide: {\n fade: \"fadeOut\",\n slide: \"slideUp\"\n }\n }[t][this.options.animate] || t;\n }\n }, {\n key: \"update\",\n value: function (t) {\n var e = this.getSelects(),\n n = this.getSelects(\"text\");\n this.options.displayValues && (n = e);\n var i = this.$choice.find(\">span\"),\n u = e.length,\n r = \"\";\n 0 === u ? i.addClass(\"placeholder\").html(this.options.placeholder) : r = u < this.options.minimumCountSelected ? n.join(this.options.displayDelimiter) : this.options.formatAllSelected() && u === this.dataTotal ? this.options.formatAllSelected() : this.options.ellipsis && u > this.options.minimumCountSelected ? \"\".concat(n.slice(0, this.options.minimumCountSelected).join(this.options.displayDelimiter), \"...\") : this.options.formatCountSelected() && u > this.options.minimumCountSelected ? this.options.formatCountSelected(u, this.dataTotal) : n.join(this.options.displayDelimiter), r && i.removeClass(\"placeholder\").html(r), this.options.displayTitle && i.prop(\"title\", this.getSelects(\"text\")), this.$el.val(this.getSelects()), t || this.$el.trigger(\"change\");\n }\n }, {\n key: \"updateSelected\",\n value: function () {\n for (var t = this.updateDataStart; t < this.updateDataEnd; t++) {\n var e = this.updateData[t];\n this.$drop.find(\"input[data-key=\".concat(e._key, \"]\")).prop(\"checked\", e.selected).closest(\"li\").toggleClass(\"selected\", e.selected);\n }\n var n = 0 === this.data.filter(function (t) {\n return t.visible;\n }).length;\n this.$selectAll.length && this.$selectAll.prop(\"checked\", this.allSelected).closest(\"li\").toggle(!n), this.$noResults.toggle(n), this.virtualScroll && (this.virtualScroll.rows = this.getListRows());\n }\n }, {\n key: \"getData\",\n value: function () {\n return this.options.data;\n }\n }, {\n key: \"getOptions\",\n value: function () {\n var e = t.extend({}, this.options);\n return delete e.data, t.extend(!0, {}, e);\n }\n }, {\n key: \"refreshOptions\",\n value: function (e) {\n (function (t, e, n) {\n var i = Object.keys(t),\n u = Object.keys(e);\n if (n && i.length !== u.length) return !1;\n for (var r = 0, o = i; r < o.length; r++) {\n var s = o[r];\n if (u.includes(s) && t[s] !== e[s]) return !1;\n }\n return !0;\n })(this.options, e, !0) || (this.options = t.extend(this.options, e), this.destroy(), this.init());\n }\n }, {\n key: \"getSelects\",\n value: function () {\n var t,\n e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : \"value\",\n n = [],\n i = l(this.data);\n try {\n for (i.s(); !(t = i.n()).done;) {\n var u = t.value;\n if (\"optgroup\" === u.type) {\n var r = u.children.filter(function (t) {\n return t.selected;\n });\n if (!r.length) continue;\n if (\"value\" === e || this.options.single) n.push.apply(n, o(r.map(function (t) {\n return \"value\" === e && t._value || t[e];\n })));else {\n var s = [];\n s.push(\"[\"), s.push(u.label), s.push(\": \".concat(r.map(function (t) {\n return t[e];\n }).join(\", \"))), s.push(\"]\"), n.push(s.join(\"\"));\n }\n } else u.selected && n.push(\"value\" === e && u._value || u[e]);\n }\n } catch (t) {\n i.e(t);\n } finally {\n i.f();\n }\n return n;\n }\n }, {\n key: \"setSelects\",\n value: function (e) {\n var n,\n i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"value\",\n u = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],\n r = !1,\n o = function (n) {\n var u,\n o = l(n);\n try {\n for (o.s(); !(u = o.n()).done;) {\n var s = u.value,\n a = !1;\n \"text\" === i ? a = e.includes(t(\"<div>\").html(s.text).text().trim()) : (a = e.includes(s._value || s.value)) || s.value !== \"\".concat(+s.value) || (a = e.includes(+s.value)), s.selected !== a && (r = !0), s.selected = a;\n }\n } catch (t) {\n o.e(t);\n } finally {\n o.f();\n }\n },\n s = l(this.data);\n try {\n for (s.s(); !(n = s.n()).done;) {\n var a = n.value;\n \"optgroup\" === a.type ? o(a.children) : o([a]);\n }\n } catch (t) {\n s.e(t);\n } finally {\n s.f();\n }\n r && (this.initSelected(u), this.updateSelected(), this.update(u));\n }\n }, {\n key: \"enable\",\n value: function () {\n this.$choice.removeClass(\"disabled\");\n }\n }, {\n key: \"disable\",\n value: function () {\n this.$choice.addClass(\"disabled\");\n }\n }, {\n key: \"check\",\n value: function (t) {\n var e = ph(this.data, \"value\", t);\n e && this._check(e, !0);\n }\n }, {\n key: \"uncheck\",\n value: function (t) {\n var e = ph(this.data, \"value\", t);\n e && this._check(e, !1);\n }\n }, {\n key: \"_check\",\n value: function (t, e) {\n this.options.single && this._checkAll(!1, !0), t.selected = e, this.initSelected(), this.updateSelected(), this.update();\n }\n }, {\n key: \"checkAll\",\n value: function () {\n this._checkAll(!0);\n }\n }, {\n key: \"uncheckAll\",\n value: function () {\n this._checkAll(!1);\n }\n }, {\n key: \"_checkAll\",\n value: function (t, e) {\n var n,\n i = l(this.data);\n try {\n for (i.s(); !(n = i.n()).done;) {\n var u = n.value;\n \"optgroup\" === u.type ? this._checkGroup(u, t, !0) : u.disabled || u.divider || !e && !u.visible || (u.selected = t);\n }\n } catch (t) {\n i.e(t);\n } finally {\n i.f();\n }\n e || (this.initSelected(), this.updateSelected(), this.update());\n }\n }, {\n key: \"_checkGroup\",\n value: function (t, e, n) {\n t.selected = e, t.children.forEach(function (t) {\n t.disabled || t.divider || !n && !t.visible || (t.selected = e);\n }), n || (this.initSelected(), this.updateSelected(), this.update());\n }\n }, {\n key: \"checkInvert\",\n value: function () {\n if (!this.options.single) {\n var t,\n e = l(this.data);\n try {\n for (e.s(); !(t = e.n()).done;) {\n var n = t.value;\n if (\"optgroup\" === n.type) {\n var i,\n u = l(n.children);\n try {\n for (u.s(); !(i = u.n()).done;) {\n var r = i.value;\n r.divider || (r.selected = !r.selected);\n }\n } catch (t) {\n u.e(t);\n } finally {\n u.f();\n }\n } else n.divider || (n.selected = !n.selected);\n }\n } catch (t) {\n e.e(t);\n } finally {\n e.f();\n }\n this.initSelected(), this.updateSelected(), this.update();\n }\n }\n }, {\n key: \"focus\",\n value: function () {\n this.$choice.focus(), this.options.onFocus();\n }\n }, {\n key: \"blur\",\n value: function () {\n this.$choice.blur(), this.options.onBlur();\n }\n }, {\n key: \"refresh\",\n value: function () {\n this.destroy(), this.init();\n }\n }, {\n key: \"filter\",\n value: function (t) {\n var e = this.$searchInput.val().trim(),\n n = e.toLowerCase();\n if (this.filterText !== n) {\n this.filterText = n;\n var i,\n u = l(this.data);\n try {\n for (u.s(); !(i = u.n()).done;) {\n var r = i.value;\n if (\"optgroup\" === r.type) {\n if (this.options.filterGroup) {\n var o = this.options.customFilter({\n label: dh(r.label.toString().toLowerCase()),\n search: dh(n),\n originalLabel: r.label,\n originalSearch: e,\n row: r\n });\n r.visible = o;\n var s,\n a = l(r.children);\n try {\n for (a.s(); !(s = a.n()).done;) {\n s.value.visible = o;\n }\n } catch (t) {\n a.e(t);\n } finally {\n a.f();\n }\n } else {\n var c,\n h = l(r.children);\n try {\n for (h.s(); !(c = h.n()).done;) {\n var f = c.value;\n f.visible = this.options.customFilter({\n text: dh(f.text.toString().toLowerCase()),\n search: dh(n),\n originalText: f.text,\n originalSearch: e,\n row: f,\n parent: r\n });\n }\n } catch (t) {\n h.e(t);\n } finally {\n h.f();\n }\n r.visible = r.children.filter(function (t) {\n return t.visible;\n }).length > 0;\n }\n } else r.visible = this.options.customFilter({\n text: dh(r.text.toString().toLowerCase()),\n search: dh(n),\n originalText: r.text,\n originalSearch: e,\n row: r\n });\n }\n } catch (t) {\n u.e(t);\n } finally {\n u.f();\n }\n this.initListItems(), this.initSelected(t), this.updateSelected(), t || this.options.onFilter(e);\n }\n }\n }, {\n key: \"destroy\",\n value: function () {\n this.$parent && (this.$el.before(this.$parent).removeClass(\"ms-offscreen\"), null !== this.tabIndex && this.$el.attr(\"tabindex\", this.tabIndex), this.$parent.remove(), this.fromHtml && (delete this.options.data, this.fromHtml = !1));\n }\n }]), i;\n }();\n t.fn.multipleSelect = function (n) {\n for (var i = arguments.length, u = new Array(i > 1 ? i - 1 : 0), r = 1; r < i; r++) u[r - 1] = arguments[r];\n var o;\n return this.each(function (i, r) {\n var s = t(r),\n a = s.data(\"multipleSelect\"),\n l = t.extend({}, s.data(), \"object\" === e(n) && n);\n if (a || (a = new gh(s, l), s.data(\"multipleSelect\", a)), \"string\" == typeof n) {\n var c;\n if (t.inArray(n, Ws.METHODS) < 0) throw new Error(\"Unknown method: \".concat(n));\n o = (c = a)[n].apply(c, u), \"destroy\" === n && s.removeData(\"multipleSelect\");\n } else a.init();\n }), void 0 !== o ? o : this;\n }, t.fn.multipleSelect.Constructor = gh, t.fn.multipleSelect.defaults = Ws.DEFAULTS, t.fn.multipleSelect.locales = Ws.LOCALES, t.fn.multipleSelect.methods = Ws.METHODS;\n});","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n while (len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\nfunction noop() {}\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\nprocess.listeners = function (name) {\n return [];\n};\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\nprocess.cwd = function () {\n return '/';\n};\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function () {\n return 0;\n};","/*!\n * jQuery Validation Plugin v1.21.0\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2024 Jörn Zaefferer\n * Released under the MIT license\n */\n(function (factory) {\n if (typeof define === \"function\" && define.amd) {\n define([\"jquery\"], factory);\n } else if (typeof module === \"object\" && module.exports) {\n module.exports = factory(require(\"jquery\"));\n } else {\n factory(jQuery);\n }\n})(function ($) {\n $.extend($.fn, {\n // https://jqueryvalidation.org/validate/\n validate: function (options) {\n // If nothing is selected, return nothing; can't chain anyway\n if (!this.length) {\n if (options && options.debug && window.console) {\n console.warn(\"Nothing selected, can't validate, returning nothing.\");\n }\n return;\n }\n\n // Check if a validator for this form was already created\n var validator = $.data(this[0], \"validator\");\n if (validator) {\n return validator;\n }\n\n // Add novalidate tag if HTML5.\n this.attr(\"novalidate\", \"novalidate\");\n validator = new $.validator(options, this[0]);\n $.data(this[0], \"validator\", validator);\n if (validator.settings.onsubmit) {\n this.on(\"click.validate\", \":submit\", function (event) {\n // Track the used submit button to properly handle scripted\n // submits later.\n validator.submitButton = event.currentTarget;\n\n // Allow suppressing validation by adding a cancel class to the submit button\n if ($(this).hasClass(\"cancel\")) {\n validator.cancelSubmit = true;\n }\n\n // Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n if ($(this).attr(\"formnovalidate\") !== undefined) {\n validator.cancelSubmit = true;\n }\n });\n\n // Validate the form on submit\n this.on(\"submit.validate\", function (event) {\n if (validator.settings.debug) {\n // Prevent form submit to be able to see console output\n event.preventDefault();\n }\n function handle() {\n var hidden, result;\n\n // Insert a hidden input as a replacement for the missing submit button\n // The hidden input is inserted in two cases:\n // - A user defined a `submitHandler`\n // - There was a pending request due to `remote` method and `stopRequest()`\n // was called to submit the form in case it's valid\n if (validator.submitButton && (validator.settings.submitHandler || validator.formSubmitted)) {\n hidden = $(\"<input type='hidden'/>\").attr(\"name\", validator.submitButton.name).val($(validator.submitButton).val()).appendTo(validator.currentForm);\n }\n if (validator.settings.submitHandler && !validator.settings.debug) {\n result = validator.settings.submitHandler.call(validator, validator.currentForm, event);\n if (hidden) {\n // And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n hidden.remove();\n }\n if (result !== undefined) {\n return result;\n }\n return false;\n }\n return true;\n }\n\n // Prevent submit for invalid forms or custom submit handlers\n if (validator.cancelSubmit) {\n validator.cancelSubmit = false;\n return handle();\n }\n if (validator.form()) {\n if (validator.pendingRequest) {\n validator.formSubmitted = true;\n return false;\n }\n return handle();\n } else {\n validator.focusInvalid();\n return false;\n }\n });\n }\n return validator;\n },\n // https://jqueryvalidation.org/valid/\n valid: function () {\n var valid, validator, errorList;\n if ($(this[0]).is(\"form\")) {\n valid = this.validate().form();\n } else {\n errorList = [];\n valid = true;\n validator = $(this[0].form).validate();\n this.each(function () {\n valid = validator.element(this) && valid;\n if (!valid) {\n errorList = errorList.concat(validator.errorList);\n }\n });\n validator.errorList = errorList;\n }\n return valid;\n },\n // https://jqueryvalidation.org/rules/\n rules: function (command, argument) {\n var element = this[0],\n isContentEditable = typeof this.attr(\"contenteditable\") !== \"undefined\" && this.attr(\"contenteditable\") !== \"false\",\n settings,\n staticRules,\n existingRules,\n data,\n param,\n filtered;\n\n // If nothing is selected, return empty object; can't chain anyway\n if (element == null) {\n return;\n }\n if (!element.form && isContentEditable) {\n element.form = this.closest(\"form\")[0];\n element.name = this.attr(\"name\");\n }\n if (element.form == null) {\n return;\n }\n if (command) {\n settings = $.data(element.form, \"validator\").settings;\n staticRules = settings.rules;\n existingRules = $.validator.staticRules(element);\n switch (command) {\n case \"add\":\n $.extend(existingRules, $.validator.normalizeRule(argument));\n\n // Remove messages from rules, but allow them to be set separately\n delete existingRules.messages;\n staticRules[element.name] = existingRules;\n if (argument.messages) {\n settings.messages[element.name] = $.extend(settings.messages[element.name], argument.messages);\n }\n break;\n case \"remove\":\n if (!argument) {\n delete staticRules[element.name];\n return existingRules;\n }\n filtered = {};\n $.each(argument.split(/\\s/), function (index, method) {\n filtered[method] = existingRules[method];\n delete existingRules[method];\n });\n return filtered;\n }\n }\n data = $.validator.normalizeRules($.extend({}, $.validator.classRules(element), $.validator.attributeRules(element), $.validator.dataRules(element), $.validator.staticRules(element)), element);\n\n // Make sure required is at front\n if (data.required) {\n param = data.required;\n delete data.required;\n data = $.extend({\n required: param\n }, data);\n }\n\n // Make sure remote is at back\n if (data.remote) {\n param = data.remote;\n delete data.remote;\n data = $.extend(data, {\n remote: param\n });\n }\n return data;\n }\n });\n\n // JQuery trim is deprecated, provide a trim method based on String.prototype.trim\n var trim = function (str) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\");\n };\n\n // Custom selectors\n $.extend($.expr.pseudos || $.expr[\":\"], {\n // '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n // https://jqueryvalidation.org/blank-selector/\n blank: function (a) {\n return !trim(\"\" + $(a).val());\n },\n // https://jqueryvalidation.org/filled-selector/\n filled: function (a) {\n var val = $(a).val();\n return val !== null && !!trim(\"\" + val);\n },\n // https://jqueryvalidation.org/unchecked-selector/\n unchecked: function (a) {\n return !$(a).prop(\"checked\");\n }\n });\n\n // Constructor for validator\n $.validator = function (options, form) {\n this.settings = $.extend(true, {}, $.validator.defaults, options);\n this.currentForm = form;\n this.init();\n };\n\n // https://jqueryvalidation.org/jQuery.validator.format/\n $.validator.format = function (source, params) {\n if (arguments.length === 1) {\n return function () {\n var args = $.makeArray(arguments);\n args.unshift(source);\n return $.validator.format.apply(this, args);\n };\n }\n if (params === undefined) {\n return source;\n }\n if (arguments.length > 2 && params.constructor !== Array) {\n params = $.makeArray(arguments).slice(1);\n }\n if (params.constructor !== Array) {\n params = [params];\n }\n $.each(params, function (i, n) {\n source = source.replace(new RegExp(\"\\\\{\" + i + \"\\\\}\", \"g\"), function () {\n return n;\n });\n });\n return source;\n };\n $.extend($.validator, {\n defaults: {\n messages: {},\n groups: {},\n rules: {},\n errorClass: \"error\",\n pendingClass: \"pending\",\n validClass: \"valid\",\n errorElement: \"label\",\n focusCleanup: false,\n focusInvalid: true,\n errorContainer: $([]),\n errorLabelContainer: $([]),\n onsubmit: true,\n ignore: \":hidden\",\n ignoreTitle: false,\n customElements: [],\n onfocusin: function (element) {\n this.lastActive = element;\n\n // Hide error label and remove error class on focus if enabled\n if (this.settings.focusCleanup) {\n if (this.settings.unhighlight) {\n this.settings.unhighlight.call(this, element, this.settings.errorClass, this.settings.validClass);\n }\n this.hideThese(this.errorsFor(element));\n }\n },\n onfocusout: function (element) {\n if (!this.checkable(element) && (element.name in this.submitted || !this.optional(element))) {\n this.element(element);\n }\n },\n onkeyup: function (element, event) {\n // Avoid revalidate the field when pressing one of the following keys\n // Shift => 16\n // Ctrl => 17\n // Alt => 18\n // Caps lock => 20\n // End => 35\n // Home => 36\n // Left arrow => 37\n // Up arrow => 38\n // Right arrow => 39\n // Down arrow => 40\n // Insert => 45\n // Num lock => 144\n // AltGr key => 225\n var excludedKeys = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225];\n if (event.which === 9 && this.elementValue(element) === \"\" || $.inArray(event.keyCode, excludedKeys) !== -1) {\n return;\n } else if (element.name in this.submitted || element.name in this.invalid) {\n this.element(element);\n }\n },\n onclick: function (element) {\n // Click on selects, radiobuttons and checkboxes\n if (element.name in this.submitted) {\n this.element(element);\n\n // Or option elements, check parent select in that case\n } else if (element.parentNode.name in this.submitted) {\n this.element(element.parentNode);\n }\n },\n highlight: function (element, errorClass, validClass) {\n if (element.type === \"radio\") {\n this.findByName(element.name).addClass(errorClass).removeClass(validClass);\n } else {\n $(element).addClass(errorClass).removeClass(validClass);\n }\n },\n unhighlight: function (element, errorClass, validClass) {\n if (element.type === \"radio\") {\n this.findByName(element.name).removeClass(errorClass).addClass(validClass);\n } else {\n $(element).removeClass(errorClass).addClass(validClass);\n }\n }\n },\n // https://jqueryvalidation.org/jQuery.validator.setDefaults/\n setDefaults: function (settings) {\n $.extend($.validator.defaults, settings);\n },\n messages: {\n required: \"This field is required.\",\n remote: \"Please fix this field.\",\n email: \"Please enter a valid email address.\",\n url: \"Please enter a valid URL.\",\n date: \"Please enter a valid date.\",\n dateISO: \"Please enter a valid date (ISO).\",\n number: \"Please enter a valid number.\",\n digits: \"Please enter only digits.\",\n equalTo: \"Please enter the same value again.\",\n maxlength: $.validator.format(\"Please enter no more than {0} characters.\"),\n minlength: $.validator.format(\"Please enter at least {0} characters.\"),\n rangelength: $.validator.format(\"Please enter a value between {0} and {1} characters long.\"),\n range: $.validator.format(\"Please enter a value between {0} and {1}.\"),\n max: $.validator.format(\"Please enter a value less than or equal to {0}.\"),\n min: $.validator.format(\"Please enter a value greater than or equal to {0}.\"),\n step: $.validator.format(\"Please enter a multiple of {0}.\")\n },\n autoCreateRanges: false,\n prototype: {\n init: function () {\n this.labelContainer = $(this.settings.errorLabelContainer);\n this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);\n this.containers = $(this.settings.errorContainer).add(this.settings.errorLabelContainer);\n this.submitted = {};\n this.valueCache = {};\n this.pendingRequest = 0;\n this.pending = {};\n this.invalid = {};\n this.reset();\n var currentForm = this.currentForm,\n groups = this.groups = {},\n rules;\n $.each(this.settings.groups, function (key, value) {\n if (typeof value === \"string\") {\n value = value.split(/\\s/);\n }\n $.each(value, function (index, name) {\n groups[name] = key;\n });\n });\n rules = this.settings.rules;\n $.each(rules, function (key, value) {\n rules[key] = $.validator.normalizeRule(value);\n });\n function delegate(event) {\n var isContentEditable = typeof $(this).attr(\"contenteditable\") !== \"undefined\" && $(this).attr(\"contenteditable\") !== \"false\";\n\n // Set form expando on contenteditable\n if (!this.form && isContentEditable) {\n this.form = $(this).closest(\"form\")[0];\n this.name = $(this).attr(\"name\");\n }\n\n // Ignore the element if it belongs to another form. This will happen mainly\n // when setting the `form` attribute of an input to the id of another form.\n if (currentForm !== this.form) {\n return;\n }\n var validator = $.data(this.form, \"validator\"),\n eventType = \"on\" + event.type.replace(/^validate/, \"\"),\n settings = validator.settings;\n if (settings[eventType] && !$(this).is(settings.ignore)) {\n settings[eventType].call(validator, this, event);\n }\n }\n var focusListeners = [\":text\", \"[type='password']\", \"[type='file']\", \"select\", \"textarea\", \"[type='number']\", \"[type='search']\", \"[type='tel']\", \"[type='url']\", \"[type='email']\", \"[type='datetime']\", \"[type='date']\", \"[type='month']\", \"[type='week']\", \"[type='time']\", \"[type='datetime-local']\", \"[type='range']\", \"[type='color']\", \"[type='radio']\", \"[type='checkbox']\", \"[contenteditable]\", \"[type='button']\"];\n var clickListeners = [\"select\", \"option\", \"[type='radio']\", \"[type='checkbox']\"];\n $(this.currentForm).on(\"focusin.validate focusout.validate keyup.validate\", focusListeners.concat(this.settings.customElements).join(\", \"), delegate)\n\n // Support: Chrome, oldIE\n // \"select\" is provided as event.target when clicking a option\n .on(\"click.validate\", clickListeners.concat(this.settings.customElements).join(\", \"), delegate);\n if (this.settings.invalidHandler) {\n $(this.currentForm).on(\"invalid-form.validate\", this.settings.invalidHandler);\n }\n },\n // https://jqueryvalidation.org/Validator.form/\n form: function () {\n this.checkForm();\n $.extend(this.submitted, this.errorMap);\n this.invalid = $.extend({}, this.errorMap);\n if (!this.valid()) {\n $(this.currentForm).triggerHandler(\"invalid-form\", [this]);\n }\n this.showErrors();\n return this.valid();\n },\n checkForm: function () {\n this.prepareForm();\n for (var i = 0, elements = this.currentElements = this.elements(); elements[i]; i++) {\n this.check(elements[i]);\n }\n return this.valid();\n },\n // https://jqueryvalidation.org/Validator.element/\n element: function (element) {\n var cleanElement = this.clean(element),\n checkElement = this.validationTargetFor(cleanElement),\n v = this,\n result = true,\n rs,\n group;\n if (checkElement === undefined) {\n delete this.invalid[cleanElement.name];\n } else {\n this.prepareElement(checkElement);\n this.currentElements = $(checkElement);\n\n // If this element is grouped, then validate all group elements already\n // containing a value\n group = this.groups[checkElement.name];\n if (group) {\n $.each(this.groups, function (name, testgroup) {\n if (testgroup === group && name !== checkElement.name) {\n cleanElement = v.validationTargetFor(v.clean(v.findByName(name)));\n if (cleanElement && cleanElement.name in v.invalid) {\n v.currentElements.push(cleanElement);\n result = v.check(cleanElement) && result;\n }\n }\n });\n }\n rs = this.check(checkElement) !== false;\n result = result && rs;\n if (rs) {\n this.invalid[checkElement.name] = false;\n } else {\n this.invalid[checkElement.name] = true;\n }\n if (!this.numberOfInvalids()) {\n // Hide error containers on last error\n this.toHide = this.toHide.add(this.containers);\n }\n this.showErrors();\n\n // Add aria-invalid status for screen readers\n $(element).attr(\"aria-invalid\", !rs);\n }\n return result;\n },\n // https://jqueryvalidation.org/Validator.showErrors/\n showErrors: function (errors) {\n if (errors) {\n var validator = this;\n\n // Add items to error list and map\n $.extend(this.errorMap, errors);\n this.errorList = $.map(this.errorMap, function (message, name) {\n return {\n message: message,\n element: validator.findByName(name)[0]\n };\n });\n\n // Remove items from success list\n this.successList = $.grep(this.successList, function (element) {\n return !(element.name in errors);\n });\n }\n if (this.settings.showErrors) {\n this.settings.showErrors.call(this, this.errorMap, this.errorList);\n } else {\n this.defaultShowErrors();\n }\n },\n // https://jqueryvalidation.org/Validator.resetForm/\n resetForm: function () {\n if ($.fn.resetForm) {\n $(this.currentForm).resetForm();\n }\n this.invalid = {};\n this.submitted = {};\n this.prepareForm();\n this.hideErrors();\n var elements = this.elements().removeData(\"previousValue\").removeAttr(\"aria-invalid\");\n this.resetElements(elements);\n },\n resetElements: function (elements) {\n var i;\n if (this.settings.unhighlight) {\n for (i = 0; elements[i]; i++) {\n this.settings.unhighlight.call(this, elements[i], this.settings.errorClass, \"\");\n this.findByName(elements[i].name).removeClass(this.settings.validClass);\n }\n } else {\n elements.removeClass(this.settings.errorClass).removeClass(this.settings.validClass);\n }\n },\n numberOfInvalids: function () {\n return this.objectLength(this.invalid);\n },\n objectLength: function (obj) {\n /* jshint unused: false */\n var count = 0,\n i;\n for (i in obj) {\n // This check allows counting elements with empty error\n // message as invalid elements\n if (obj[i] !== undefined && obj[i] !== null && obj[i] !== false) {\n count++;\n }\n }\n return count;\n },\n hideErrors: function () {\n this.hideThese(this.toHide);\n },\n hideThese: function (errors) {\n errors.not(this.containers).text(\"\");\n this.addWrapper(errors).hide();\n },\n valid: function () {\n return this.size() === 0;\n },\n size: function () {\n return this.errorList.length;\n },\n focusInvalid: function () {\n if (this.settings.focusInvalid) {\n try {\n $(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter(\":visible\").trigger(\"focus\")\n\n // Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n .trigger(\"focusin\");\n } catch (e) {\n\n // Ignore IE throwing errors when focusing hidden elements\n }\n }\n },\n findLastActive: function () {\n var lastActive = this.lastActive;\n return lastActive && $.grep(this.errorList, function (n) {\n return n.element.name === lastActive.name;\n }).length === 1 && lastActive;\n },\n elements: function () {\n var validator = this,\n rulesCache = {},\n selectors = [\"input\", \"select\", \"textarea\", \"[contenteditable]\"];\n\n // Select all valid inputs inside the form (no submit or reset buttons)\n return $(this.currentForm).find(selectors.concat(this.settings.customElements).join(\", \")).not(\":submit, :reset, :image, :disabled\").not(this.settings.ignore).filter(function () {\n var name = this.name || $(this).attr(\"name\"); // For contenteditable\n var isContentEditable = typeof $(this).attr(\"contenteditable\") !== \"undefined\" && $(this).attr(\"contenteditable\") !== \"false\";\n if (!name && validator.settings.debug && window.console) {\n console.error(\"%o has no name assigned\", this);\n }\n\n // Set form expando on contenteditable\n if (isContentEditable) {\n this.form = $(this).closest(\"form\")[0];\n this.name = name;\n }\n\n // Ignore elements that belong to other/nested forms\n if (this.form !== validator.currentForm) {\n return false;\n }\n\n // Select only the first element for each name, and only those with rules specified\n if (name in rulesCache || !validator.objectLength($(this).rules())) {\n return false;\n }\n rulesCache[name] = true;\n return true;\n });\n },\n clean: function (selector) {\n return $(selector)[0];\n },\n errors: function () {\n var errorClass = this.settings.errorClass.split(\" \").join(\".\");\n return $(this.settings.errorElement + \".\" + errorClass, this.errorContext);\n },\n resetInternals: function () {\n this.successList = [];\n this.errorList = [];\n this.errorMap = {};\n this.toShow = $([]);\n this.toHide = $([]);\n },\n reset: function () {\n this.resetInternals();\n this.currentElements = $([]);\n },\n prepareForm: function () {\n this.reset();\n this.toHide = this.errors().add(this.containers);\n },\n prepareElement: function (element) {\n this.reset();\n this.toHide = this.errorsFor(element);\n },\n elementValue: function (element) {\n var $element = $(element),\n type = element.type,\n isContentEditable = typeof $element.attr(\"contenteditable\") !== \"undefined\" && $element.attr(\"contenteditable\") !== \"false\",\n val,\n idx;\n if (type === \"radio\" || type === \"checkbox\") {\n return this.findByName(element.name).filter(\":checked\").val();\n } else if (type === \"number\" && typeof element.validity !== \"undefined\") {\n return element.validity.badInput ? \"NaN\" : $element.val();\n }\n if (isContentEditable) {\n val = $element.text();\n } else {\n val = $element.val();\n }\n if (type === \"file\") {\n // Modern browser (chrome & safari)\n if (val.substr(0, 12) === \"C:\\\\fakepath\\\\\") {\n return val.substr(12);\n }\n\n // Legacy browsers\n // Unix-based path\n idx = val.lastIndexOf(\"/\");\n if (idx >= 0) {\n return val.substr(idx + 1);\n }\n\n // Windows-based path\n idx = val.lastIndexOf(\"\\\\\");\n if (idx >= 0) {\n return val.substr(idx + 1);\n }\n\n // Just the file name\n return val;\n }\n if (typeof val === \"string\") {\n return val.replace(/\\r/g, \"\");\n }\n return val;\n },\n check: function (element) {\n element = this.validationTargetFor(this.clean(element));\n var rules = $(element).rules(),\n rulesCount = $.map(rules, function (n, i) {\n return i;\n }).length,\n dependencyMismatch = false,\n val = this.elementValue(element),\n result,\n method,\n rule,\n normalizer;\n\n // Abort any pending Ajax request from a previous call to this method.\n this.abortRequest(element);\n\n // Prioritize the local normalizer defined for this element over the global one\n // if the former exists, otherwise user the global one in case it exists.\n if (typeof rules.normalizer === \"function\") {\n normalizer = rules.normalizer;\n } else if (typeof this.settings.normalizer === \"function\") {\n normalizer = this.settings.normalizer;\n }\n\n // If normalizer is defined, then call it to retreive the changed value instead\n // of using the real one.\n // Note that `this` in the normalizer is `element`.\n if (normalizer) {\n val = normalizer.call(element, val);\n\n // Delete the normalizer from rules to avoid treating it as a pre-defined method.\n delete rules.normalizer;\n }\n for (method in rules) {\n rule = {\n method: method,\n parameters: rules[method]\n };\n try {\n result = $.validator.methods[method].call(this, val, element, rule.parameters);\n\n // If a method indicates that the field is optional and therefore valid,\n // don't mark it as valid when there are no other rules\n if (result === \"dependency-mismatch\" && rulesCount === 1) {\n dependencyMismatch = true;\n continue;\n }\n dependencyMismatch = false;\n if (result === \"pending\") {\n this.toHide = this.toHide.not(this.errorsFor(element));\n return;\n }\n if (!result) {\n this.formatAndAdd(element, rule);\n return false;\n }\n } catch (e) {\n if (this.settings.debug && window.console) {\n console.log(\"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e);\n }\n if (e instanceof TypeError) {\n e.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n }\n throw e;\n }\n }\n if (dependencyMismatch) {\n return;\n }\n if (this.objectLength(rules)) {\n this.successList.push(element);\n }\n return true;\n },\n // Return the custom message for the given element and validation method\n // specified in the element's HTML5 data attribute\n // return the generic message if present and no method specific message is present\n customDataMessage: function (element, method) {\n return $(element).data(\"msg\" + method.charAt(0).toUpperCase() + method.substring(1).toLowerCase()) || $(element).data(\"msg\");\n },\n // Return the custom message for the given element name and validation method\n customMessage: function (name, method) {\n var m = this.settings.messages[name];\n return m && (m.constructor === String ? m : m[method]);\n },\n // Return the first defined argument, allowing empty strings\n findDefined: function () {\n for (var i = 0; i < arguments.length; i++) {\n if (arguments[i] !== undefined) {\n return arguments[i];\n }\n }\n return undefined;\n },\n // The second parameter 'rule' used to be a string, and extended to an object literal\n // of the following form:\n // rule = {\n // method: \"method name\",\n // parameters: \"the given method parameters\"\n // }\n //\n // The old behavior still supported, kept to maintain backward compatibility with\n // old code, and will be removed in the next major release.\n defaultMessage: function (element, rule) {\n if (typeof rule === \"string\") {\n rule = {\n method: rule\n };\n }\n var message = this.findDefined(this.customMessage(element.name, rule.method), this.customDataMessage(element, rule.method),\n // 'title' is never undefined, so handle empty string as undefined\n !this.settings.ignoreTitle && element.title || undefined, $.validator.messages[rule.method], \"<strong>Warning: No message defined for \" + element.name + \"</strong>\"),\n theregex = /\\$?\\{(\\d+)\\}/g;\n if (typeof message === \"function\") {\n message = message.call(this, rule.parameters, element);\n } else if (theregex.test(message)) {\n message = $.validator.format(message.replace(theregex, \"{$1}\"), rule.parameters);\n }\n return message;\n },\n formatAndAdd: function (element, rule) {\n var message = this.defaultMessage(element, rule);\n this.errorList.push({\n message: message,\n element: element,\n method: rule.method\n });\n this.errorMap[element.name] = message;\n this.submitted[element.name] = message;\n },\n addWrapper: function (toToggle) {\n if (this.settings.wrapper) {\n toToggle = toToggle.add(toToggle.parent(this.settings.wrapper));\n }\n return toToggle;\n },\n defaultShowErrors: function () {\n var i, elements, error;\n for (i = 0; this.errorList[i]; i++) {\n error = this.errorList[i];\n if (this.settings.highlight) {\n this.settings.highlight.call(this, error.element, this.settings.errorClass, this.settings.validClass);\n }\n this.showLabel(error.element, error.message);\n }\n if (this.errorList.length) {\n this.toShow = this.toShow.add(this.containers);\n }\n if (this.settings.success) {\n for (i = 0; this.successList[i]; i++) {\n this.showLabel(this.successList[i]);\n }\n }\n if (this.settings.unhighlight) {\n for (i = 0, elements = this.validElements(); elements[i]; i++) {\n this.settings.unhighlight.call(this, elements[i], this.settings.errorClass, this.settings.validClass);\n }\n }\n this.toHide = this.toHide.not(this.toShow);\n this.hideErrors();\n this.addWrapper(this.toShow).show();\n },\n validElements: function () {\n return this.currentElements.not(this.invalidElements());\n },\n invalidElements: function () {\n return $(this.errorList).map(function () {\n return this.element;\n });\n },\n showLabel: function (element, message) {\n var place,\n group,\n errorID,\n v,\n error = this.errorsFor(element),\n elementID = this.idOrName(element),\n describedBy = $(element).attr(\"aria-describedby\");\n if (error.length) {\n // Refresh error/success class\n error.removeClass(this.settings.validClass).addClass(this.settings.errorClass);\n\n // Replace message on existing label\n if (this.settings && this.settings.escapeHtml) {\n error.text(message || \"\");\n } else {\n error.html(message || \"\");\n }\n } else {\n // Create error element\n error = $(\"<\" + this.settings.errorElement + \">\").attr(\"id\", elementID + \"-error\").addClass(this.settings.errorClass);\n if (this.settings && this.settings.escapeHtml) {\n error.text(message || \"\");\n } else {\n error.html(message || \"\");\n }\n\n // Maintain reference to the element to be placed into the DOM\n place = error;\n if (this.settings.wrapper) {\n // Make sure the element is visible, even in IE\n // actually showing the wrapped element is handled elsewhere\n place = error.hide().show().wrap(\"<\" + this.settings.wrapper + \"/>\").parent();\n }\n if (this.labelContainer.length) {\n this.labelContainer.append(place);\n } else if (this.settings.errorPlacement) {\n this.settings.errorPlacement.call(this, place, $(element));\n } else {\n place.insertAfter(element);\n }\n\n // Link error back to the element\n if (error.is(\"label\")) {\n // If the error is a label, then associate using 'for'\n error.attr(\"for\", elementID);\n\n // If the element is not a child of an associated label, then it's necessary\n // to explicitly apply aria-describedby\n } else if (error.parents(\"label[for='\" + this.escapeCssMeta(elementID) + \"']\").length === 0) {\n errorID = error.attr(\"id\");\n\n // Respect existing non-error aria-describedby\n if (!describedBy) {\n describedBy = errorID;\n } else if (!describedBy.match(new RegExp(\"\\\\b\" + this.escapeCssMeta(errorID) + \"\\\\b\"))) {\n // Add to end of list if not already present\n describedBy += \" \" + errorID;\n }\n $(element).attr(\"aria-describedby\", describedBy);\n\n // If this element is grouped, then assign to all elements in the same group\n group = this.groups[element.name];\n if (group) {\n v = this;\n $.each(v.groups, function (name, testgroup) {\n if (testgroup === group) {\n $(\"[name='\" + v.escapeCssMeta(name) + \"']\", v.currentForm).attr(\"aria-describedby\", error.attr(\"id\"));\n }\n });\n }\n }\n }\n if (!message && this.settings.success) {\n error.text(\"\");\n if (typeof this.settings.success === \"string\") {\n error.addClass(this.settings.success);\n } else {\n this.settings.success(error, element);\n }\n }\n this.toShow = this.toShow.add(error);\n },\n errorsFor: function (element) {\n var name = this.escapeCssMeta(this.idOrName(element)),\n describer = $(element).attr(\"aria-describedby\"),\n selector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n // 'aria-describedby' should directly reference the error element\n if (describer) {\n selector = selector + \", #\" + this.escapeCssMeta(describer).replace(/\\s+/g, \", #\");\n }\n return this.errors().filter(selector);\n },\n // See https://api.jquery.com/category/selectors/, for CSS\n // meta-characters that should be escaped in order to be used with JQuery\n // as a literal part of a name/id or any selector.\n escapeCssMeta: function (string) {\n if (string === undefined) {\n return \"\";\n }\n return string.replace(/([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\");\n },\n idOrName: function (element) {\n return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);\n },\n validationTargetFor: function (element) {\n // If radio/checkbox, validate first element in group instead\n if (this.checkable(element)) {\n element = this.findByName(element.name);\n }\n\n // Always apply ignore filter\n return $(element).not(this.settings.ignore)[0];\n },\n checkable: function (element) {\n return /radio|checkbox/i.test(element.type);\n },\n findByName: function (name) {\n return $(this.currentForm).find(\"[name='\" + this.escapeCssMeta(name) + \"']\");\n },\n getLength: function (value, element) {\n switch (element.nodeName.toLowerCase()) {\n case \"select\":\n return $(\"option:selected\", element).length;\n case \"input\":\n if (this.checkable(element)) {\n return this.findByName(element.name).filter(\":checked\").length;\n }\n }\n return value.length;\n },\n depend: function (param, element) {\n return this.dependTypes[typeof param] ? this.dependTypes[typeof param](param, element) : true;\n },\n dependTypes: {\n \"boolean\": function (param) {\n return param;\n },\n \"string\": function (param, element) {\n return !!$(param, element.form).length;\n },\n \"function\": function (param, element) {\n return param(element);\n }\n },\n optional: function (element) {\n var val = this.elementValue(element);\n return !$.validator.methods.required.call(this, val, element) && \"dependency-mismatch\";\n },\n elementAjaxPort: function (element) {\n return \"validate\" + element.name;\n },\n startRequest: function (element) {\n if (!this.pending[element.name]) {\n this.pendingRequest++;\n $(element).addClass(this.settings.pendingClass);\n this.pending[element.name] = true;\n }\n },\n stopRequest: function (element, valid) {\n this.pendingRequest--;\n\n // Sometimes synchronization fails, make sure pendingRequest is never < 0\n if (this.pendingRequest < 0) {\n this.pendingRequest = 0;\n }\n delete this.pending[element.name];\n $(element).removeClass(this.settings.pendingClass);\n if (valid && this.pendingRequest === 0 && this.formSubmitted && this.form() && this.pendingRequest === 0) {\n $(this.currentForm).trigger(\"submit\");\n\n // Remove the hidden input that was used as a replacement for the\n // missing submit button. The hidden input is added by `handle()`\n // to ensure that the value of the used submit button is passed on\n // for scripted submits triggered by this method\n if (this.submitButton) {\n $(\"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm).remove();\n }\n this.formSubmitted = false;\n } else if (!valid && this.pendingRequest === 0 && this.formSubmitted) {\n $(this.currentForm).triggerHandler(\"invalid-form\", [this]);\n this.formSubmitted = false;\n }\n },\n abortRequest: function (element) {\n var port;\n if (this.pending[element.name]) {\n port = this.elementAjaxPort(element);\n $.ajaxAbort(port);\n this.pendingRequest--;\n\n // Sometimes synchronization fails, make sure pendingRequest is never < 0\n if (this.pendingRequest < 0) {\n this.pendingRequest = 0;\n }\n delete this.pending[element.name];\n $(element).removeClass(this.settings.pendingClass);\n }\n },\n previousValue: function (element, method) {\n method = typeof method === \"string\" && method || \"remote\";\n return $.data(element, \"previousValue\") || $.data(element, \"previousValue\", {\n old: null,\n valid: true,\n message: this.defaultMessage(element, {\n method: method\n })\n });\n },\n // Cleans up all forms and elements, removes validator-specific events\n destroy: function () {\n this.resetForm();\n $(this.currentForm).off(\".validate\").removeData(\"validator\").find(\".validate-equalTo-blur\").off(\".validate-equalTo\").removeClass(\"validate-equalTo-blur\").find(\".validate-lessThan-blur\").off(\".validate-lessThan\").removeClass(\"validate-lessThan-blur\").find(\".validate-lessThanEqual-blur\").off(\".validate-lessThanEqual\").removeClass(\"validate-lessThanEqual-blur\").find(\".validate-greaterThanEqual-blur\").off(\".validate-greaterThanEqual\").removeClass(\"validate-greaterThanEqual-blur\").find(\".validate-greaterThan-blur\").off(\".validate-greaterThan\").removeClass(\"validate-greaterThan-blur\");\n }\n },\n classRuleSettings: {\n required: {\n required: true\n },\n email: {\n email: true\n },\n url: {\n url: true\n },\n date: {\n date: true\n },\n dateISO: {\n dateISO: true\n },\n number: {\n number: true\n },\n digits: {\n digits: true\n },\n creditcard: {\n creditcard: true\n }\n },\n addClassRules: function (className, rules) {\n if (className.constructor === String) {\n this.classRuleSettings[className] = rules;\n } else {\n $.extend(this.classRuleSettings, className);\n }\n },\n classRules: function (element) {\n var rules = {},\n classes = $(element).attr(\"class\");\n if (classes) {\n $.each(classes.split(\" \"), function () {\n if (this in $.validator.classRuleSettings) {\n $.extend(rules, $.validator.classRuleSettings[this]);\n }\n });\n }\n return rules;\n },\n normalizeAttributeRule: function (rules, type, method, value) {\n // Convert the value to a number for number inputs, and for text for backwards compability\n // allows type=\"date\" and others to be compared as strings\n if (/min|max|step/.test(method) && (type === null || /number|range|text/.test(type))) {\n value = Number(value);\n\n // Support Opera Mini, which returns NaN for undefined minlength\n if (isNaN(value)) {\n value = undefined;\n }\n }\n if (value || value === 0) {\n rules[method] = value;\n } else if (type === method && type !== \"range\") {\n // Exception: the jquery validate 'range' method\n // does not test for the html5 'range' type\n rules[type === \"date\" ? \"dateISO\" : method] = true;\n }\n },\n attributeRules: function (element) {\n var rules = {},\n $element = $(element),\n type = element.getAttribute(\"type\"),\n method,\n value;\n for (method in $.validator.methods) {\n // Support for <input required> in both html5 and older browsers\n if (method === \"required\") {\n value = element.getAttribute(method);\n\n // Some browsers return an empty string for the required attribute\n // and non-HTML5 browsers might have required=\"\" markup\n if (value === \"\") {\n value = true;\n }\n\n // Force non-HTML5 browsers to return bool\n value = !!value;\n } else {\n value = $element.attr(method);\n }\n this.normalizeAttributeRule(rules, type, method, value);\n }\n\n // 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {\n delete rules.maxlength;\n }\n return rules;\n },\n dataRules: function (element) {\n var rules = {},\n $element = $(element),\n type = element.getAttribute(\"type\"),\n method,\n value;\n for (method in $.validator.methods) {\n value = $element.data(\"rule\" + method.charAt(0).toUpperCase() + method.substring(1).toLowerCase());\n\n // Cast empty attributes like `data-rule-required` to `true`\n if (value === \"\") {\n value = true;\n }\n this.normalizeAttributeRule(rules, type, method, value);\n }\n return rules;\n },\n staticRules: function (element) {\n var rules = {},\n validator = $.data(element.form, \"validator\");\n if (validator.settings.rules) {\n rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};\n }\n return rules;\n },\n normalizeRules: function (rules, element) {\n // Handle dependency check\n $.each(rules, function (prop, val) {\n // Ignore rule when param is explicitly false, eg. required:false\n if (val === false) {\n delete rules[prop];\n return;\n }\n if (val.param || val.depends) {\n var keepRule = true;\n switch (typeof val.depends) {\n case \"string\":\n keepRule = !!$(val.depends, element.form).length;\n break;\n case \"function\":\n keepRule = val.depends.call(element, element);\n break;\n }\n if (keepRule) {\n rules[prop] = val.param !== undefined ? val.param : true;\n } else {\n $.data(element.form, \"validator\").resetElements($(element));\n delete rules[prop];\n }\n }\n });\n\n // Evaluate parameters\n $.each(rules, function (rule, parameter) {\n rules[rule] = typeof parameter === \"function\" && rule !== \"normalizer\" ? parameter(element) : parameter;\n });\n\n // Clean number parameters\n $.each([\"minlength\", \"maxlength\"], function () {\n if (rules[this]) {\n rules[this] = Number(rules[this]);\n }\n });\n $.each([\"rangelength\", \"range\"], function () {\n var parts;\n if (rules[this]) {\n if (Array.isArray(rules[this])) {\n rules[this] = [Number(rules[this][0]), Number(rules[this][1])];\n } else if (typeof rules[this] === \"string\") {\n parts = rules[this].replace(/[\\[\\]]/g, \"\").split(/[\\s,]+/);\n rules[this] = [Number(parts[0]), Number(parts[1])];\n }\n }\n });\n if ($.validator.autoCreateRanges) {\n // Auto-create ranges\n if (rules.min != null && rules.max != null) {\n rules.range = [rules.min, rules.max];\n delete rules.min;\n delete rules.max;\n }\n if (rules.minlength != null && rules.maxlength != null) {\n rules.rangelength = [rules.minlength, rules.maxlength];\n delete rules.minlength;\n delete rules.maxlength;\n }\n }\n return rules;\n },\n // Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n normalizeRule: function (data) {\n if (typeof data === \"string\") {\n var transformed = {};\n $.each(data.split(/\\s/), function () {\n transformed[this] = true;\n });\n data = transformed;\n }\n return data;\n },\n // https://jqueryvalidation.org/jQuery.validator.addMethod/\n addMethod: function (name, method, message) {\n $.validator.methods[name] = method;\n $.validator.messages[name] = message !== undefined ? message : $.validator.messages[name];\n if (method.length < 3) {\n $.validator.addClassRules(name, $.validator.normalizeRule(name));\n }\n },\n // https://jqueryvalidation.org/jQuery.validator.methods/\n methods: {\n // https://jqueryvalidation.org/required-method/\n required: function (value, element, param) {\n // Check if dependency is met\n if (!this.depend(param, element)) {\n return \"dependency-mismatch\";\n }\n if (element.nodeName.toLowerCase() === \"select\") {\n // Could be an array for select-multiple or a string, both are fine this way\n var val = $(element).val();\n return val && val.length > 0;\n }\n if (this.checkable(element)) {\n return this.getLength(value, element) > 0;\n }\n return value !== undefined && value !== null && value.length > 0;\n },\n // https://jqueryvalidation.org/email-method/\n email: function (value, element) {\n // From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n // Retrieved 2014-01-14\n // If you have a problem with this implementation, report a bug against the above spec\n // Or use custom methods to implement your own email validation\n return this.optional(element) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(value);\n },\n // https://jqueryvalidation.org/url-method/\n url: function (value, element) {\n // Copyright (c) 2010-2013 Diego Perini, MIT licensed\n // https://gist.github.com/dperini/729294\n // see also https://mathiasbynens.be/demo/url-regex\n // modified to allow protocol-relative URLs\n return this.optional(element) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test(value);\n },\n // https://jqueryvalidation.org/date-method/\n date: function () {\n var called = false;\n return function (value, element) {\n if (!called) {\n called = true;\n if (this.settings.debug && window.console) {\n console.warn(\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" + \"Please don't use it, since it relies on the Date constructor, which\\n\" + \"behaves very differently across browsers and locales. Use `dateISO`\\n\" + \"instead or one of the locale specific methods in `localizations/`\\n\" + \"and `additional-methods.js`.\");\n }\n }\n return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());\n };\n }(),\n // https://jqueryvalidation.org/dateISO-method/\n dateISO: function (value, element) {\n return this.optional(element) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test(value);\n },\n // https://jqueryvalidation.org/number-method/\n number: function (value, element) {\n return this.optional(element) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:-?\\.\\d+)?$/.test(value);\n },\n // https://jqueryvalidation.org/digits-method/\n digits: function (value, element) {\n return this.optional(element) || /^\\d+$/.test(value);\n },\n // https://jqueryvalidation.org/minlength-method/\n minlength: function (value, element, param) {\n var length = Array.isArray(value) ? value.length : this.getLength(value, element);\n return this.optional(element) || length >= param;\n },\n // https://jqueryvalidation.org/maxlength-method/\n maxlength: function (value, element, param) {\n var length = Array.isArray(value) ? value.length : this.getLength(value, element);\n return this.optional(element) || length <= param;\n },\n // https://jqueryvalidation.org/rangelength-method/\n rangelength: function (value, element, param) {\n var length = Array.isArray(value) ? value.length : this.getLength(value, element);\n return this.optional(element) || length >= param[0] && length <= param[1];\n },\n // https://jqueryvalidation.org/min-method/\n min: function (value, element, param) {\n return this.optional(element) || value >= param;\n },\n // https://jqueryvalidation.org/max-method/\n max: function (value, element, param) {\n return this.optional(element) || value <= param;\n },\n // https://jqueryvalidation.org/range-method/\n range: function (value, element, param) {\n return this.optional(element) || value >= param[0] && value <= param[1];\n },\n // https://jqueryvalidation.org/step-method/\n step: function (value, element, param) {\n var type = $(element).attr(\"type\"),\n errorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n supportedTypes = [\"text\", \"number\", \"range\"],\n re = new RegExp(\"\\\\b\" + type + \"\\\\b\"),\n notSupported = type && !re.test(supportedTypes.join()),\n decimalPlaces = function (num) {\n var match = (\"\" + num).match(/(?:\\.(\\d+))?$/);\n if (!match) {\n return 0;\n }\n\n // Number of digits right of decimal point.\n return match[1] ? match[1].length : 0;\n },\n toInt = function (num) {\n return Math.round(num * Math.pow(10, decimals));\n },\n valid = true,\n decimals;\n\n // Works only for text, number and range input types\n // TODO find a way to support input types date, datetime, datetime-local, month, time and week\n if (notSupported) {\n throw new Error(errorMessage);\n }\n decimals = decimalPlaces(param);\n\n // Value can't have too many decimals\n if (decimalPlaces(value) > decimals || toInt(value) % toInt(param) !== 0) {\n valid = false;\n }\n return this.optional(element) || valid;\n },\n // https://jqueryvalidation.org/equalTo-method/\n equalTo: function (value, element, param) {\n // Bind to the blur event of the target in order to revalidate whenever the target field is updated\n var target = $(param);\n if (this.settings.onfocusout && target.not(\".validate-equalTo-blur\").length) {\n target.addClass(\"validate-equalTo-blur\").on(\"blur.validate-equalTo\", function () {\n $(element).valid();\n });\n }\n return value === target.val();\n },\n // https://jqueryvalidation.org/remote-method/\n remote: function (value, element, param, method) {\n if (this.optional(element)) {\n return \"dependency-mismatch\";\n }\n method = typeof method === \"string\" && method || \"remote\";\n var previous = this.previousValue(element, method),\n validator,\n data,\n optionDataString;\n if (!this.settings.messages[element.name]) {\n this.settings.messages[element.name] = {};\n }\n previous.originalMessage = previous.originalMessage || this.settings.messages[element.name][method];\n this.settings.messages[element.name][method] = previous.message;\n param = typeof param === \"string\" && {\n url: param\n } || param;\n optionDataString = $.param($.extend({\n data: value\n }, param.data));\n if (previous.valid !== null && previous.old === optionDataString) {\n return previous.valid;\n }\n previous.old = optionDataString;\n previous.valid = null;\n validator = this;\n this.startRequest(element);\n data = {};\n data[element.name] = value;\n $.ajax($.extend(true, {\n mode: \"abort\",\n port: this.elementAjaxPort(element),\n dataType: \"json\",\n data: data,\n context: validator.currentForm,\n success: function (response) {\n var valid = response === true || response === \"true\",\n errors,\n message,\n submitted;\n validator.settings.messages[element.name][method] = previous.originalMessage;\n if (valid) {\n submitted = validator.formSubmitted;\n validator.toHide = validator.errorsFor(element);\n validator.formSubmitted = submitted;\n validator.successList.push(element);\n validator.invalid[element.name] = false;\n validator.showErrors();\n } else {\n errors = {};\n message = response || validator.defaultMessage(element, {\n method: method,\n parameters: value\n });\n errors[element.name] = previous.message = message;\n validator.invalid[element.name] = true;\n validator.showErrors(errors);\n }\n previous.valid = valid;\n validator.stopRequest(element, valid);\n }\n }, param));\n return \"pending\";\n }\n }\n });\n\n // Ajax mode: abort\n // usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n // $.ajaxAbort( port );\n // if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\n var pendingRequests = {},\n ajax;\n\n // Use a prefilter if available (1.5+)\n if ($.ajaxPrefilter) {\n $.ajaxPrefilter(function (settings, _, xhr) {\n var port = settings.port;\n if (settings.mode === \"abort\") {\n $.ajaxAbort(port);\n pendingRequests[port] = xhr;\n }\n });\n } else {\n // Proxy ajax\n ajax = $.ajax;\n $.ajax = function (settings) {\n var mode = (\"mode\" in settings ? settings : $.ajaxSettings).mode,\n port = (\"port\" in settings ? settings : $.ajaxSettings).port;\n if (mode === \"abort\") {\n $.ajaxAbort(port);\n pendingRequests[port] = ajax.apply(this, arguments);\n return pendingRequests[port];\n }\n return ajax.apply(this, arguments);\n };\n }\n\n // Abort the previous request without sending a new one\n $.ajaxAbort = function (port) {\n if (pendingRequests[port]) {\n pendingRequests[port].abort();\n delete pendingRequests[port];\n }\n };\n return $;\n});","/*rateyo V2.3.5, A simple and flexible star rating plugin\nprashanth pamidi (https://github.com/prrashi)*/\n!function (N) {\n \"use strict\";\n\n var Q = '<?xml version=\"1.0\" encoding=\"utf-8\"?><svg version=\"1.1\"xmlns=\"http://www.w3.org/2000/svg\"viewBox=\"0 12.705 512 486.59\"x=\"0px\" y=\"0px\"xml:space=\"preserve\"><polygon points=\"256.814,12.705 317.205,198.566 512.631,198.566 354.529,313.435 414.918,499.295 256.814,384.427 98.713,499.295 159.102,313.435 1,198.566 196.426,198.566 \"/></svg>',\n n = {\n starWidth: \"32px\",\n normalFill: \"gray\",\n ratedFill: \"#f39c12\",\n numStars: 5,\n maxValue: 5,\n precision: 1,\n rating: 0,\n fullStar: !1,\n halfStar: !1,\n readOnly: !1,\n spacing: \"0px\",\n rtl: !1,\n multiColor: null,\n onInit: null,\n onChange: null,\n onSet: null,\n starSvg: null\n },\n X = {\n startColor: \"#c0392b\",\n endColor: \"#f1c40f\"\n };\n function $(t, r, e) {\n return t === r ? t = r : t === e && (t = e), t;\n }\n function D(t) {\n return void 0 !== t;\n }\n var e = /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i,\n G = function (t) {\n if (!e.test(t)) return null;\n var r = e.exec(t);\n return {\n r: parseInt(r[1], 16),\n g: parseInt(r[2], 16),\n b: parseInt(r[3], 16)\n };\n };\n function H(t, r, e) {\n var n = e / 100 * (r - t);\n return 1 === (n = Math.round(t + n).toString(16)).length && (n = \"0\" + n), n;\n }\n function J(i, d) {\n this.node = i.get(0);\n var e = this;\n i.empty().addClass(\"jq-ry-container\");\n var g,\n n,\n m,\n h,\n v,\n t,\n r = N(\"<div/>\").addClass(\"jq-ry-group-wrapper\").appendTo(i),\n y = N(\"<div/>\").addClass(\"jq-ry-normal-group\").addClass(\"jq-ry-group\").appendTo(r),\n a = N(\"<div/>\").addClass(\"jq-ry-rated-group\").addClass(\"jq-ry-group\").appendTo(r),\n w = 0,\n o = d.rating,\n l = !1;\n function s(t) {\n D(t) || (t = d.rating);\n var r = (o = t) / g,\n e = r * m;\n 1 < r && (e += (Math.ceil(r) - 1) * v), k(d.ratedFill), (e = d.rtl ? 100 - e : e) < 0 ? e = 0 : 100 < e && (e = 100), a.css(\"width\", e + \"%\");\n }\n function c() {\n t = n * d.numStars + h * (d.numStars - 1), m = n / t * 100, v = h / t * 100, i.width(t), s();\n }\n function u(t) {\n var r = d.starWidth = t;\n return n = window.parseFloat(d.starWidth.replace(\"px\", \"\")), y.find(\"svg\").attr({\n width: d.starWidth,\n height: r\n }), a.find(\"svg\").attr({\n width: d.starWidth,\n height: r\n }), c(), i;\n }\n function p(t) {\n return d.spacing = t, h = parseFloat(d.spacing.replace(\"px\", \"\")), y.find(\"svg:not(:first-child)\").css({\n \"margin-left\": t\n }), a.find(\"svg:not(:first-child)\").css({\n \"margin-left\": t\n }), c(), i;\n }\n function f(t) {\n return d.normalFill = t, (d.rtl ? a : y).find(\"svg\").attr({\n fill: d.normalFill\n }), i;\n }\n var b = d.ratedFill;\n function k(t) {\n if (d.multiColor) {\n var r = (o - w) / d.maxValue * 100,\n e = d.multiColor || {};\n t = function (t, r, e) {\n if (!t || !r) return null;\n e = D(e) ? e : 0, t = G(t), r = G(r);\n var n = H(t.r, r.r, e),\n a = H(t.b, r.b, e);\n return \"#\" + n + H(t.g, r.g, e) + a;\n }(e.startColor || X.startColor, e.endColor || X.endColor, r);\n } else b = t;\n return d.ratedFill = t, (d.rtl ? y : a).find(\"svg\").attr({\n fill: d.ratedFill\n }), i;\n }\n function x(t) {\n t = !!t, d.rtl = t, f(d.normalFill), s();\n }\n function S(t) {\n k((d.multiColor = t) || b);\n }\n function C(t) {\n d.numStars = t, g = d.maxValue / d.numStars, y.empty(), a.empty();\n for (var r = 0; r < d.numStars; r++) y.append(N(d.starSvg || Q)), a.append(N(d.starSvg || Q));\n return u(d.starWidth), f(d.normalFill), p(d.spacing), s(), i;\n }\n function F(t) {\n return d.maxValue = t, g = d.maxValue / d.numStars, d.rating > t && E(t), s(), i;\n }\n function j(t) {\n return d.precision = t, E(d.rating), i;\n }\n function q(t) {\n return d.halfStar = t, i;\n }\n function z(t) {\n return d.fullStar = t, i;\n }\n function I(t) {\n var r,\n e,\n n,\n a,\n i,\n o = y.offset().left,\n l = o + y.width(),\n s = d.maxValue,\n c = t.pageX,\n u = 0;\n if (c < o) u = w;else if (l < c) u = s;else {\n var p = (c - o) / (l - o);\n if (0 < h) for (var f = p *= 100; 0 < f;) m < f ? (u += g, f -= m + v) : (u += f / m * g, f = 0);else u = p * d.maxValue;\n e = (r = u) % g, n = g / 2, a = d.halfStar, ((i = d.fullStar) || a) && (i || a && n < e ? r += g - e : (r -= e, 0 < e && (r += n))), u = r;\n }\n return d.rtl && (u = s - u), parseFloat(u);\n }\n function V(t) {\n return d.readOnly = t, i.attr(\"readonly\", !0), L(), t || (i.removeAttr(\"readonly\"), i.on(\"mousemove\", M).on(\"mouseenter\", M).on(\"mouseleave\", T).on(\"click\", R).on(\"rateyo.init\", Y).on(\"rateyo.change\", _).on(\"rateyo.set\", B)), i;\n }\n function E(t) {\n var r = t,\n e = d.maxValue;\n return \"string\" == typeof r && (\"%\" === r[r.length - 1] && (r = r.substr(0, r.length - 1), F(e = 100)), r = parseFloat(r)), function (t, r, e) {\n if (!(r <= t && t <= e)) throw Error(\"Invalid Rating, expected value between \" + r + \" and \" + e);\n }(r, w, e), r = parseFloat(r.toFixed(d.precision)), $(parseFloat(r), w, e), d.rating = r, s(), l && i.trigger(\"rateyo.set\", {\n rating: r\n }), i;\n }\n function W(t) {\n return d.onInit = t, i;\n }\n function A(t) {\n return d.onSet = t, i;\n }\n function O(t) {\n return d.onChange = t, i;\n }\n function M(t) {\n var r = I(t).toFixed(d.precision),\n e = d.maxValue;\n s(r = $(parseFloat(r), w, e)), i.trigger(\"rateyo.change\", {\n rating: r\n });\n }\n function T() {\n var t, r;\n (r = !1, t = navigator.userAgent || navigator.vendor || window.opera, (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(t) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(t.substr(0, 4))) && (r = !0), r) || (s(), i.trigger(\"rateyo.change\", {\n rating: d.rating\n }));\n }\n function R(t) {\n var r = I(t).toFixed(d.precision);\n r = parseFloat(r), e.rating(r);\n }\n function Y(t, r) {\n d.onInit && \"function\" == typeof d.onInit && d.onInit.apply(this, [r.rating, e]);\n }\n function _(t, r) {\n d.onChange && \"function\" == typeof d.onChange && d.onChange.apply(this, [r.rating, e]);\n }\n function B(t, r) {\n d.onSet && \"function\" == typeof d.onSet && d.onSet.apply(this, [r.rating, e]);\n }\n function L() {\n i.off(\"mousemove\", M).off(\"mouseenter\", M).off(\"mouseleave\", T).off(\"click\", R).off(\"rateyo.init\", Y).off(\"rateyo.change\", _).off(\"rateyo.set\", B);\n }\n this.rating = function (t) {\n return D(t) ? (E(t), i) : d.rating;\n }, this.destroy = function () {\n var n, a;\n return d.readOnly || L(), J.prototype.collection = (n = i.get(0), a = this.collection, N.each(a, function (t) {\n if (n === this.node) {\n var r = a.slice(0, t),\n e = a.slice(t + 1, a.length);\n return a = r.concat(e), !1;\n }\n }), a), i.removeClass(\"jq-ry-container\").children().remove(), i;\n }, this.method = function (t) {\n if (!t) throw Error(\"Method name not specified!\");\n if (!D(this[t])) throw Error(\"Method \" + t + \" doesn't exist!\");\n var r = Array.prototype.slice.apply(arguments, []).slice(1);\n return this[t].apply(this, r);\n }, this.option = function (t, r) {\n if (!D(t)) return d;\n var e;\n switch (t) {\n case \"starWidth\":\n e = u;\n break;\n case \"numStars\":\n e = C;\n break;\n case \"normalFill\":\n e = f;\n break;\n case \"ratedFill\":\n e = k;\n break;\n case \"multiColor\":\n e = S;\n break;\n case \"maxValue\":\n e = F;\n break;\n case \"precision\":\n e = j;\n break;\n case \"rating\":\n e = E;\n break;\n case \"halfStar\":\n e = q;\n break;\n case \"fullStar\":\n e = z;\n break;\n case \"readOnly\":\n e = V;\n break;\n case \"spacing\":\n e = p;\n break;\n case \"rtl\":\n e = x;\n break;\n case \"onInit\":\n e = W;\n break;\n case \"onSet\":\n e = A;\n break;\n case \"onChange\":\n e = O;\n break;\n default:\n throw Error(\"No such option as \" + t);\n }\n return D(r) ? e(r) : d[t];\n }, C(d.numStars), V(d.readOnly), d.rtl && x(d.rtl), this.collection.push(this), this.rating(d.rating, !0), l = !0, i.trigger(\"rateyo.init\", {\n rating: d.rating\n });\n }\n function c(t, r) {\n var e;\n return N.each(r, function () {\n if (t === this.node) return e = this, !1;\n }), e;\n }\n J.prototype.collection = [], window.RateYo = J, N.fn.rateYo = function () {\n return function (e) {\n var i = J.prototype.collection,\n t = N(this);\n if (0 === t.length) return t;\n var r = Array.prototype.slice.apply(arguments, []);\n if (0 === r.length) e = r[0] = {};else {\n if (1 !== r.length || \"object\" != typeof r[0]) {\n if (1 <= r.length && \"string\" == typeof r[0]) {\n var o = r[0],\n l = r.slice(1),\n s = [];\n return N.each(t, function (t, r) {\n var e = c(r, i);\n if (!e) throw Error(\"Trying to set options before even initialization\");\n var n = e[o];\n if (!n) throw Error(\"Method \" + o + \" does not exist!\");\n var a = n.apply(e, l);\n s.push(a);\n }), s = 1 === s.length ? s[0] : s;\n }\n throw Error(\"Invalid Arguments\");\n }\n e = r[0];\n }\n return e = N.extend({}, n, e), N.each(t, function () {\n var t = c(this, i);\n if (t) return t;\n var r = N(this),\n n = {},\n a = N.extend({}, e);\n return N.each(r.data(), function (t, r) {\n if (0 === t.indexOf(\"rateyo\")) {\n var e = t.replace(/^rateyo/, \"\");\n e = e[0].toLowerCase() + e.slice(1), n[e] = r, delete a[e];\n }\n }), new J(N(this), N.extend({}, n, a));\n });\n }.apply(this, Array.prototype.slice.apply(arguments, []));\n };\n}(window.jQuery);","/*! ========================================================================\n * Bootstrap Toggle: bootstrap-toggle.js v2.2.0\n * http://www.bootstraptoggle.com\n * ========================================================================\n * Copyright 2014 Min Hur, The New York Times Company\n * Licensed under MIT\n * ======================================================================== */\n\n+function ($) {\n 'use strict';\n\n // TOGGLE PUBLIC CLASS DEFINITION\n // ==============================\n var Toggle = function (element, options) {\n this.$element = $(element);\n this.options = $.extend({}, this.defaults(), options);\n this.render();\n };\n Toggle.VERSION = '2.2.0';\n Toggle.DEFAULTS = {\n on: 'On',\n off: 'Off',\n onstyle: 'primary',\n offstyle: 'default',\n size: 'normal',\n style: '',\n width: null,\n height: null\n };\n Toggle.prototype.defaults = function () {\n return {\n on: this.$element.attr('data-on') || Toggle.DEFAULTS.on,\n off: this.$element.attr('data-off') || Toggle.DEFAULTS.off,\n onstyle: this.$element.attr('data-onstyle') || Toggle.DEFAULTS.onstyle,\n offstyle: this.$element.attr('data-offstyle') || Toggle.DEFAULTS.offstyle,\n size: this.$element.attr('data-size') || Toggle.DEFAULTS.size,\n style: this.$element.attr('data-style') || Toggle.DEFAULTS.style,\n width: this.$element.attr('data-width') || Toggle.DEFAULTS.width,\n height: this.$element.attr('data-height') || Toggle.DEFAULTS.height\n };\n };\n Toggle.prototype.render = function () {\n this._onstyle = 'btn-' + this.options.onstyle;\n this._offstyle = 'btn-' + this.options.offstyle;\n var size = this.options.size === 'large' ? 'btn-lg' : this.options.size === 'small' ? 'btn-sm' : this.options.size === 'mini' ? 'btn-xs' : '';\n var $toggleOn = $('<label class=\"btn\">').html(this.options.on).addClass(this._onstyle + ' ' + size);\n var $toggleOff = $('<label class=\"btn\">').html(this.options.off).addClass(this._offstyle + ' ' + size + ' active');\n var $toggleHandle = $('<span class=\"toggle-handle btn btn-default\">').addClass(size);\n var $toggleGroup = $('<div class=\"toggle-group\">').append($toggleOn, $toggleOff, $toggleHandle);\n var $toggle = $('<div class=\"toggle btn\" data-toggle=\"toggle\">').addClass(this.$element.prop('checked') ? this._onstyle : this._offstyle + ' off').addClass(size).addClass(this.options.style);\n this.$element.wrap($toggle);\n $.extend(this, {\n $toggle: this.$element.parent(),\n $toggleOn: $toggleOn,\n $toggleOff: $toggleOff,\n $toggleGroup: $toggleGroup\n });\n this.$toggle.append($toggleGroup);\n var width = this.options.width || Math.max($toggleOn.outerWidth(), $toggleOff.outerWidth()) + $toggleHandle.outerWidth() / 2;\n var height = this.options.height || Math.max($toggleOn.outerHeight(), $toggleOff.outerHeight());\n $toggleOn.addClass('toggle-on');\n $toggleOff.addClass('toggle-off');\n this.$toggle.css({\n width: width,\n height: height\n });\n if (this.options.height) {\n $toggleOn.css('line-height', $toggleOn.height() + 'px');\n $toggleOff.css('line-height', $toggleOff.height() + 'px');\n }\n this.update(true);\n this.trigger(true);\n };\n Toggle.prototype.toggle = function () {\n if (this.$element.prop('checked')) this.off();else this.on();\n };\n Toggle.prototype.on = function (silent) {\n if (this.$element.prop('disabled')) return false;\n this.$toggle.removeClass(this._offstyle + ' off').addClass(this._onstyle);\n this.$element.prop('checked', true);\n if (!silent) this.trigger();\n };\n Toggle.prototype.off = function (silent) {\n if (this.$element.prop('disabled')) return false;\n this.$toggle.removeClass(this._onstyle).addClass(this._offstyle + ' off');\n this.$element.prop('checked', false);\n if (!silent) this.trigger();\n };\n Toggle.prototype.enable = function () {\n this.$toggle.removeAttr('disabled');\n this.$element.prop('disabled', false);\n };\n Toggle.prototype.disable = function () {\n this.$toggle.attr('disabled', 'disabled');\n this.$element.prop('disabled', true);\n };\n Toggle.prototype.update = function (silent) {\n if (this.$element.prop('disabled')) this.disable();else this.enable();\n if (this.$element.prop('checked')) this.on(silent);else this.off(silent);\n };\n Toggle.prototype.trigger = function (silent) {\n this.$element.off('change.bs.toggle');\n if (!silent) this.$element.change();\n this.$element.on('change.bs.toggle', $.proxy(function () {\n this.update();\n }, this));\n };\n Toggle.prototype.destroy = function () {\n this.$element.off('change.bs.toggle');\n this.$toggleGroup.remove();\n this.$element.removeData('bs.toggle');\n this.$element.unwrap();\n };\n\n // TOGGLE PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data('bs.toggle');\n var options = typeof option == 'object' && option;\n if (!data) $this.data('bs.toggle', data = new Toggle(this, options));\n if (typeof option == 'string' && data[option]) data[option]();\n });\n }\n var old = $.fn.bootstrapToggle;\n $.fn.bootstrapToggle = Plugin;\n $.fn.bootstrapToggle.Constructor = Toggle;\n\n // TOGGLE NO CONFLICT\n // ==================\n\n $.fn.toggle.noConflict = function () {\n $.fn.bootstrapToggle = old;\n return this;\n };\n\n // TOGGLE DATA-API\n // ===============\n\n $(function () {\n $('input[type=checkbox][data-toggle^=toggle]').bootstrapToggle();\n });\n $(document).on('click.bs.toggle', 'div[data-toggle^=toggle]', function (e) {\n var $checkbox = $(this).find('input[type=checkbox]');\n $checkbox.bootstrapToggle('toggle');\n e.preventDefault();\n });\n}(jQuery);","(function ($) {\n \"use strict\";\n\n var defaultOptions = {\n tagClass: function(item) {\n return 'label label-info';\n },\n itemValue: function(item) {\n return item ? item.toString() : item;\n },\n itemText: function(item) {\n return this.itemValue(item);\n },\n itemTitle: function(item) {\n return null;\n },\n freeInput: true,\n addOnBlur: true,\n maxTags: undefined,\n maxChars: undefined,\n confirmKeys: [13, 44],\n delimiter: ',',\n delimiterRegex: null,\n cancelConfirmKeysOnEmpty: true,\n onTagExists: function(item, $tag) {\n $tag.hide().fadeIn();\n },\n trimValue: false,\n allowDuplicates: false\n };\n\n /**\n * Constructor function\n */\n function TagsInput(element, options) {\n this.itemsArray = [];\n\n this.$element = $(element);\n this.$element.hide();\n\n this.isSelect = (element.tagName === 'SELECT');\n this.multiple = (this.isSelect && element.hasAttribute('multiple'));\n this.objectItems = options && options.itemValue;\n this.placeholderText = element.hasAttribute('placeholder') ? this.$element.attr('placeholder') : '';\n this.inputSize = Math.max(1, this.placeholderText.length);\n\n this.$container = $('<div class=\"bootstrap-tagsinput\"></div>');\n this.$input = $('<input type=\"text\" placeholder=\"' + this.placeholderText + '\"/>').appendTo(this.$container);\n\n this.$element.before(this.$container);\n\n this.build(options);\n }\n\n TagsInput.prototype = {\n constructor: TagsInput,\n\n /**\n * Adds the given item as a new tag. Pass true to dontPushVal to prevent\n * updating the elements val()\n */\n add: function(item, dontPushVal, options) {\n var self = this;\n\n if (self.options.maxTags && self.itemsArray.length >= self.options.maxTags)\n return;\n\n // Ignore falsey values, except false\n if (item !== false && !item)\n return;\n\n // Trim value\n if (typeof item === \"string\" && self.options.trimValue) {\n item = $.trim(item);\n }\n\n // Throw an error when trying to add an object while the itemValue option was not set\n if (typeof item === \"object\" && !self.objectItems)\n throw(\"Can't add objects when itemValue option is not set\");\n\n // Ignore strings only containg whitespace\n if (item.toString().match(/^\\s*$/))\n return;\n\n // If SELECT but not multiple, remove current tag\n if (self.isSelect && !self.multiple && self.itemsArray.length > 0)\n self.remove(self.itemsArray[0]);\n\n if (typeof item === \"string\" && this.$element[0].tagName === 'INPUT') {\n var delimiter = (self.options.delimiterRegex) ? self.options.delimiterRegex : self.options.delimiter;\n var items = item.split(delimiter);\n if (items.length > 1) {\n for (var i = 0; i < items.length; i++) {\n this.add(items[i], true);\n }\n\n if (!dontPushVal)\n self.pushVal();\n return;\n }\n }\n\n var itemValue = self.options.itemValue(item),\n itemText = self.options.itemText(item),\n tagClass = self.options.tagClass(item),\n itemTitle = self.options.itemTitle(item);\n\n // Ignore items allready added\n var existing = $.grep(self.itemsArray, function(item) { return self.options.itemValue(item) === itemValue; } )[0];\n if (existing && !self.options.allowDuplicates) {\n // Invoke onTagExists\n if (self.options.onTagExists) {\n var $existingTag = $(\".tag\", self.$container).filter(function() { return $(this).data(\"item\") === existing; });\n self.options.onTagExists(item, $existingTag);\n }\n return;\n }\n\n // if length greater than limit\n if (self.items().toString().length + item.length + 1 > self.options.maxInputLength)\n return;\n\n // raise beforeItemAdd arg\n var beforeItemAddEvent = $.Event('beforeItemAdd', { item: item, cancel: false, options: options});\n self.$element.trigger(beforeItemAddEvent);\n if (beforeItemAddEvent.cancel)\n return;\n\n // register item in internal array and map\n self.itemsArray.push(item);\n\n // add a tag element\n\n var $tag = $('<span class=\"tag ' + htmlEncode(tagClass) + (itemTitle !== null ? ('\" title=\"' + itemTitle) : '') + '\">' + htmlEncode(itemText) + '<span data-role=\"remove\"></span></span>');\n $tag.data('item', item);\n self.findInputWrapper().before($tag);\n $tag.after(' ');\n\n // add <option /> if item represents a value not present in one of the <select />'s options\n if (self.isSelect && !$('option[value=\"' + encodeURIComponent(itemValue) + '\"]',self.$element)[0]) {\n var $option = $('<option selected>' + htmlEncode(itemText) + '</option>');\n $option.data('item', item);\n $option.attr('value', itemValue);\n self.$element.append($option);\n }\n\n if (!dontPushVal)\n self.pushVal();\n\n // Add class when reached maxTags\n if (self.options.maxTags === self.itemsArray.length || self.items().toString().length === self.options.maxInputLength)\n self.$container.addClass('bootstrap-tagsinput-max');\n\n self.$element.trigger($.Event('itemAdded', { item: item, options: options }));\n },\n\n /**\n * Removes the given item. Pass true to dontPushVal to prevent updating the\n * elements val()\n */\n remove: function(item, dontPushVal, options) {\n var self = this;\n\n if (self.objectItems) {\n if (typeof item === \"object\")\n item = $.grep(self.itemsArray, function(other) { return self.options.itemValue(other) == self.options.itemValue(item); } );\n else\n item = $.grep(self.itemsArray, function(other) { return self.options.itemValue(other) == item; } );\n\n item = item[item.length-1];\n }\n\n if (item) {\n var beforeItemRemoveEvent = $.Event('beforeItemRemove', { item: item, cancel: false, options: options });\n self.$element.trigger(beforeItemRemoveEvent);\n if (beforeItemRemoveEvent.cancel)\n return;\n\n $('.tag', self.$container).filter(function() { return $(this).data('item') === item; }).remove();\n $('option', self.$element).filter(function() { return $(this).data('item') === item; }).remove();\n if($.inArray(item, self.itemsArray) !== -1)\n self.itemsArray.splice($.inArray(item, self.itemsArray), 1);\n }\n\n if (!dontPushVal)\n self.pushVal();\n\n // Remove class when reached maxTags\n if (self.options.maxTags > self.itemsArray.length)\n self.$container.removeClass('bootstrap-tagsinput-max');\n\n self.$element.trigger($.Event('itemRemoved', { item: item, options: options }));\n },\n\n /**\n * Removes all items\n */\n removeAll: function() {\n var self = this;\n\n $('.tag', self.$container).remove();\n $('option', self.$element).remove();\n\n while(self.itemsArray.length > 0)\n self.itemsArray.pop();\n\n self.pushVal();\n },\n\n /**\n * Refreshes the tags so they match the text/value of their corresponding\n * item.\n */\n refresh: function() {\n var self = this;\n $('.tag', self.$container).each(function() {\n var $tag = $(this),\n item = $tag.data('item'),\n itemValue = self.options.itemValue(item),\n itemText = self.options.itemText(item),\n tagClass = self.options.tagClass(item);\n\n // Update tag's class and inner text\n $tag.attr('class', null);\n $tag.addClass('tag ' + htmlEncode(tagClass));\n $tag.contents().filter(function() {\n return this.nodeType == 3;\n })[0].nodeValue = htmlEncode(itemText);\n\n if (self.isSelect) {\n var option = $('option', self.$element).filter(function() { return $(this).data('item') === item; });\n option.attr('value', itemValue);\n }\n });\n },\n\n /**\n * Returns the items added as tags\n */\n items: function() {\n return this.itemsArray;\n },\n\n /**\n * Assembly value by retrieving the value of each item, and set it on the\n * element.\n */\n pushVal: function() {\n var self = this,\n val = $.map(self.items(), function(item) {\n return self.options.itemValue(item).toString();\n });\n\n self.$element.val(val, true).trigger('change');\n },\n\n /**\n * Initializes the tags input behaviour on the element\n */\n build: function(options) {\n var self = this;\n\n self.options = $.extend({}, defaultOptions, options);\n // When itemValue is set, freeInput should always be false\n if (self.objectItems)\n self.options.freeInput = false;\n\n makeOptionItemFunction(self.options, 'itemValue');\n makeOptionItemFunction(self.options, 'itemText');\n makeOptionFunction(self.options, 'tagClass');\n\n // Typeahead Bootstrap version 2.3.2\n if (self.options.typeahead) {\n var typeahead = self.options.typeahead || {};\n\n makeOptionFunction(typeahead, 'source');\n\n self.$input.typeahead($.extend({}, typeahead, {\n source: function (query, process) {\n function processItems(items) {\n var texts = [];\n\n for (var i = 0; i < items.length; i++) {\n var text = self.options.itemText(items[i]);\n map[text] = items[i];\n texts.push(text);\n }\n process(texts);\n }\n\n this.map = {};\n var map = this.map,\n data = typeahead.source(query);\n\n if ($.isFunction(data.success)) {\n // support for Angular callbacks\n data.success(processItems);\n } else if ($.isFunction(data.then)) {\n // support for Angular promises\n data.then(processItems);\n } else {\n // support for functions and jquery promises\n $.when(data)\n .then(processItems);\n }\n },\n updater: function (text) {\n self.add(this.map[text]);\n return this.map[text];\n },\n matcher: function (text) {\n return (text.toLowerCase().indexOf(this.query.trim().toLowerCase()) !== -1);\n },\n sorter: function (texts) {\n return texts.sort();\n },\n highlighter: function (text) {\n var regex = new RegExp( '(' + this.query + ')', 'gi' );\n return text.replace( regex, \"<strong>$1</strong>\" );\n }\n }));\n }\n\n // typeahead.js\n if (self.options.typeaheadjs) {\n var typeaheadConfig = null;\n var typeaheadDatasets = {};\n\n // Determine if main configurations were passed or simply a dataset\n var typeaheadjs = self.options.typeaheadjs;\n if ($.isArray(typeaheadjs)) {\n typeaheadConfig = typeaheadjs[0];\n typeaheadDatasets = typeaheadjs[1];\n } else {\n typeaheadDatasets = typeaheadjs;\n }\n\n self.$input.typeahead(typeaheadConfig, typeaheadDatasets).on('typeahead:selected', $.proxy(function (obj, datum) {\n if (typeaheadDatasets.valueKey)\n self.add(datum[typeaheadDatasets.valueKey]);\n else\n self.add(datum);\n self.$input.typeahead('val', '');\n }, self));\n }\n\n self.$container.on('click', $.proxy(function(event) {\n if (! self.$element.attr('disabled')) {\n self.$input.removeAttr('disabled');\n }\n self.$input.focus();\n }, self));\n\n if (self.options.addOnBlur && self.options.freeInput) {\n self.$input.on('focusout', $.proxy(function(event) {\n // HACK: only process on focusout when no typeahead opened, to\n // avoid adding the typeahead text as tag\n if ($('.typeahead, .twitter-typeahead', self.$container).length === 0) {\n self.add(self.$input.val());\n self.$input.val('');\n }\n }, self));\n }\n\n\n self.$container.on('keydown', 'input', $.proxy(function(event) {\n var $input = $(event.target),\n $inputWrapper = self.findInputWrapper();\n\n if (self.$element.attr('disabled')) {\n self.$input.attr('disabled', 'disabled');\n return;\n }\n\n switch (event.which) {\n // BACKSPACE\n case 8:\n if (doGetCaretPosition($input[0]) === 0) {\n var prev = $inputWrapper.prev();\n if (prev.length) {\n self.remove(prev.data('item'));\n }\n }\n break;\n\n // DELETE\n case 46:\n if (doGetCaretPosition($input[0]) === 0) {\n var next = $inputWrapper.next();\n if (next.length) {\n self.remove(next.data('item'));\n }\n }\n break;\n\n // LEFT ARROW\n case 37:\n // Try to move the input before the previous tag\n var $prevTag = $inputWrapper.prev();\n if ($input.val().length === 0 && $prevTag[0]) {\n $prevTag.before($inputWrapper);\n $input.focus();\n }\n break;\n // RIGHT ARROW\n case 39:\n // Try to move the input after the next tag\n var $nextTag = $inputWrapper.next();\n if ($input.val().length === 0 && $nextTag[0]) {\n $nextTag.after($inputWrapper);\n $input.focus();\n }\n break;\n default:\n // ignore\n }\n\n // Reset internal input's size\n var textLength = $input.val().length,\n wordSpace = Math.ceil(textLength / 5),\n size = textLength + wordSpace + 1;\n $input.attr('size', Math.max(this.inputSize, $input.val().length));\n }, self));\n\n self.$container.on('keypress', 'input', $.proxy(function(event) {\n var $input = $(event.target);\n\n if (self.$element.attr('disabled')) {\n self.$input.attr('disabled', 'disabled');\n return;\n }\n\n var text = $input.val(),\n maxLengthReached = self.options.maxChars && text.length >= self.options.maxChars;\n if (self.options.freeInput && (keyCombinationInList(event, self.options.confirmKeys) || maxLengthReached)) {\n // Only attempt to add a tag if there is data in the field\n if (text.length !== 0) {\n self.add(maxLengthReached ? text.substr(0, self.options.maxChars) : text);\n $input.val('');\n }\n\n // If the field is empty, let the event triggered fire as usual\n if (self.options.cancelConfirmKeysOnEmpty === false) {\n event.preventDefault();\n }\n }\n\n // Reset internal input's size\n var textLength = $input.val().length,\n wordSpace = Math.ceil(textLength / 5),\n size = textLength + wordSpace + 1;\n $input.attr('size', Math.max(this.inputSize, $input.val().length));\n }, self));\n\n // Remove icon clicked\n self.$container.on('click', '[data-role=remove]', $.proxy(function(event) {\n if (self.$element.attr('disabled')) {\n return;\n }\n self.remove($(event.target).closest('.tag').data('item'));\n }, self));\n\n // Only add existing value as tags when using strings as tags\n if (self.options.itemValue === defaultOptions.itemValue) {\n if (self.$element[0].tagName === 'INPUT') {\n self.add(self.$element.val());\n } else {\n $('option', self.$element).each(function() {\n self.add($(this).attr('value'), true);\n });\n }\n }\n },\n\n /**\n * Removes all tagsinput behaviour and unregsiter all event handlers\n */\n destroy: function() {\n var self = this;\n\n // Unbind events\n self.$container.off('keypress', 'input');\n self.$container.off('click', '[role=remove]');\n\n self.$container.remove();\n self.$element.removeData('tagsinput');\n self.$element.show();\n },\n\n /**\n * Sets focus on the tagsinput\n */\n focus: function() {\n this.$input.focus();\n },\n\n /**\n * Returns the internal input element\n */\n input: function() {\n return this.$input;\n },\n\n /**\n * Returns the element which is wrapped around the internal input. This\n * is normally the $container, but typeahead.js moves the $input element.\n */\n findInputWrapper: function() {\n var elt = this.$input[0],\n container = this.$container[0];\n while(elt && elt.parentNode !== container)\n elt = elt.parentNode;\n\n return $(elt);\n }\n };\n\n /**\n * Register JQuery plugin\n */\n $.fn.tagsinput = function(arg1, arg2, arg3) {\n var results = [];\n\n this.each(function() {\n var tagsinput = $(this).data('tagsinput');\n // Initialize a new tags input\n if (!tagsinput) {\n tagsinput = new TagsInput(this, arg1);\n $(this).data('tagsinput', tagsinput);\n results.push(tagsinput);\n\n if (this.tagName === 'SELECT') {\n $('option', $(this)).attr('selected', 'selected');\n }\n\n // Init tags from $(this).val()\n $(this).val($(this).val());\n } else if (!arg1 && !arg2) {\n // tagsinput already exists\n // no function, trying to init\n results.push(tagsinput);\n } else if(tagsinput[arg1] !== undefined) {\n // Invoke function on existing tags input\n if(tagsinput[arg1].length === 3 && arg3 !== undefined){\n var retVal = tagsinput[arg1](arg2, null, arg3);\n }else{\n var retVal = tagsinput[arg1](arg2);\n }\n if (retVal !== undefined)\n results.push(retVal);\n }\n });\n\n if ( typeof arg1 == 'string') {\n // Return the results from the invoked function calls\n return results.length > 1 ? results : results[0];\n } else {\n return results;\n }\n };\n\n $.fn.tagsinput.Constructor = TagsInput;\n\n /**\n * Most options support both a string or number as well as a function as\n * option value. This function makes sure that the option with the given\n * key in the given options is wrapped in a function\n */\n function makeOptionItemFunction(options, key) {\n if (typeof options[key] !== 'function') {\n var propertyName = options[key];\n options[key] = function(item) { return item[propertyName]; };\n }\n }\n function makeOptionFunction(options, key) {\n if (typeof options[key] !== 'function') {\n var value = options[key];\n options[key] = function() { return value; };\n }\n }\n /**\n * HtmlEncodes the given value\n */\n var htmlEncodeContainer = $('<div />');\n function htmlEncode(value) {\n if (value) {\n return htmlEncodeContainer.text(value).html();\n } else {\n return '';\n }\n }\n\n /**\n * Returns the position of the caret in the given input field\n * http://flightschool.acylt.com/devnotes/caret-position-woes/\n */\n function doGetCaretPosition(oField) {\n var iCaretPos = 0;\n if (document.selection) {\n oField.focus ();\n var oSel = document.selection.createRange();\n oSel.moveStart ('character', -oField.value.length);\n iCaretPos = oSel.text.length;\n } else if (oField.selectionStart || oField.selectionStart == '0') {\n iCaretPos = oField.selectionStart;\n }\n return (iCaretPos);\n }\n\n /**\n * Returns boolean indicates whether user has pressed an expected key combination.\n * @param object keyPressEvent: JavaScript event object, refer\n * http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n * @param object lookupList: expected key combinations, as in:\n * [13, {which: 188, shiftKey: true}]\n */\n function keyCombinationInList(keyPressEvent, lookupList) {\n var found = false;\n $.each(lookupList, function (index, keyCombination) {\n if (typeof (keyCombination) === 'number' && keyPressEvent.which === keyCombination) {\n found = true;\n return false;\n }\n\n if (keyPressEvent.which === keyCombination.which) {\n var alt = !keyCombination.hasOwnProperty('altKey') || keyPressEvent.altKey === keyCombination.altKey,\n shift = !keyCombination.hasOwnProperty('shiftKey') || keyPressEvent.shiftKey === keyCombination.shiftKey,\n ctrl = !keyCombination.hasOwnProperty('ctrlKey') || keyPressEvent.ctrlKey === keyCombination.ctrlKey;\n if (alt && shift && ctrl) {\n found = true;\n return false;\n }\n }\n });\n\n return found;\n }\n\n /**\n * Initialize tagsinput behaviour on inputs and selects which have\n * data-role=tagsinput\n */\n $(function() {\n $(\"input[data-role=tagsinput], select[multiple][data-role=tagsinput]\").tagsinput();\n });\n})(window.jQuery);\n","/**\r\n* PeriodicalUpdater - jQuery plugin for timed, decaying ajax calls\r\n*\r\n* http://www.360innovate.co.uk/blog/2009/03/periodicalupdater-for-jquery/\r\n* http://enfranchisedmind.com/blog/posts/jquery-periodicalupdater-ajax-polling/\r\n*\r\n* Copyright (c) 2009-2012 by the following:\r\n* Frank White (http://customcode.info)\r\n* Robert Fischer (http://smokejumperit.com)\r\n* 360innovate (http://www.360innovate.co.uk)\r\n*\r\n* Dual licensed under the MIT and GPL licenses:\r\n* http://www.opensource.org/licenses/mit-license.php\r\n* http://www.gnu.org/licenses/gpl.html\r\n*\r\n*/\r\n\r\n(function ($) {\r\n\t\t// The free version\r\n\t\t$.PeriodicalUpdater = function(url, options, callback){\r\n\t\t\tif(!options) options = {};\r\n\t\t\tvar settings = jQuery.extend(true, {\r\n\t\t\t\t\turl: url,\t\t\t\t\t// URL of ajax request\r\n\t\t\t\t\tcache: false,\t\t\t// By default, don't allow caching\r\n\t\t\t\t\tmethod: 'GET',\t\t// method; get or post\r\n\t\t\t\t\tdata: '',\t\t\t\t\t// array of values to be passed to the page - e.g. {name: \"John\", greeting: \"hello\"}\r\n\t\t\t\t\tminTimeout: 1000, // starting value for the timeout in milliseconds\r\n\t\t\t\t\tmaxTimeout:64000, // maximum length of time between requests\r\n\t\t\t\t\tmultiplier: 2,\t\t// if set to 2, timerInterval will double each time the response hasn't changed (up to maxTimeout)\r\n\t\t\t\t\tmaxCalls: 0,\t\t\t// maximum number of calls. 0 = no limit.\r\n maxCallsCallback: null, // The callback to execute when we reach our max number of calls\r\n\t\t\t\t\tautoStop: 0,\t\t\t// automatically stop requests after this many returns of the same data. 0 = disabled\r\n\t\t\t\t\tautoStopCallback: null, // The callback to execute when we autoStop\r\n\t\t\t\t\tcookie: false,\t\t// whether (and how) to store a cookie\r\n\t\t\t\t\trunatonce: false, // Whether to fire initially or wait\r\n\t\t\t\t\tverbose: 0\t\t\t\t// The level to be logging at: 0 = none; 1 = some; 2 = all\r\n\t\t\t\t}, options);\r\n\r\n\t\t\tvar pu_log = function (msg, lvl) {\r\n\t\t\t\tlvl = lvl || 1;\r\n\t\t\t\tif(settings.verbose >= lvl) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tconsole.log(msg);\r\n\t\t\t\t\t} catch (err) { }\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\r\n\t\t\t\t// set some initial values, then begin\r\n\t\t\t\tvar timer = null;\r\n\t\t\t\tvar remoteData = null;\r\n\t\t\t\tvar prevData = null;\r\n\t\t\t\tvar timerInterval = settings.minTimeout;\r\n\t\t\t\tvar maxCalls = settings.maxCalls;\r\n\t\t\t\tvar autoStop = settings.autoStop;\r\n\t\t\t\tvar calls = 0;\r\n\t\t\t\tvar noChange = 0;\r\n\t\t\t\tvar originalMaxCalls = maxCalls;\r\n\r\n\t\t\t\t// Function to reset the timer to a given time\r\n\t\t\t\tvar reset_timer = function (interval) {\r\n\t\t\t\t\t$(function() { // Ensure we're live\r\n\t\t\t\t\t\tif (timer !== null) {\r\n\t\t\t\t\t\t\t\tclearTimeout(timer);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\ttimerInterval = interval;\r\n\t\t\t\t\t\tpu_log('resetting timer to ' + timerInterval + '.', 2);\r\n\t\t\t\t\t\tif(settings.cookie && $.cookie) {\r\n\t\t\t\t\t\t\t$.cookie(settings.cookie.name, timerInterval, settings.cookie);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\ttimer = setTimeout(getdata, timerInterval);\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// Function to boost the timer\r\n\t\t\t\tvar boostPeriod = function () {\r\n\t\t\t\t\tif (settings.multiplier > 1) {\r\n\t\t\t\t\t\tvar before = timerInterval;\r\n\t\t\t\t\t\ttimerInterval = timerInterval * settings.multiplier;\r\n\r\n\t\t\t\t\t\tif (timerInterval > settings.maxTimeout) {\r\n\t\t\t\t\t\t\t\ttimerInterval = settings.maxTimeout;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tpu_log('adjusting timer from ' + before + ' to ' + timerInterval + '.', 2);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treset_timer(timerInterval);\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// Handle the cookie config\r\n\t\t\t\tif(settings.cookie) {\r\n\t\t\t\t\tif(typeof(settings.cookie) == 'boolean') {\r\n\t\t\t\t\t\tsettings.cookie = {\r\n\t\t\t\t\t\t\tname: url\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t} else if(typeof(settings.cookie) != 'object') {\r\n\t\t\t\t\t\tsettings.cookie = {\r\n\t\t\t\t\t\t\tname: settings.cookie.toString()\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(!settings.cookie.name) {\r\n\t\t\t\t\t\tsettings.cookie.name = url;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!$.cookie) {\r\n\t\t\t\t\t\t$.getScript(\"//rawgit.com/carhartl/jquery-cookie/master/jquery.cookie.js\", function() {\r\n\t\t\t\t\t\t\tpu_log(\"Loaded the cookies handler script\", 2);\r\n\t\t\t\t\t\t\tif($.cookie(settings.cookie.name)) {\r\n\t\t\t\t\t\t\t\tpu_log(\"Not runatonce and have cookie value\", 2);\r\n\t\t\t\t\t\t\t\treset_timer($.cookie(settings.cookie.name));\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tpu_log(\"Not runatonce, but no cookie value\", 2);\r\n\t\t\t\t\t\t\t\treset_timer(timerInterval);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}).fail(function() {\r\n\t\t\t\t\t\t\tpu_log(\"Could not load the cookies handler script\", 1);\r\n\t\t\t\t\t\t\treset_timer(timerInterval);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif($.cookie(settings.cookie.name)) {\r\n\t\t\t\t\t\t\treset_timer($.cookie(settings.cookie.name));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Construct the settings for $.ajax based on settings\r\n\t\t\t\tvar ajaxSettings = jQuery.extend(true, {}, settings);\r\n\t\t\t\tif (settings.type && !ajaxSettings.dataType) { ajaxSettings.dataType = settings.type; }\r\n\t\t\t\tif (settings.sendData) { ajaxSettings.data = settings.sendData; }\r\n\t\t\t\tajaxSettings.type = settings.method; // 'type' is used internally for jQuery. Who knew?\r\n\t\t\t\tajaxSettings.ifModified = true;\r\n\r\n\r\n\t\t\t\t// Create the function to get data\r\n\t\t\t\tvar getdata = function(force) {\r\n\t\t\t\t\t\tvar toSend = jQuery.extend(true, {}, ajaxSettings); // jQuery screws with what you pass in\r\n\t\t\t\t\t\tif (typeof (options.data) == 'function') {\r\n\t\t\t\t\t\t\ttoSend.data = options.data();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (toSend.data) {\r\n\t\t\t\t\t\t\t// Handle transformations (only strings and objects are understood)\r\n\t\t\t\t\t\t\tif (typeof (toSend.data) == \"number\") {\r\n\t\t\t\t\t\t\t\ttoSend.data = toSend.data.toString();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (force || maxCalls === 0) {\r\n\t\t\t\t\t\t\t\tpu_log(\"Sending data\");\r\n\t\t\t\t\t\t\t\t$(function() { $.ajax(toSend); });\r\n\t\t\t\t\t\t} else if (maxCalls > 0 && calls < maxCalls) {\r\n\t\t\t\t\t\t\t\tpu_log(\"Sending data because we are at \" + calls\t+ \" of \" + maxCalls + \" calls\");\r\n\t\t\t\t\t\t\t\t$(function() { $.ajax(toSend); });\r\n\t\t\t\t\t\t\t\tcalls++;\r\n\t\t\t\t\t\t} else if(maxCalls == -1) {\r\n\t\t\t\t\t\t\tpu_log(\"NOT sending data: stop has been called\", 1);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tpu_log(\"NOT sending data: maximum number of calls reached - \" + maxCalls, 1);\r\n if (settings.maxCallsCallback) { settings.maxCallsCallback(); }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar handle = {\r\n\t\t\t\t\t\tboostTimer: function(mag) {\r\n\t\t\t\t\t\t\tif(mag > 0 && mag != 1) {\r\n\t\t\t\t\t\t\t\tpu_log(\"Boosting timer by a factor of \" + mag);\r\n\t\t\t\t\t\t\t\ttimerInterval = timerInterval * mag;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tpu_log(\"Cannot boost timer by a factor of \" + mag);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treset_timer(timerInterval);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\trestart: function (newInterval) {\r\n\t\t\t\t\t\t\tpu_log(\"Calling restart\");\r\n\t\t\t\t\t\t\tmaxCalls = originalMaxCalls;\r\n\t\t\t\t\t\t\tcalls = 0;\r\n\t\t\t\t\t\t\tnoChange = 0;\r\n\t\t\t\t\t\t\treset_timer(newInterval || timerInterval);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsend: function() {\r\n\t\t\t\t\t\t\tpu_log(\"Explicit call to send\");\r\n\t\t\t\t\t\t\tgetdata(true);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tstop: function () {\r\n\t\t\t\t\t\t\tpu_log(\"Calling stop\");\r\n\t\t\t\t\t\t\tmaxCalls = -1;\r\n\t\t\t\t\t\t\tif(settings.cookie && $.cookie) {\r\n\t\t\t\t\t\t\t\t$.cookie(settings.cookie.name, null, settings.cookie);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// Implement the tricky comparison logic\r\n\t\t\t\tajaxSettings.success = function (data) {\r\n\t\t\t\t\t\tpu_log(\"Successful run! (In 'success')\", 2);\r\n\t\t\t\t\t\tremoteData = data;\r\n\t\t\t\t};\r\n\r\n\t\t\t\tajaxSettings.complete = function (xhr, success) {\r\n\t\t\t\t\t\t pu_log(\"Status of call: \" + success + \" (In 'complete')\", 2);\r\n\t\t\t\t\t\tif (success == \"success\" || success == \"notmodified\") {\r\n\t\t\t\t\t\t\t\tvar rawData = $.trim(xhr.responseText);\r\n\t\t\t\t\t\t\t\tif (prevData == rawData) {\r\n\t\t\t\t\t\t\t\t\t\tif (autoStop > 0) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tnoChange++;\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (noChange == autoStop) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandle.stop();\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (settings.autoStopCallback) { settings.autoStopCallback(noChange); }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tboostPeriod();\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tnoChange = 0;\r\n\t\t\t\t\t\t\t\t\t\treset_timer(settings.minTimeout);\r\n\t\t\t\t\t\t\t\t\t\tprevData = rawData;\r\n\t\t\t\t\t\t\t\t\t\tif (settings.cookie) $.cookie(settings.cookie.name, prevData, settings.cookie);\r\n\t\t\t\t\t\t\t\t\t\tif (remoteData === null) { remoteData = rawData; }\r\n\t\t\t\t\t\t\t\t\t\t// jQuery 1.4+ $.ajax() automatically converts \"data\" into a JS Object for \"type:json\" requests now\r\n\t\t\t\t\t\t\t\t\t\t// For compatibility with 1.4+ and pre1.4 jQuery only try to parse actual strings, skip when remoteData is already an Object\r\n\t\t\t\t\t\t\t\t\t\tif ((ajaxSettings.dataType === 'json') && (typeof (remoteData) === 'string') && (success == \"success\")) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tremoteData = JSON.parse(remoteData);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tif (settings.success) { settings.success(remoteData, success, xhr, handle); }\r\n\t\t\t\t\t\t\t\t\t\tif (callback) { callback(remoteData, success, xhr, handle); }\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (settings.complete) { settings.complete(xhr, success); }\r\n\t\t\t\t\t\tremoteData = null;\r\n\t\t\t\t};\r\n\r\n\t\t\t\tajaxSettings.error = function (xhr, textStatus) {\r\n\t\t\t\t\tpu_log(\"Error message: \" + textStatus + \" (In 'error')\", 2);\r\n\t\t\t\t\tif(textStatus != \"notmodified\") {\r\n\t\t\t\t\t\tprevData = null;\r\n\t\t\t\t\t\tif(settings.cookie) $.cookie(settings.cookie.name, null, settings.cookie);\r\n\t\t\t\t\t\treset_timer(settings.minTimeout);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(settings.error) { settings.error(xhr, textStatus); }\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// Make the first call\r\n\t\t\t\tif (settings.runatonce) {\r\n\t\t\t\t\tpu_log(\"Executing a call immediately\", 1);\r\n\t\t\t\t\tgetdata(true);\r\n\t\t\t\t} else if($.cookie && settings.cookie && $.cookie(settings.cookie.name)) {\r\n\t\t\t\t\t// Do nothing (already handled above)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tpu_log(\"Enqueing a the call for after \" + timerInterval, 1);\r\n\t\t\t\t\treset_timer(timerInterval);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn handle;\r\n\t\t};\r\n\r\n\t\t// The bound version\r\n\t\t$.fn.PeriodicalUpdater = function(url, options, callback) {\r\n\t\t\tvar me = this;\r\n\t\t\treturn $.PeriodicalUpdater(url, options, function() {\r\n\t\t\t\treturn callback.apply(me, arguments);\r\n\t\t\t});\r\n\t\t};\r\n})(jQuery);\r\n","/**\r\n* Updater - jQuery plugin for timed ajax calls\r\n*\r\n* Based on PeriodicalUpdater (http://github.com/RobertFischer/JQuery-PeriodicalUpdater/tree/master)\r\n*\r\n* Copyright (c) 2009 by the following:\r\n* * Robert Fischer (http://smokejumperit.com)\r\n* * 360innovate (http://www.360innovate.co.uk)\r\n* Dual licensed under the MIT and GPL licenses:\r\n* http://www.opensource.org/licenses/mit-license.php\r\n* http://www.gnu.org/licenses/gpl.html\r\n*\r\n* Version: 1.0\r\n*/\r\n\r\n(function($) {\r\n $.Updater = function(url, options, callback){\r\n\r\n var settings = jQuery.extend(true, {\r\n url: url, // URL of ajax request\r\n method: 'get', // method; get or post\r\n data: '', // array of values to be passed to the page - e.g. {name: \"John\", greeting: \"hello\"}\r\n type: 'json', // response type - text, xml, json etc\r\n interval: '3000'\r\n }, options);\r\n\r\n var timerInterval = settings.interval;\r\n\r\n // Construct the settings for $.ajax based on settings\r\n var ajaxSettings = jQuery.extend(true, {}, settings);\r\n\r\n ajaxSettings.dataType = settings.type;\r\n ajaxSettings.type = settings.method; // 'type' is used internally for jQuery. Who knew?\r\n\r\n ajaxSettings.success = function(data) {\r\n PeriodicalTimer = setTimeout(getdata, timerInterval);\r\n if(callback) {\r\n callback(data);\r\n }\r\n };\r\n // Make the first call\r\n $(function() { getdata(); });\r\n\r\n function getdata() { $.ajax(ajaxSettings); }\r\n };\r\n})(jQuery);\r\n","$(document).on('click', '.form-signin, .edit-profile-form', function (e) {\n e.preventDefault()\n _form = $(this).closest('form');\n if (_form.valid() &&\n ($('.mentor-detail').hasClass('hide-and-disable') ||\n (_form.find('#uploadFile')[0].files.length > 0 || _form.find('.user-image img').hasClass('avatar-selected'))\n )\n ) {\n _form.submit();\n }else {\n if (_form.find('#uploadFile')[0].files.length < 1)\n if(!$('#uploadTrigger').hasClass('error')) {\n $('#uploadTrigger').toggleClass('error')\n $('#uploadTrigger-error').toggleClass('error')\n $('#uploadTrigger-error').removeClass('visibility-hidden')\n }\n }\n});\n\n$(document).ready(function () {\n //========= Jquery validation ===========\n $.validator.addMethod(\"usernameRegx\", function (value, element, regexpr) {\n return regexpr.test(value);\n }, \"Only allowed letter, number, underscore.\");\n\n $.validator.addMethod(\"emailRegx\", function (value, element, regexpr) {\n return regexpr.test(value);\n }, \"Please enter a valid email address.\");\n\n $('.custom-form-validation').validate({\n rules: {\n \"user[username]\": {\n required: true,\n usernameRegx: /^[a-zA-Z0-9_.]*$/\n },\n \"user[password]\": {\n required: ($('.edit-profile-pass').length > 0) ? false : true,\n minlength: 12\n },\n \"user[email]\": {\n required: true,\n emailRegx: /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n }\n }\n });\n});\n\n// ====== Activity Status bg color =======\n$(document).on('click', '.activity-status-dropdown', function() {\n $(this).removeClass('not_stated in_progress completed discontinued');\n $(this).addClass($(this).val());\n});\n\n$(document).on('click', '.act_rev_rat_button', function(e) {\n e.preventDefault();\n season_invalid = false;\n status_invalid = false;\n var current_element = $(this);\n var form = current_element.closest('.activities_status_season_form');\n form.find('.act-season').each(function() {\n if($(this).val().length == 0) {\n season_invalid = true;\n $('.error-box .err-seasons').removeClass('hide');\n }else {\n season_invalid = false;\n $('.error-box .err-seasons').addClass('hide');\n }\n })\n form.find('.act-status').each(function() {\n if($(this).val().length == 0) {\n status_invalid = true\n $('.error-box .err-statuses').removeClass('hide');\n }else {\n status_invalid = false\n $('.error-box .err-statuses').addClass('hide');\n }\n })\n if(!season_invalid && !status_invalid )\n Rails.fire($('.activities_status_season_form')[0], 'submit');\n});\n\n// ============ Notification Bell ==============\n$(document).on('click', 'a.notification-bell-icon', function(e){\n e.preventDefault();\n e.stopPropagation();\n var parent = $(this).closest('.dropdown')\n if( $(this).attr(\"aria-expanded\") == 'true'){\n $(this).attr(\"aria-expanded\", false)\n parent.removeClass('show');\n parent.find('ul.dropdown-menu').removeClass('show');\n }else {\n $(this).attr(\"aria-expanded\", true)\n parent.addClass('show');\n parent.find('ul.dropdown-menu').addClass('show');\n Rails.ajax({\n url: '/notifications/update_all',\n type: 'PUT'\n })\n }\n});\n$(document).on('click', 'a.update-bell-icon', function(e){\n e.preventDefault();\n e.stopPropagation();\n var parent = $(this).closest('.dropdown')\n if( $(this).attr(\"aria-expanded\") == 'true'){\n $(this).attr(\"aria-expanded\", false)\n parent.removeClass('show');\n parent.find('ul.dropdown-menu').removeClass('show');\n }else {\n $(this).attr(\"aria-expanded\", true)\n parent.addClass('show');\n parent.find('ul.dropdown-menu').addClass('show');\n Rails.ajax({\n url: '/notifications/read_all_updates',\n type: 'PUT'\n })\n }\n});\n\n\n// =========== Tab Switching ============\nfunction customTabSwitching() {\n var tabNumber = 0;\n $(document).on('keydown', function (e) {\n var keyCode = e.keyCode || e.which;\n var ele = document.activeElement;\n if (tabNumber < parseInt($('.tab-pointer').last().attr('tabindex'))) {\n tabNumber = parseInt($(ele).attr('tabindex'))\n };\n tabNumber += 1;\n nextTabNumber = '';\n prevTabNumber = '';\n if (e.shiftKey && keyCode == 9) {\n e.preventDefault();\n $('.tab-pointer:visible').each(function (index, currentElement) {\n if ($(currentElement).attr('tabindex') == $(ele).attr('tabindex')) {\n prevTabNumber = index - 1;\n if (index == 0) {\n prevTabNumber = $('.tab-pointer:visible').length - 1;\n }\n }\n })\n $($('.tab-pointer:visible')[prevTabNumber]).focus();\n } else if (!e.shiftKey && keyCode == 9) {\n e.preventDefault();\n $('.tab-pointer:visible').each(function (index, currentElement) {\n if ($(currentElement).attr('tabindex') == $(ele).attr('tabindex')) {\n nextTabNumber = index + 1;\n if (index == ($('.tab-pointer:visible').length - 1)) {\n nextTabNumber = 0;\n }\n }\n })\n\n $($('.tab-pointer:visible')[nextTabNumber]).focus();\n }\n })\n}\n\n// ========= Vision & Goal ===========\n$(document).on('click', '.add-more-sample-vision-goals', function(e) {\n e.preventDefault();\n var parent_target = $(this).parent().siblings('.overflow_table');\n var target = parent_target.find('.vision_goal_table tbody');\n var type_name = $(this).attr('data-type-name');\n target.append(generate_vision_goal_sample(type_name))\n});\n\nfunction generate_vision_goal_sample(type_name) {\n content = '<tr> \\\n <td> \\\n <textarea rows=\"6\" name=\"content['+ type_name +'][smart_goal1][]\" id=\"content[horizon][smart_goal1][]\"></textarea> \\\n </td> \\\n <td> \\\n <textarea rows=\"6\" name=\"content['+ type_name +'][smart_goal2][]\" id=\"content[horizon][smart_goal1][]\"></textarea> \\\n </td>\\\n <td> \\\n <textarea rows=\"6\" name=\"content['+ type_name +'][smart_goal3][]\" id=\"content[horizon][smart_goal1][]\"></textarea> \\\n </td> \\\n <td> \\\n <textarea rows=\"6\" name=\"content['+ type_name +'][smart_goal4][]\" id=\"content[horizon][smart_goal1][]\"></textarea> \\\n </td> \\\n </tr>'\n return content\n}\n\n// ======== Report Vision Goal ==========\n$(document).on('click', '.add-more-report-vg-field', function (e) {\n e.preventDefault();\n var parent_target = $(this).closest('.foreground-add-more-cont').siblings('.overflow_table');\n var target = parent_target.find('.vision_goal_table tbody');\n var type_name = $(this).attr('data-type-name');\n var indx = target.find('textarea').last().attr('data-loc-indx');\n var report_id = target.find('textarea').last().attr('data-report-id');\n var dataTextareaArray = target.find('textarea').last().attr('data-textarea-selector').split('-');\n var dataTextareaRowNumber = parseInt(dataTextareaArray[dataTextareaArray.length - 2]) + 1;\n target.append(generate_report_vision_goal_fields(type_name, indx, report_id, dataTextareaRowNumber))\n});\nfunction generate_report_vision_goal_fields(type_name, indx, report_id, dataTextareaRowNumber) {\n content = '<tr> \\\n <td> \\\n <textarea data-loc-indx='+ indx +' name=\"report[report_vision_goals_attributes]['+ indx + '][content][' + type_name +'][smart_goal1][]\" rows=\"6\"></textarea> \\\n <textarea data-textarea-selector=\"report_vision_goals-'+indx+'-'+type_name+'-smart_goal1_status-'+dataTextareaRowNumber+'-0\" name=\"report[report_vision_goals_attributes]['+ indx + '][content][' + type_name +'][smart_goal1_status][]\" rows=\"1\" data-loc-indx=\"'+ indx +'\" class=\"d-none\" id=\"report_report_vision_goals_attributes_'+ indx +'_tmp_content\">status_grey </textarea> \\\n <a class=\"btn btn-block 1a-actions\" data-toggle=\"modal\" data-target=\"#myModal\" title=\"Not Started\" data-remote=\"true\" href=\"/reports/'+ report_id +'/change_status_model?attr_name=report_vision_goals-'+indx+'-'+type_name+'-smart_goal1_status-'+dataTextareaRowNumber+'-0\"></a> \\\n <div class=\"status_color_picker badge status_grey\"><a class=\"btn btn-block 1a-actions\" data-toggle=\"modal\" data-target=\"#myModal\" title=\"Not Started\" data-remote=\"true\" href=\"/reports/'+ report_id +'/change_status_model?attr_name=report_vision_goals-'+indx+'-'+type_name+'-smart_goal1_status-'+dataTextareaRowNumber+'-0\"></a></div> \\\n </td> \\\n <td> \\\n <textarea data-loc-indx='+ indx +' name=\"report[report_vision_goals_attributes]['+ indx + '][content][' + type_name +'][smart_goal2][]\" rows=\"6\"></textarea> \\\n <textarea data-textarea-selector=\"report_vision_goals-'+indx+'-'+type_name+'-smart_goal2_status-'+dataTextareaRowNumber+'-1\" name=\"report[report_vision_goals_attributes]['+ indx + '][content][' + type_name +'][smart_goal2_status][]\" rows=\"1\" data-loc-indx=\"'+ indx +'\" class=\"d-none\" id=\"report_report_vision_goals_attributes_'+ indx +'_tmp_content\">status_grey </textarea> \\\n <a class=\"btn btn-block 1a-actions\" data-toggle=\"modal\" data-target=\"#myModal\" title=\"Not Started\" data-remote=\"true\" href=\"/reports/'+ report_id +'/change_status_model?attr_name=report_vision_goals-'+indx+'-'+type_name+'-smart_goal2_status-'+dataTextareaRowNumber+'-1\"></a> \\\n <div class=\"status_color_picker badge status_grey\"><a class=\"btn btn-block 1a-actions\" data-toggle=\"modal\" data-target=\"#myModal\" title=\"Not Started\" data-remote=\"true\" href=\"/reports/'+ report_id +'/change_status_model?attr_name=report_vision_goals-'+indx+'-'+type_name+'-smart_goal2_status-'+dataTextareaRowNumber+'-1\"></a></div> \\\n </td>\\\n <td> \\\n <textarea data-loc-indx='+ indx +' name=\"report[report_vision_goals_attributes]['+ indx + '][content][' + type_name +'][smart_goal3][]\" rows=\"6\"></textarea> \\\n <textarea data-textarea-selector=\"report_vision_goals-'+indx+'-'+type_name+'-smart_goal3_status-'+dataTextareaRowNumber+'-2\" name=\"report[report_vision_goals_attributes]['+ indx + '][content][' + type_name +'][smart_goal3_status][]\" rows=\"1\" data-loc-indx=\"'+ indx +'\" class=\"d-none\" id=\"report_report_vision_goals_attributes_'+ indx +'_tmp_content\">status_grey </textarea> \\\n <a class=\"btn btn-block 1a-actions\" data-toggle=\"modal\" data-target=\"#myModal\" title=\"Not Started\" data-remote=\"true\" href=\"/reports/'+ report_id +'/change_status_model?attr_name=report_vision_goals-'+indx+'-'+type_name+'-smart_goal3_status-'+dataTextareaRowNumber+'-2\"></a> \\\n <div class=\"status_color_picker badge status_grey\"><a class=\"btn btn-block 1a-actions\" data-toggle=\"modal\" data-target=\"#myModal\" title=\"Not Started\" data-remote=\"true\" href=\"/reports/'+ report_id +'/change_status_model?attr_name=report_vision_goals-'+indx+'-'+type_name+'-smart_goal3_status-'+dataTextareaRowNumber+'-2\"></a></div> \\\n </td> \\\n <td> \\\n <textarea data-loc-indx='+ indx +' name=\"report[report_vision_goals_attributes]['+ indx + '][content][' + type_name +'][smart_goal4][]\" rows=\"6\"></textarea> \\\n <textarea data-textarea-selector=\"report_vision_goals-'+indx+'-'+type_name+'-smart_goal4_status-'+dataTextareaRowNumber+'-3\" name=\"report[report_vision_goals_attributes]['+ indx + '][content][' + type_name +'][smart_goal4_status][]\" rows=\"1\" data-loc-indx=\"'+ indx +'\" class=\"d-none\" id=\"report_report_vision_goals_attributes_'+ indx +'_tmp_content\">status_grey </textarea> \\\n <a class=\"delete-foreground-row\" href=\"javascript:void(0)\"><button name=\"button\" type=\"button\" class=\"close px-2 close-foreground-row\">x</button></a>\\\n <a class=\"btn btn-block 1a-actions\" data-toggle=\"modal\" data-target=\"#myModal\" title=\"Not Started\" data-remote=\"true\" href=\"/reports/'+ report_id +'/change_status_model?attr_name=report_vision_goals-'+indx+'-'+type_name+'-smart_goal4_status-'+dataTextareaRowNumber+'-3\"></a> \\\n <div class=\"status_color_picker badge status_grey\"><a class=\"btn btn-block 1a-actions\" data-toggle=\"modal\" data-target=\"#myModal\" title=\"Not Started\" data-remote=\"true\" href=\"/reports/'+ report_id +'/change_status_model?attr_name=report_vision_goals-'+indx+'-'+type_name+'-smart_goal4_status-'+dataTextareaRowNumber+'-3\"></a></div> \\\n </td> \\\n </tr>'\n return content\n}\n\n// ======= AP Guide =========\n// $('.empty-ap-guide').click(function(e) {\n$(document).on('click', '.empty-ap-guide', function (e) {\n e.preventDefault();\n toastr.error('Guide not uploaded yet.');\n});\n\n// ======= 2B remove row functionality ======\n$(document).ready(function(){\n $('.new_job_posting').validate({\n rules: {\n \"job_posting[message]\": {\n required: true\n }\n }\n });\n});\n\n// ===== Accordion toggle on params ======\n$(document).on('click', '.accordion-card-cont', function () {\n var accordId, newUrl, queryString, ref, url;\n if (!$(this).find('.card-header').hasClass('collapsed')) {\n accordId = $(this).data('id');\n // ref will have [val1, val2], url == val1 & queryString == val2\n ref = location.href.split('?'), url = ref[0], queryString = ref[1];\n newUrl = url + '?accordion_id=' + accordId;\n return history.pushState({}, '', newUrl);\n }\n});\n\n// ===== open dropdown for single record in list, add class to remove css issue of dropdown\n// ===== dropdown open table row scroll when table contain single row.\n$(document).on('click', '.trigger-dropdown-dependent-class', function() {\n parent = $(this).closest('.dropdown-dependent-class');\n parent.addClass('dropdown-relative-position-effect');\n});\n\n\n// any element having class acts-as-link and data-url will act as a link tag\n$(document).on('click', '.acts-as-link', function() {\n if($(this).data('url').length > 0) {\n location.href = $(this).data('url');\n }\n});\n","/*!\n * jQuery outside events - v1.1 - 3/16/2010\n * http://benalman.com/projects/jquery-outside-events-plugin/\n *\n * Copyright (c) 2010 \"Cowboy\" Ben Alman\n * Dual licensed under the MIT and GPL licenses.\n * http://benalman.com/about/license/\n */\n\n// Script: jQuery outside events\n//\n// *Version: 1.1, Last updated: 3/16/2010*\n//\n// Project Home - http://benalman.com/projects/jquery-outside-events-plugin/\n// GitHub - http://github.com/cowboy/jquery-outside-events/\n// Source - http://github.com/cowboy/jquery-outside-events/raw/master/jquery.ba-outside-events.js\n// (Minified) - http://github.com/cowboy/jquery-outside-events/raw/master/jquery.ba-outside-events.min.js (0.9kb)\n//\n// About: License\n//\n// Copyright (c) 2010 \"Cowboy\" Ben Alman,\n// Dual licensed under the MIT and GPL licenses.\n// http://benalman.com/about/license/\n//\n// About: Examples\n//\n// These working examples, complete with fully commented code, illustrate a few\n// ways in which this plugin can be used.\n//\n// clickoutside - http://benalman.com/code/projects/jquery-outside-events/examples/clickoutside/\n// dblclickoutside - http://benalman.com/code/projects/jquery-outside-events/examples/dblclickoutside/\n// mouseoveroutside - http://benalman.com/code/projects/jquery-outside-events/examples/mouseoveroutside/\n// focusoutside - http://benalman.com/code/projects/jquery-outside-events/examples/focusoutside/\n//\n// About: Support and Testing\n//\n// Information about what version or versions of jQuery this plugin has been\n// tested with, what browsers it has been tested in, and where the unit tests\n// reside (so you can test it yourself).\n//\n// jQuery Versions - 1.4.2\n// Browsers Tested - Internet Explorer 6-8, Firefox 2-3.6, Safari 3-4, Chrome, Opera 9.6-10.1.\n// Unit Tests - http://benalman.com/code/projects/jquery-outside-events/unit/\n//\n// About: Release History\n//\n// 1.1 - (3/16/2010) Made \"clickoutside\" plugin more general, resulting in a\n// whole new plugin with more than a dozen default \"outside\" events and\n// a method that can be used to add new ones.\n// 1.0 - (2/27/2010) Initial release\n//\n// Topic: Default \"outside\" events\n//\n// Note that each \"outside\" event is powered by an \"originating\" event. Only\n// when the originating event is triggered on an element outside the element\n// to which that outside event is bound will the bound event be triggered.\n//\n// Because each outside event is powered by a separate originating event,\n// stopping propagation of that originating event will prevent its related\n// outside event from triggering.\n//\n// OUTSIDE EVENT - ORIGINATING EVENT\n// clickoutside - click\n// dblclickoutside - dblclick\n// focusoutside - focusin\n// bluroutside - focusout\n// mousemoveoutside - mousemove\n// mousedownoutside - mousedown\n// mouseupoutside - mouseup\n// mouseoveroutside - mouseover\n// mouseoutoutside - mouseout\n// keydownoutside - keydown\n// keypressoutside - keypress\n// keyupoutside - keyup\n// changeoutside - change\n// selectoutside - select\n// submitoutside - submit\n\n(function($,doc,outside){\n '$:nomunge'; // Used by YUI compressor.\n\n $.map(\n // All these events will get an \"outside\" event counterpart by default.\n 'click dblclick mousemove mousedown mouseup mouseover mouseout change select submit keydown keypress keyup'.split(' '),\n function( event_name ) { jq_addOutsideEvent( event_name ); }\n );\n\n // The focus and blur events are really focusin and focusout when it comes\n // to delegation, so they are a special case.\n jq_addOutsideEvent( 'focusin', 'focus' + outside );\n jq_addOutsideEvent( 'focusout', 'blur' + outside );\n\n // Method: jQuery.addOutsideEvent\n //\n // Register a new \"outside\" event to be with this method. Adding an outside\n // event that already exists will probably blow things up, so check the\n // <Default \"outside\" events> list before trying to add a new one.\n //\n // Usage:\n //\n // > jQuery.addOutsideEvent( event_name [, outside_event_name ] );\n //\n // Arguments:\n //\n // event_name - (String) The name of the originating event that the new\n // \"outside\" event will be powered by. This event can be a native or\n // custom event, as long as it bubbles up the DOM tree.\n // outside_event_name - (String) An optional name for the new \"outside\"\n // event. If omitted, the outside event will be named whatever the\n // value of `event_name` is plus the \"outside\" suffix.\n //\n // Returns:\n //\n // Nothing.\n\n $.addOutsideEvent = jq_addOutsideEvent;\n\n function jq_addOutsideEvent( event_name, outside_event_name ) {\n\n // The \"outside\" event name.\n outside_event_name = outside_event_name || event_name + outside;\n\n // A jQuery object containing all elements to which the \"outside\" event is\n // bound.\n var elems = $(),\n\n // The \"originating\" event, namespaced for easy unbinding.\n event_namespaced = event_name + '.' + outside_event_name + '-special-event';\n\n // Event: outside events\n //\n // An \"outside\" event is triggered on an element when its corresponding\n // \"originating\" event is triggered on an element outside the element in\n // question. See the <Default \"outside\" events> list for more information.\n //\n // Usage:\n //\n // > jQuery('selector').bind( 'clickoutside', function(event) {\n // > var clicked_elem = $(event.target);\n // > ...\n // > });\n //\n // > jQuery('selector').bind( 'dblclickoutside', function(event) {\n // > var double_clicked_elem = $(event.target);\n // > ...\n // > });\n //\n // > jQuery('selector').bind( 'mouseoveroutside', function(event) {\n // > var moused_over_elem = $(event.target);\n // > ...\n // > });\n //\n // > jQuery('selector').bind( 'focusoutside', function(event) {\n // > var focused_elem = $(event.target);\n // > ...\n // > });\n //\n // You get the idea, right?\n\n $.event.special[ outside_event_name ] = {\n\n // Called only when the first \"outside\" event callback is bound per\n // element.\n setup: function(){\n\n // Add this element to the list of elements to which this \"outside\"\n // event is bound.\n elems = elems.add( this );\n\n // If this is the first element getting the event bound, bind a handler\n // to document to catch all corresponding \"originating\" events.\n if ( elems.length === 1 ) {\n $(doc).bind( event_namespaced, handle_event );\n }\n },\n\n // Called only when the last \"outside\" event callback is unbound per\n // element.\n teardown: function(){\n\n // Remove this element from the list of elements to which this\n // \"outside\" event is bound.\n elems = elems.not( this );\n\n // If this is the last element removed, remove the \"originating\" event\n // handler on document that powers this \"outside\" event.\n if ( elems.length === 0 ) {\n $(doc).unbind( event_namespaced );\n }\n },\n\n // Called every time a \"outside\" event callback is bound to an element.\n add: function( handleObj ) {\n var old_handler = handleObj.handler;\n\n // This function is executed every time the event is triggered. This is\n // used to override the default event.target reference with one that is\n // more useful.\n handleObj.handler = function( event, elem ) {\n\n // Set the event object's .target property to the element that the\n // user interacted with, not the element that the \"outside\" event was\n // was triggered on.\n event.target = elem;\n\n // Execute the actual bound handler.\n old_handler.apply( this, arguments );\n };\n }\n };\n\n // When the \"originating\" event is triggered..\n function handle_event( event ) {\n\n // Iterate over all elements to which this \"outside\" event is bound.\n $(elems).each(function(){\n var elem = $(this);\n\n // If this element isn't the element on which the event was triggered,\n // and this element doesn't contain said element, then said element is\n // considered to be outside, and the \"outside\" event will be triggered!\n if ( this !== event.target && !elem.has(event.target).length ) {\n\n // Use triggerHandler instead of trigger so that the \"outside\" event\n // doesn't bubble. Pass in the \"originating\" event's .target so that\n // the \"outside\" event.target can be overridden with something more\n // meaningful.\n elem.triggerHandler( outside_event_name, [ event.target ] );\n }\n });\n };\n\n };\n\n})(jQuery,document,\"outside\");\n","$(function () {\n if ($('#player').length > 0) {\n var audio_player = $(\"#audio-player\");\n var play_button = $('#play');\n var progress_bar = $(\"#progressbar\");\n var time = $(\"#time\");\n var mute_button = $('#mute');\n var volume_bar = $('#volume');\n var more_info = $('#more-info-box');\n var player = $('#player')[0];\n var duration = 0;\n var volume = 0.5;\n var end_time = $('#end-time');\n player.onloadedmetadata = function () {\n duration = player.duration;\n var minutes = parseInt(duration / 60, 10);\n var seconds = parseInt(duration % 60);\n // finding and appending full duration of audio\n end_time.text(minutes + ':' + seconds);\n progress_bar.progressbar(\"option\", { 'max': duration });\n };\n \n player.load();\n player.volume = 0.5;\n player.addEventListener(\"timeupdate\", function () {\n progress_bar.progressbar('value', player.currentTime);\n time.text(getTime(player.currentTime));\n }, false);\n \n volume_bar.progressbar({\n value: player.volume * 100,\n });\n \n volume_bar.click(function (e) {\n var info = getProgressBarClickInfo($(this), e);\n volume_bar.progressbar('value', info.value);\n player.volume = info.value / info.max;\n });\n \n progress_bar.progressbar({\n value: player.currentTime,\n });\n \n progress_bar.click(function (e) {\n var info = getProgressBarClickInfo($(this), e);\n player.currentTime = player.duration / info.max * info.value;\n });\n \n play_button.click(function () {\n player[player.paused ? 'play' : 'pause']();\n $(this).toggleClass(\"fa-play\", player.paused);\n $(this).toggleClass(\"fa-pause\", !player.paused);\n });\n \n mute_button.click(function () {\n if (player.volume == 0) {\n player.volume = volume;\n } else {\n volume = player.volume;\n player.volume = 0;\n }\n \n volume_bar.progressbar('value', player.volume * 100);\n \n $(this).toggleClass(\"fa-volume-up\", player.volume != 0);\n $(this).toggleClass(\"fa-volume-off\", player.volume == 0);\n });\n \n more_info.click(function () {\n audio_player.animate({\n height: (audio_player.height() == 50) ? 100 : 50\n }, 1000);\n });\n }\n});\n\nfunction getTime(t) {\n var m = ~~(t / 60), s = ~~(t % 60);\n return (m < 10 ? \"0\" + m : m) + ':' + (s < 10 ? \"0\" + s : s);\n}\n\nfunction getProgressBarClickInfo(progress_bar, e) {\n var offset = progress_bar.offset();\n var x = e.pageX - offset.left; // or e.offsetX (less support, though)\n var y = e.pageY - offset.top; // or e.offsetY\n var max = progress_bar.progressbar(\"option\", \"max\");\n var value = (x * max) / progress_bar.width();\n\n return { x: x, y: y, max: max, value: value };\n}","const yearPickerVersion = \"1.0.0\";\nconst yearPickerAppName = \"YearPicker\";\n\nvar defaults = {\n // Auto Hide\n autoHide: true,\n // The Initial Date\n year: null,\n // Start Date\n startYear: null,\n // End Date\n endYear: null,\n // A element tag items\n itemTag: \"li\",\n //css class selected date item\n selectedClass: \"selected\",\n // css class disabled\n disabledClass: \"disabled\",\n hideClass: \"hide\",\n highlightedClass: \"highlighted\",\n template: `<div class=\"yearpicker-container\">\n <div class=\"yearpicker-header\">\n <div class=\"yearpicker-prev\" data-view=\"yearpicker-prev\">‹</div>\n <div class=\"yearpicker-current\" data-view=\"yearpicker-current\">SelectedYear</div>\n <div class=\"yearpicker-next\" data-view=\"yearpicker-next\">›</div>\n </div>\n <div class=\"yearpicker-body\">\n <ul class=\"yearpicker-year\" data-view=\"years\">\n </ul>\n </div>\n </div>\n`,\n\n // Event shortcuts\n show: null,\n hide: null,\n pick: null\n};\n\nvar window = typeof window !== \"undefained\" ? window : {};\n\nvar event_click = \"click.\";\nvar event_focus = \"focus.\";\nvar event_keyup = \"keyup.\";\nvar event_selected = \"selected.\";\nvar event_show = \"show.\";\nvar event_hide = \"hide.\";\n\nvar methods = {\n // Show datepicker\n showView: function showView() {\n if (!this.build) {\n this.init();\n }\n\n if (this.show) {\n return;\n }\n\n if (this.trigger(event_show).isDefaultPrevented()) {\n return;\n }\n this.show = true;\n var $template = this.$template,\n options = this.options;\n\n $template\n .removeClass(options.hideClass)\n .on(event_click, $.proxy(this.click, this));\n $(document).on(\n event_click,\n (this.onGlobalClick = proxy(this.globalClick, this))\n );\n this.place();\n },\n\n // Hide the datepicker\n hideView: function hideView() {\n if (!this.show) {\n return;\n }\n\n if (this.trigger(event_hide).isDefaultPrevented()) {\n return;\n }\n\n var $template = this.$template,\n options = this.options;\n\n $template.addClass(options.hideClass).off(event_click, this.click);\n $(document).off(event_click, this.onGlobalClick);\n this.show = false;\n },\n // toggle show and hide\n toggle: function toggle() {\n if (this.show) {\n this.hideView();\n } else {\n this.show();\n }\n },\n setStartYear: function setStartYear(year) {\n this.startYear = year;\n\n if (this.build) {\n this.render();\n }\n },\n setEndYear: function setEndYear(year) {\n this.endYear = year;\n if (this.build) {\n this.render();\n }\n }\n};\n\nvar handlers = {\n click: function click(e) {\n var $target = $(e.target);\n var options = this.options;\n var viewYear = this.viewYear;\n if ($target.hasClass(\"disabled\")) {\n return;\n }\n var view = $target.data(\"view\");\n switch (view) {\n case \"yearpicker-prev\":\n var year = viewYear - 12;\n this.viewYear = year;\n this.renderYear();\n break;\n case \"yearpicker-next\":\n var year = viewYear + 12;\n this.viewYear = year;\n this.renderYear();\n break;\n case \"yearpicker-items\":\n this.year = parseInt($target.html());\n this.renderYear();\n this.hideView();\n break;\n default:\n break;\n }\n },\n globalClick: function globalClick(_ref) {\n var target = _ref.target;\n var element = this.element;\n var hidden = true;\n\n if (target !== document) {\n while (\n target === element ||\n $(target).closest(\".yearpicker-header\").length === 1\n ) {\n hidden = false;\n break;\n }\n\n target = target.parentNode;\n }\n\n if (hidden) {\n this.hideView();\n }\n }\n};\n\nvar render = {\n renderYear: function renderYear() {\n var options = this.options,\n startYear = options.startYear,\n endYear = options.endYear;\n var disabledClass = options.disabledClass;\n\n // viewed year in the calenter\n var viewYear = this.viewYear;\n // selected year\n var selectedYear = this.year;\n var now = new Date();\n // current year\n var thisYear = now.getFullYear();\n\n var start = -5;\n var end = 6;\n var items = [];\n var prevDisabled = false;\n var nextDisabled = false;\n var i = void 0;\n\n for (i = start; i <= end; i++) {\n var year = viewYear + i;\n var disabled = false;\n\n if (startYear) {\n disabled = year < startYear;\n if (i === start) {\n prevDisabled = disabled;\n }\n }\n\n if (!disabled && endYear) {\n disabled = year > endYear;\n if (i === end) {\n nextDisabled = disabled;\n }\n }\n\n // check for this is a selected year\n var isSelectedYear = year === selectedYear;\n var view = isSelectedYear ? \"yearpicker-items\" : \"yearpicker-items\";\n items.push(\n this.createItem({\n selected: isSelectedYear,\n disabled: disabled,\n text: viewYear + i,\n //view: disabled ? \"yearpicker disabled\" : view,\n view: disabled ? \"yearpicker-items disabled\" : view,\n highlighted: year === thisYear\n })\n );\n }\n\n this.yearsPrev.toggleClass(disabledClass, prevDisabled);\n this.yearsNext.toggleClass(disabledClass, nextDisabled);\n this.yearsCurrent.html(selectedYear);\n this.yearsBody.html(items.join(\" \"));\n this.setValue();\n }\n};\n\nfunction isString(value) {\n return typeof value === \"string\";\n}\n\nfunction isNumber(value) {\n return typeof value === \"number\" && value !== \"NaN\";\n}\n\nfunction isUndefained(value) {\n return typeof value === \"undefined\";\n}\n\nfunction proxy(fn, context) {\n for (\n var len = arguments.length, args = Array(len > 2 ? len - 2 : 0), key = 2;\n key < len;\n key++\n ) {\n args[key - 2] = arguments[key];\n }\n\n return function () {\n for (\n var len2 = arguments.length, args2 = Array(len2), key2 = 0;\n key2 < len2;\n key2++\n ) {\n args2[key2] = arguments[key2];\n }\n\n return fn.apply(context, args.concat(args2));\n };\n}\n\n(\"use strict\");\n\nvar _setupError = \"YearPicker Error\";\nif (isUndefained(jQuery)) {\n alert(`${yearPickerAppName} ${yearPickerVersion} requires jQuery`);\n}\n\nvar classCheck = function (instance, constractor) {\n if (!(instance instanceof constractor)) {\n alert(\"cannot call a class as instance of function!!!\");\n }\n};\n\nvar class_top_left = yearPickerAppName + \"-top-left\";\nvar class_top_right = yearPickerAppName + \"-top-right\";\nvar class_bottom_left = yearPickerAppName + \"-bottom-left\";\nvar class_bottom_right = yearPickerAppName + \"-bottom-right\";\nvar class_placements = [\n class_top_left,\n class_top_right,\n class_bottom_left,\n class_bottom_right\n].join(\" \");\n\nvar Yearpicker = (function () {\n function Yearpicker(element) {\n var options =\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n classCheck(this, Yearpicker);\n\n this.$element = $(element);\n this.element = element;\n this.options = $.extend({}, defaults, options);\n this.build = false;\n this.show = false;\n this.startYear = null;\n this.endYear = null;\n\n this.create();\n }\n\n // yearpicker\n Yearpicker.prototype = {\n create: function () {\n var $this = this.$element,\n options = this.options;\n var startYear = options.startYear,\n endYear = options.endYear,\n year = options.year;\n\n //this.trigger = $(options.trigger);\n this.isInput = $this.is(\"input\") || $this.is(\"textarea\");\n initialValue = this.getValue();\n this.initialValue = initialValue;\n this.oldValue = initialValue;\n year = year || initialValue || new Date().getFullYear();\n\n if (startYear) {\n if (year < startYear) {\n year = startYear;\n }\n this.startYear = startYear;\n }\n\n if (endYear) {\n if (year > endYear) {\n year = endYear;\n }\n this.endYear = endYear;\n }\n\n this.year = year;\n this.viewYear = year;\n this.initialYear = year;\n this.bind();\n this.init();\n },\n init: function () {\n if (this.build) {\n return;\n }\n this.build = true;\n\n var $this = this.$element,\n options = this.options;\n var $template = $(options.template);\n this.$template = $template;\n\n this.yearsPrev = $template.find(\".yearpicker-prev\");\n this.yearsCurrent = $template.find(\".yearpicker-current\");\n this.yearsNext = $template.find(\".yearpicker-next\");\n this.yearsBody = $template.find(\".yearpicker-year\");\n\n $template.addClass(options.hideClass);\n $(document.body).append(\n $template.addClass(yearPickerAppName + \"-dropdown\")\n );\n this.renderYear();\n },\n unbuild: function () {\n if (!this.build) {\n return;\n }\n this.build = false;\n this.$template.remove();\n },\n // assign a events\n bind: function () {\n var $this = this.$element,\n options = this.options;\n\n if ($.isFunction(options.show)) {\n $this.on(event_show, options.show);\n }\n if ($.isFunction(options.hide)) {\n $this.on(event_hide, options.hide);\n }\n if ($.isFunction(options.click)) {\n $this.on(event_click, options.click);\n }\n if (this.isInput) {\n $this.on(event_focus, $.proxy(this.showView, this));\n } else {\n $this.on(event_click, $.proxy(this.showView, this));\n }\n },\n getValue: function () {\n var $this = this.$element;\n var value = this.isInput ? $this.val() : $this.text();\n value = parseInt(value);\n return this.isInput ? parseInt($this.val()) : $this.text();\n },\n setValue: function () {\n var $this = this.$element;\n var value = this.year;\n if (this.isInput) {\n $this.val(value);\n } else {\n $this.html(value);\n }\n },\n trigger: function (type, data) {\n var e = $.Event(type, data);\n this.$element.trigger(e);\n return e;\n },\n place: function () {\n var $this = this.$element,\n options = this.options,\n $template = this.$template;\n\n var containerWidth = $(document).outerWidth(),\n containerHeight = $(document).outerHeight(),\n elementWidth = $this.outerWidth(),\n elementHeight = $this.outerHeight(),\n width = $template.width(),\n height = $template.height();\n\n var elementOffset = $this.offset(),\n top = elementOffset.top,\n left = elementOffset.left;\n\n var offset = parseFloat(options.offset);\n var placements = class_top_left;\n\n offset = isNaN(offset) ? 10 : offset;\n\n // positioning the y axis\n if (top > height && top + elementHeight + height > containerHeight) {\n top -= height + offset;\n placements = class_bottom_left;\n } else {\n top += elementHeight + offset;\n }\n\n // positioning the x axis\n if (left + width > containerWidth) {\n left += elementWidth - width;\n placements = placements.replace(\"left\", \"right\");\n }\n\n $template\n .removeClass(class_placements)\n .addClass(placements)\n .css({\n top: top,\n left: left,\n zIndex: parseInt(this.zIndex, 10)\n });\n },\n createItem: function (data) {\n var options = this.options;\n var itemTag = options.itemTag;\n\n var items = {\n text: \"\",\n view: \"\",\n selected: false,\n disabled: false,\n highlighted: false\n };\n\n var classes = [];\n $.extend(items, data);\n if (items.selected) {\n classes.push(options.selectedClass);\n }\n\n if (items.disabled) {\n classes.push(options.disabledClass);\n }\n\n if (items.highlighted) {\n classes.push(options.highlightedClass);\n }\n\n return `<${itemTag} class=\"${items.view} ${classes.join(\n \" \"\n )}\" data-view=\"${items.view}\">${items.text}</${itemTag}>`;\n }\n };\n\n return Yearpicker;\n})();\n\nif ($.extend) {\n $.extend(Yearpicker.prototype, methods, render, handlers);\n}\n\nif ($.fn) {\n $.fn.yearpicker = function jQueryYearpicker(option) {\n for (\n var len = arguments.length, args = Array(len > 1 ? len - 1 : 0), key = 1;\n key < len;\n key++\n ) {\n args[key - 1] = arguments[key];\n }\n var result = void 0;\n\n this.each(function (i, element) {\n var $element = $(element);\n var isDestory = option === \"destroy\";\n var yearpicker = $element.data(yearPickerAppName);\n\n if (!yearpicker) {\n if (isDestory) {\n return;\n }\n var options = $.extend(\n {},\n $element.data(),\n $.isPlainObject(option) && option\n );\n yearpicker = new Yearpicker(element, options);\n $element.data(yearPickerAppName, yearpicker);\n }\n if (isString(option)) {\n var fn = yearpicker[option];\n\n if ($.isFunction(fn)) {\n result = fn.apply(yearpicker, args);\n\n if (isDestory) {\n $element.removeData(yearPickerAppName);\n }\n }\n }\n });\n\n return !isUndefained(result) ? result : this;\n };\n $.fn.yearpicker.constractor = Yearpicker;\n}","$(function() {\n indexing_profile_children();\n});\n\n$(document).on('nested:fieldAdded', function(event){\n // this field was just inserted into your form\n var field = event.field;\n // it's a jQuery object already! Now you can find date input\n var dateField = field.find('.datepicker1');\n // and activate datepicker on it\n dateField.datepicker({\n changeYear: true,\n dateFormat: \"dd/mm/yy\",\n yearRange: \"-50:+0\"\n });\n});\n\n$(document).on('click', '.add-profile-children, .remove-profile-children', () => {\n indexing_profile_children();\n});\n\n// Account Setting Profile section, index children module as child 1, 2....\nconst indexing_profile_children = () => {\n const parent = $('.profile-children');\n parent.find('.fields:not([style*=\"display: none\"]) .child-number').each((indx, elem) => {\n $(elem).html(`child ${indx + 1}`);\n });\n}\n$(document).ready(function(){\n $('.user-profile-search-filters select').on('change', function(){\n if($(this).find('option:selected').index() != 0) {\n $(this).addClass('custom-select');\n }else {\n $(this).removeClass('custom-select');\n }\n });\n});\n\n$(document).ready(function() {\n // Function to toggle the sort icon\n function toggleSortIcon(linkId, ulId) {\n var $link = $(`#${linkId}`);\n if (ulId) { var $ul = $(`#${ulId}`); }\n var $sortIcon = $link.find('i');\n\n if ($ul && $ul.hasClass('show')) {\n $sortIcon.removeClass('fa-sort-down').addClass('fa-sort-up');\n } else {\n $sortIcon.removeClass('fa-sort-up').addClass('fa-sort-down');\n }\n }\n\n // Initial check when document is ready\n toggleSortIcon('ministry-link', 'ministry-ul');\n toggleSortIcon('development-link', 'development-ul');\n toggleSortIcon('configure-link', 'configure-ul');\n toggleSortIcon('information-link', 'information-ul');\n toggleSortIcon('coworker-catalogue-link', 'coworker-catalogue-ul');\n\n // Toggle the sort icon when link is clicked\n $('.nav-link').click(function() {\n var linkId = $(this).attr('id');\n var ulId = $(this).attr('href').substring(1); // Remove '#' from href\n toggleSortIcon(linkId, ulId);\n });\n\n // Toggle the sort icon when 'show' class is toggled on ul\n $('ul.collapse').on('shown.bs.collapse hidden.bs.collapse', function() {\n var ulId = $(this).attr('id');\n var linkId = ulId.replace('-ul', '-link');\n toggleSortIcon(linkId, ulId);\n });\n});","// 2B removal function is custom one, not cocoon\n$(document).on('click', \".close-foreground-row\", function () {\n form = $(this).closest('form');\n updateMinistryReport2(form);\n $(this).closest('tr').remove();\n});\n\n// when cocoon removes row from mr\n$(document).on('cocoon:after-remove', '#main-report-cont', function (event, target) {\n form = target.closest('form');\n updateMinistryReport2(form);\n})\n\n// when cocoon adds row from mr\n$(document).on('cocoon:after-insert', '#main-report-cont', function (event, target) {\n form = target.closest('form');\n updateMinistryReport2(form);\n})\n\n\nvar updateMinistryReport2 = function (form) {\n var required_accordion = form.find('.collapse.show').attr('id');\n form.attr('action', form.attr('action') + '?accordion_open=' + required_accordion+'&re_render=true');\n form.css({'opacity': 0.4})\n $.ajax({\n url: form.attr('action'),\n type: \"POST\",\n data: form.serialize(),\n dataType: 'script',\n beforeSend: function (xhr) {\n xhr.setRequestHeader('X-CSRF-Token', $('meta[name=\"csrf-token\"]').attr('content'));\n },\n complete: function () {\n setTimeout((function () {\n form.css({'opacity': 1})\n }), 1000);\n }\n });\n};","//\n//\n//\n// Below code has also been duplicated to app/views/shared/scripts/_user_progression.html.erb\n// If you are making changes to this file, then please update above file too.\n// Note: The duplicated code is a patch to serve Js without Webpacker.\n//\n//\n//\n\n$(\".progression-accordion\").click(function(){\n var panel = this.nextElementSibling;\n if (panel.style.display === \"block\") {\n panel.style.display = \"none\";\n } \n else {\n panel.style.display = \"block\";\n }\n})\n$(document).ready(function(){\n $(\".file-btn-color-2\").hide()\n var openAccordian = localStorage.getItem(\"open-accordions\")\n var arr = []\n if (openAccordian != null){\n openAccordian = openAccordian.split(\",\");\n openAccordian.forEach(function(item){\n $(`.minister-accorddion-${item}`).next().css({'display' : 'block'})\n })\n arr = openAccordian\n }\n var accordion = $(\".progression-accordion\");\n for (i = 0; i < accordion.length; i++) {\n accordion[i].addEventListener(\"click\", function() {\n var id = $(this).data(\"id\")\n this.classList.toggle(\"active\");\n var panel = this.nextElementSibling;\n icon = $(this).children(\".user-down-arrow\").children(\".user-down-arrow-2\")\n if (panel.style.display === \"block\") {\n arr.splice(arr.indexOf(id.toString()), 1);\n panel.style.display = \"none\";\n icon.removeClass(\"fas fa-chevron-up\")\n icon.addClass(\"fas fa-chevron-down\")\n } else {\n arr.push(id.toString())\n icon.removeClass(\"fas fa-chevron-down\")\n icon.addClass(\"fas fa-chevron-up\")\n panel.style.display = \"block\";\n }\n localStorage.setItem(\"open-accordions\", arr)\n });\n }\n\n $(\".honorable, .dishonorable\").on(\"change\", function(event){\n if (this.checked == true) {\n var box= confirm(\"This action will retire this MIN immediately and make changes to their current locations. This is best done following their actual retirement date which is available from Secretariat. Are you sure you wish to do this now?\");\n if (box==true){\n return true;\n }\n else{\n event.preventDefault();\n event.stopPropagation();\n this.checked = false\n }\n }\n })\n\n $(\".retired-remove\").on(\"change\", function(event){\n if (this.checked == true) {\n var box= confirm(\"This action will remove this MIN immediately from the system. All data associated to this MIN will be removed. Are you sure you wish to do this now?\");\n if (box==true){\n $('#loader-cont').show()\n return true;\n }\n else{\n event.preventDefault();\n event.stopPropagation();\n this.checked = false\n }\n }\n })\n\n var text = $(\".reminder_message-div\").attr('reminder-text');\n if(text != null){\n $(\".reminder_message-text\").html(text)\n }\n \n $(\".clickable\").click(function(){\n location.href = $(this).closest('tr').data('href');\n });\n \n $(document).on(\"click\", \".send-reminder-button\", function(){\n $('#review-submission-reminder').modal(\"hide\");\n })\n\n $(document).on(\"click\", \".progressions-tab\", function(){\n localStorage.removeItem(\"open-accordions\")\n })\n \n $(document).on(\"click\", \".upload-profile-btn\", function(event){\n var id = $(this).attr('data-id')\n $(`#upload-profile-file-${id}`).click();\n })\n \n $(document).on('change', '#upload-profile-from',function(){\n $(this).children(\".form-submit-btn\").click()\n if ($(this).children('.upload-profile-btn').length == 1){\n location.reload();\n }\n })\n \n $(document).on('keyup', '.progression-lic-notes',function(){\n var notes = $(this).val()\n var id = $(this).attr('data-id')\n url = $(this).attr('data-url')\n text = $(this).attr('lic-notes-text')\n $.ajax({\n type: 'GET',\n url: url,\n dataType: 'script',\n data: {\n notes: notes,\n user_id: id\n }\n });\n })\n\n $(document).on('change', '.practical-req',function(){\n var id = $(this).attr('data-id')\n url = $(this).attr('data-url')\n practicalReq = $(this).is(':checked')\n $.ajax({\n type: 'GET',\n url: url,\n dataType: 'script',\n data: {\n practical_requirement: practicalReq,\n user_id: id\n }\n });\n });\n\n $(document).on('change', '.theological-req',function(){\n var id = $(this).attr('data-id')\n url = $(this).attr('data-url')\n theologicalReq = $(this).is(':checked')\n $.ajax({\n type: 'GET',\n url: url,\n dataType: 'script',\n data: {\n theological_requirement: theologicalReq,\n user_id: id\n }\n });\n });\n\n $(document).on('change', '.honorable-retirement',function(){\n var id = $(this).attr('data-id')\n url = $(this).attr('data-url')\n retirementIntent = $(this).attr('retirment-intent')\n checked = $(this).is(':checked')\n if($(this).hasClass(\"honorable\") && checked){\n $(`#dishonorable-retirement-${id}`).attr('disabled', 'disabled');\n }\n else if($(this).hasClass(\"dishonorable\") && checked){\n $(`#honorable-retirement-${id}`).attr('disabled', 'disabled');\n }\n else if($(this).hasClass(\"honorable\") && checked == false){\n $(`#dishonorable-retirement-${id}`).removeAttr(\"disabled\");\n }\n else if($(this).hasClass(\"dishonorable\") && checked == false){\n $(`#honorable-retirement-${id}`).removeAttr(\"disabled\");\n }\n $.ajax({\n type: 'GET',\n url: url,\n dataType: 'script',\n data: {\n checked: checked,\n retirement_intent: retirementIntent,\n user_id: id\n }\n });\n });\n \n $('.file-delete-icon').click(function(){\n $(this).addClass('hide')\n $(this).parent().children('.panel__left__row__box--body :first').next().addClass('hide')\n buttonClass = $(this).parents(\".align-items-center\").children(\".form-class\")\n buttonClass.children('.upload-profile-btn ').removeClass('file-btn-color-2')\n buttonClass.children('.upload-profile-btn ').show()\n })\n\n $(\".expand-all-accordian\").click(function(){\n if($(\".expand-all-accordian\").hasClass(\"expand-all-accordian\")){\n $(\".panel\").css({'display' : 'block'})\n $(this).addClass('close-all-accordian')\n $(this).removeClass('expand-all-accordian')\n $(this).html(\"CLOSE ALL\")\n }\n else{\n localStorage.removeItem(\"open-accordions\")\n $(\".panel\").css({'display' : 'none'})\n $(this).removeClass('close-all-accordian')\n $(this).addClass('expand-all-accordian')\n $(this).html(\"EXPAND ALL\")\n }\n })\n\n $(\".progression-minister-search-form\").keypress(function (e) {\n if (e.keyCode == 13) {\n $('.progression-minister-search-form').submit();\n }\n })\n\n $(document).on(\"change\",\".interview-statuse-div\", function(){\n if ($(this).find(\":selected\").val() == \"Has Now Been ORD/ COM\"){\n message = confirm(\"This will move this Minister from Licensed Ministry to the Ordained/ Commissioned Pastors list, Please comfirm you wish to do this.\");\n if(message) {\n return true;\n } else {\n return false;\n }\n }\n })\n\n})\n\n$(\".send-request-btn\").on(\"click\", function(){\n $('#report-view-request-modal').modal(\"hide\");\n $('body').removeClass('modal-open');\n $('.modal-backdrop').remove();\n})\n","//\n//\n//\n// Below code has also been duplicated to app/views/shared/scripts/_sticky_notes.html.erb\n// If you are making changes to this file, then please update above file too.\n// Note: The duplicated code is a patch to serve Js without Webpacker.\n//\n//\n//\n\n$(document).ready(function(){\n var text = $(\"#sticky-note-main-div\").attr('data-sticky-text');\n if(text != null){\n $(\".sticky-note-text\").html(text)\n }\n})\n\nvar acc = $(\".sticky-note-accordion\");\nfor (i = 0; i < acc.length; i++) {\n acc[i].addEventListener(\"click\", function() {\n if ($(this).hasClass('disableClick')) {\n $(this).removeClass('disableClick');\n }\n else{\n this.classList.toggle(\"active\");\n var panel = this.nextElementSibling;\n if (panel.style.display === \"block\") {\n panel.style.display = \"none\";\n } else {\n panel.style.display = \"block\";\n }\n }\n });\n}\n\n$( \"#sticky-note-main-div\" ).draggable({\n start: function(event, ui) {\n $(this).children(\".sticky-note-accordion\").addClass('disableClick');\n }\n});\n\n$(document).on('click', \".sticky-note-accordion\", function(){ \n var userName = $(\"#sticky-note-accordion1\").attr(\"data-name\")\n if($(\".sticky-note-accordion\").hasClass('active')){\n $(\".sticky-note-accordion\").text(\"DNOTE - \" + userName);\n $(\".sticky-note-accordion\").append(\"<span class='minimiz-and-maximize'>\"+'<i class=\"fas fa-chevron-up\"></i>'+'</span>');\n $(\"#sticky-note-main-div\").css({'border' : '1px solid rgb(57 54 54)','z-index' : '10'});\n $(\".sticky-note-accordion\").css({'border-radius' : '15px 15px 0px 0px'})\n }\n else{\n $(\".sticky-note-accordion\").text(\"DNOTE - \" + userName);\n $(\".sticky-note-accordion\").append(\"<span class='minimiz-and-maximize'>\"+'<i class=\"fas fa-chevron-down\"></i>'+'</span>');\n $(\".sticky-note-accordion\").css({'border-radius' : '15px 15px 15px 15px'})\n }\n})\n\n$(document).on('click', \".hide-stiky-note-div\", function(){\n $(\"#sticky-note-main-div\").removeClass('hide')\n})\n\n$(document).on('click', \".sticky-note-save-btn\", function(){\n $(\"#sticky-note-main-div\").addClass('hide')\n})\n","//\n//\n//\n// Below code has also been duplicated to app/views/shared/scripts/_report_reminder.html.erb\n// If you are making changes to this file, then please update above file too.\n// Note: The duplicated code is a patch to serve Js without Webpacker.\n// \n//\n//\n\n$(document).ready(function(){\n var text = $(\".reminder_message-div\").attr('reminder-text');\n if(text != null){\n $(\".reminder_message-text\").html(text)\n }\n})\n$(document).on(\"click\", \".send-reminder-button\", function(){\n $('#report-submission-reminder').modal(\"hide\");\n})\n\n$(document).on(\"click\", \".send-supv-reminder-button\", function(){\n $('#supervisor-reminder-modal').modal(\"hide\");\n})\n\n$(document).on(\"change\", \".general-document-search-field\", function(){\n $('.general-document-search-form').submit();\n})","$(document).on('click', '.principal-form .form-submit-btn', function() {\n if(!$('.principal-form').validate()) {\n Rails.fire($(this).closest('form')[0], 'submit')\n }\n});","//\n//\n//\n// Below code has also been duplicated to app/views/shared/scripts/_induction.html.erb\n// If you are making changes to this file, then please update above file too.\n// Note: The duplicated code is a patch to serve Js without Webpacker.\n//\n//\n//\n\n$(document).ready(function() {\n // Handle accordion click with delegation\n $(document).on(\"click\", \".induction-accordion\", function() {\n this.classList.toggle(\"active\");\n var panel = this.nextElementSibling;\n var icon = $(this).children(\".user-down-arrow\").children(\".user-down-arrow-2\");\n if (panel.style.display === \"block\") {\n panel.style.display = \"none\";\n icon.removeClass(\"fas fa-chevron-up\").addClass(\"fas fa-chevron-down\");\n } else {\n panel.style.display = \"block\";\n icon.removeClass(\"fas fa-chevron-down\").addClass(\"fas fa-chevron-up\");\n }\n });\n\n // Handle row clicks with delegation\n $(document).on(\"click\", \".induction-row\", function() {\n const url = $(this).closest(\"tr\").data(\"href\");\n if (url) {\n location.href = url;\n }\n });\n\n // Initialize Select2 for static elements\n $('.induction-ministers-dropdown').select2({\n theme: 'bootstrap'\n });\n\n $('.other-selectors').select2({\n minimumResultsForSearch: -1,\n theme: 'bootstrap'\n });\n});\n","$(document).ready ->\n $('body').on 'change', '.intern_location_id', ->\n location_id = $(this).val()\n $.ajax(\n url: '/internships/intern_invites/fetch_supervisors'\n type: 'GET'\n dataType: 'JSON'\n data: 'location_id': location_id).done (supervisors) ->\n options = ''\n $(supervisors).each (indx, elem) ->\n name = elem.first_name + ' ' + elem.last_name\n if name.length == 1\n name = elem.email\n options = options + '<option value=\\'' + elem.id + '\\'>' + name + '</option>'\n return\n $('select#supervisor_id').html options\n if options.length == 0\n $(\"#invite_intern_form .invite-error-box, #change_to_intern_form .invite-error-box\").html(\"<p class='text-uppercase mb-0'> Selected location has no supervisor or supervisors are already associated with interns. </p>\")\n else\n $(\"#invite_intern_form .invite-error-box, #change_to_intern_form .invite-error-box\").html('');\n return\n return\n\n $('body').on 'submit', '#invite_intern_form', (e) ->\n if $(this).valid()\n $('#loader-cont').show()\n return\n\n preventNonNumericalInput = (e) ->\n e = e or window.event\n charCode = if typeof e.which == 'undefined' then e.keyCode else e.which\n charStr = String.fromCharCode(charCode)\n if !charStr.match(/^[0-9]+$/)\n e.preventDefault()\n return\n\n window.preventNonNumericalInput = preventNonNumericalInput\n\n $(\".associate-ministers-dropdown\").select2({\n placeholder: \"Search existing associate ministers\",\n theme: \"bootstrap\"\n });\n\n # modal popup for minister to intern conversion\n $(document).on 'click', '.intern-form-link', (e) ->\n e.preventDefault()\n selected_minister_id = $('.existing-mins').val();\n if(selected_minister_id.length == 0)\n toastr.error('Select a existing minister.')\n else\n Rails.fire($(this).closest('form')[0], 'submit')","$(->\r\n $('.back-form-button').click ->\r\n render_step1()\r\n $('.user-first-name').focus()\r\n return\r\n $('.next-form-button').click (e) ->\r\n # e.preventDefault();\r\n if $('.custom-form-validation').valid()\r\n render_step2()\r\n $('#user_mentor').focus();\r\n return\r\n if $('.mentor-checkbox').hasClass('edit-mentor')\r\n toggle_mentor_detail($('.mentor-checkbox'))\r\n)\r\n#===== mentor detail =======\r\n\r\n$(document).on 'click', '.mentor-checkbox input[type=checkbox]', ->\r\n toggle_mentor_detail($('.mentor-checkbox'))\r\n\r\n#============== Functions ==============\r\ntoggle_mentor_detail = (mentor_checkbox) ->\r\n is_mentor = mentor_checkbox.find('input[type=checkbox]').is(':checked')\r\n mentor_detail = $('.mentor-detail')\r\n if is_mentor\r\n mentor_detail.removeClass('hide-and-disable')\r\n mentor_detail.find('input, textarea').each(->\r\n $(this).removeAttr('disabled')\r\n )\r\n else\r\n mentor_detail.addClass('hide-and-disable')\r\n mentor_detail.find('input, textarea').each(->\r\n $(this).attr('disabled', true)\r\n )\r\n\r\n# Sign up file upload\r\n$(document).on 'change', '#uploadFile', ->\r\n handleFiles(this)\r\n $('#uploadTrigger').removeClass('error')\r\n $('#uploadTrigger-error').addClass('visibility-hidden')\r\n $('#uploadTrigger-error').removeClass('error')\r\n false\r\n\r\n$(document).on 'click', '#uploadTrigger', ->\r\n $(this).closest('.user-image-div').find('#uploadFile').trigger 'click'\r\n false\r\n\r\n#======= Profile Preferences Link =========\r\n# $(document). on 'click', '.profile-preferences-link', (e) ->\r\n# e.preventDefault()\r\n# if( $(\".save-continue-profile-form\").length > 0 )\r\n# $('.save-continue-profile-form').click()\r\n# else\r\n# location.href = $(this).attr('href')\r\n# return false\r\n\r\n$(document). on 'change', '.upload-resume-file', (e) ->\r\n $('.form-submit-button').click()\r\n return false\r\n\r\n\r\n#======== Dynamic avatar change =======\r\nhandleFiles = (fileInput) ->\r\n files = fileInput.files\r\n i = 0\r\n while i < files.length\r\n file = files[i]\r\n imageType = /image.*/\r\n if !file.type.match(imageType)\r\n i++\r\n continue\r\n img = document.createElement('img')\r\n img.classList.add 'user-icon'\r\n img.classList.add 'avatar-selected'\r\n img.file = file\r\n $('.user-image').html img\r\n reader = new FileReader\r\n reader.onload = ((aImg) ->\r\n (e) ->\r\n aImg.src = e.target.result\r\n return\r\n )(img)\r\n reader.readAsDataURL file\r\n $(fileInput).siblings('#uploadTrigger').removeClass('error')\r\n i++\r\n return\r\n\r\nrender_step2 = ->\r\n $('.next-form-button').hide()\r\n $('.step-1').hide()\r\n $('.step-2').show()\r\n $('.form-1').hide()\r\n $('.form-2').show()\r\n $('.form-signin').show()\r\n $('.mentor-checkbox').show()\r\n $('.back-form-button').show()\r\n toggle_mentor_detail($('.mentor-checkbox'))\r\n return\r\n\r\nrender_step1 = ->\r\n $('.back-form-button').hide()\r\n $('.step-2').hide()\r\n $('.step-1').show()\r\n $('.form-2').hide()\r\n $('.form-1').show()\r\n $('.form-signin').hide()\r\n $('.mentor-checkbox').hide()\r\n $('.next-form-button').show()\r\n return\r\n\r\n# upload pdf file\r\n$(document).on 'change', '#uploadPDFFile', ->\r\n $(\".pdf_downloadable_link\").hide();\r\n $(\".uploaded-pdf-name\").removeClass('hide');\r\n $(\".uploaded-pdf-name\").text(this.files[0].name);\r\n $('#uploadPDFTrigger').removeClass('error')\r\n $('#uploadPDFTrigger-error').addClass('visibility-hidden')\r\n $('#uploadPDFTrigger-error').removeClass('error')\r\n false\r\n\r\n$(document).on 'click', '#uploadPDFTrigger', ->\r\n $(this).closest('.user-image-div').find('#uploadPDFFile').trigger 'click'\r\n false\r\n","#===== resource sidebar filters =======\n$ ->\n if($('#custom-resources').length > 0 )\n # toggleFieldsResourceType($('#resource_resource_type_id'))\n # populate_dynamic_columns($('#resource_resource_type_id').val(), $('#hidden-resource-id').val())\n populate_ministers('#resource_resource_type_id')\n\n # populate competency tags\n if($('.compitContainer .styled-checkbox').length > 0)\n populateCompetencyTags($('.compitContainer .styled-checkbox'))\n\n$(document).on 'click', '#reset-search-bar', ->\n $('#search_resource').val('')\n $(this).closest('form').submit()\n\n$(document).on 'click', '.competency-checkbox', ->\n # uncheck all competencies and then checked clicked one\n checked = $(this).prop('checked')\n $('.competency-checkbox').each( (indx, elem) ->\n $(elem).prop('checked', false)\n )\n $('.competency-tags-checkbox').each( (indx, elem) ->\n $(elem).prop('checked', false)\n )\n\n # SlideDown for competency tags filters if present\n # slideUp when unchecked or checked any other checkbox\n if(checked)\n $('.competency-tags-list').slideUp(100)\n tags = $(this).siblings('.competency-tags-list').find('.resource_siderbar_list').children()\n if(tags.length > 0)\n $(this).siblings('.competency-tags-list').slideDown(300)\n else\n $(this).siblings('.competency-tags-list').slideUp(300)\n\n $(this).prop('checked', checked)\n return\n\n$(document).on 'click', '.search_checkbox', ->\n $('#resource-list-cont').css(\n 'opacity': 0.4\n )\n form = $(this).closest('form')\n Rails.fire(form[0], 'submit')\n return\n\n$(document).on 'keypress', '#search_resource', (e) ->\n if e.keyCode == 13\n $('#resource-list-cont').css(\n 'opacity': 0.4\n )\n # $(this).closest('form').submit()\n form = $(this).closest('form')\n Rails.fire(form[0], 'submit')\n return false\n$(document).on 'change', '#sort_by_av_rating', ->\n # $(this).closest('form').submit()\n $('#resource-list-cont').css(\n 'opacity': 0.4\n )\n form = $(this).closest('form')\n Rails.fire(form[0], 'submit')\n return false\n\n#===== populate mentor listing on resource type change =======\n$(document).on 'change', '#resource_resource_type_id', ->\n # toggleFieldsResourceType($(this))\n # populate_ministers(@)\n populate_dynamic_columns($(this).val(), $('#hidden-resource-id').val())\n\n#===== populate mentor listing on resource type change =======\n$(document).on 'change', '#mentor_selection', ->\n handle_minisiter_selection(@)\n\n#===== Resource Detail Review =========\n$(document).on 'click', '.flag-reason-link', (e) ->\n e.preventDefault()\n current_element = $(this)\n parent = current_element.closest('.review-list')\n parent.find('.flag-reason-cont').each (indx, element) ->\n if !$(element).hasClass('hide') && current_element.siblings('.flag-reason-cont')[0] != element\n $(element).toggleClass 'hide'\n return\n $(this).siblings('.flag-reason-cont').toggleClass 'hide'\n return\n\n$(document). on 'click', '.edit-review-link', (e)->\n e.preventDefault();\n parent = $(this).closest('.reviewResource_review')\n parent.find('.resource_review_comment').toggleClass('hide')\n parent.find('.resource_review_comment_form').toggleClass('hide')\n parent.find('.r_review_smbtn').toggleClass('hide')\n return\n\n#========= Competency Tags selection in resources form ========\n$(document).on 'click', '.compitContainer .styled-checkbox', ->\n populateCompetencyTags($(this))\n return\n\n#========= Functions ==========\nhandle_minisiter_selection = (target) ->\n value = $(target).val()\n if value != ''\n $.ajax\n type: 'GET'\n url: '/mentor_details'\n data: {mentor_id: value}\n\npopulate_ministers = (target) ->\n $selector = $(target).find('option:selected')\n value = $selector.text().toLowerCase()\n $('#mentor_selection').parent().hide()\n if value == 'mentors' || value.includes('mentors')\n $.ajax\n type: 'GET'\n url: '/mentor_listing'\n data: {resource_type_id: $selector.val()}\n\n# === Populate required fields according to resource_type select ====\ntoggleFieldsResourceType = (resource_type) ->\n $('.rt-effective-block').hide()\n selected = resource_type.children(':selected').text().toLowerCase()\n if( resource_type.val().toString().length != 0 )\n $('.rt-effective-block').each( (indx, elem) ->\n if ( $(elem).hasClass('all-show' ) )\n $(elem).show()\n if( $(elem).hasClass(selected + '-show' ) )\n $(elem).show()\n if( $(elem).hasClass(selected + '-hide' ) )\n $(elem).hide()\n )\n\n# =====\npopulate_dynamic_columns = (resource_type_id, resource_id) ->\n $('#resource-form-inner-container').css('opacity', 0.3)\n $.ajax\n type: 'GET'\n url: '/resources/'+ resource_id + '/fetch_dynamic_columns'\n data: {'resource_type_id': resource_type_id}\n dataType: 'script'\n return false\n\n# ===== Resource form, competency tags populate according to competency selected\n\npopulateCompetencyTags = (target_element) ->\n form = target_element.closest('form')\n checkboxes = form.find('.competency-checkboxes:checked');\n competency_ids = $.map(checkboxes, (elem)->\n return $(elem).val()\n )\n resource_id = form.find('input[name=resource_id]').val()\n $.ajax(\n url: '/RL/competencies/fetch_tags'\n data: { ids: competency_ids, resource_id: resource_id }\n dataType: 'script'\n )\n return","$(document).on 'click', '.roles-checkbox', ->\r\n if $(this).is(':checked')\r\n checked = true\r\n else\r\n checked = false\r\n $(this).siblings('.checkbox-role-ids').val($(this).val())\r\n $(this).siblings('.checkbox-role-verify').val(checked)\r\n return\r\n\r\n$(document).on 'click', '.re-invite-btn', (e) ->\r\n e.preventDefault()\r\n url = $(this).data('url')\r\n if $(this).data('disable')\r\n return\r\n $(this).attr 'data-disable', true\r\n $('#loader-cont').show()\r\n $.ajax\r\n url: url\r\n type: 'PUT'\r\n complete: ->\r\n $(this).attr 'data-disable', false\r\n return\r\n return\r\n","$(->\n $(\".auxano-sortable\").sortable(\n cursor: \"move\",\n update: (e, ui) ->\n Rails.ajax(\n url: $(this).data('url'),\n type: 'PUT',\n data: $(this).sortable('serialize')\n )\n );\n\n $('.activity-season, .activity-status').change ->\n obj = {}\n if $(this).val().length > 0\n obj[$(this).attr('id')] = $(this).val();\n $.ajax(\n url: $(this).data('url'),\n type: 'PUT',\n dataType: 'script',\n data: obj\n )\n)\n$(document).on 'click', '.activity-season', ->\n obj = {}\n obj['season_id'] = $(this).data('value');\n $.ajax(\n url: $(this).data('url'),\n type: 'PUT',\n dataType: 'script',\n data: obj\n )\n\n# activity rating modal form\n$(->\n $('.activity-rating-modal-form').each( (indx, elem) ->\n $(elem).validate({\n rules: {\n \"comment\": {\n required: false\n }\n },\n submitHandler: () => $('#loader-cont').show()\n });\n )\n)\n$(document).on 'click', '.add-review-activity-auxano', ->\n form = $(this).closest('form')\n ratingform = form.find(\".resource_review_rating\")\n if (ratingform.attr('aria-required') == 'true' && ratingform.val() == '0')\n $(\".validate_review_message\").removeClass(\"hide\")\n event.preventDefault();\n else\n $(\".validate_review_message\").addClass(\"hide\")\n Rails.fire(form[0], 'submit')\n\n$(document).on 'change', '.activity-modal-block select.activity-status', ->\n parent = $(this).closest('.activity-modal-block')\n if ['completed', 'discontinued'].includes($(this).val())\n parent.find('.rate-review-list').removeClass('hide-and-disable')\n else\n parent.find('.rate-review-list').addClass('hide-and-disable')","# Execute on MR create btn\n$(document).on 'click', '.create-mr-btn', (e)->\n e.preventDefault()\n $('#loader-cont').show()\n form = $(this).closest('form')\n Rails.fire(form[0], 'submit')\n\n$(document).on 'click', '.mn-report-tr', ->\n window.location = $(this).parent().attr('data-href')\n return false\n$(document).on 'touchend', '.mn-report-tr', ->\n window.location = $(this).parent().attr('data-href')\n return false\n# ===== 1a save btns action =====\n$(document).on 'click', '.report-1a-submit-btn', (e) ->\n e.preventDefault()\n updateMinistryReport($('.mntry-report-1a-cont').find('form.mn-report-form'))\n\n# ===== 2a submit btns action =====\n$(document).on 'click', '.accordion-print-btn', (e) ->\n e.stopPropagation()\n$(document).on 'click', '.report-2a-submit-btn', (e) ->\n e.preventDefault()\n updateMinistryReport($('#report_2a_cont').find('form.2a-report-form'))\n # save id of accordion which is currently active\n # required_accordion = $('#report_2a_cont').find('.collapse.show').attr('id')\n # $('.2a-report-form').attr('action', $('.2a-report-form').attr('action')+'?accordion_open='+required_accordion )\n # Rails.fire($('.2a-report-form')[0], 'submit');\n\n$(document).on 'click', 'a[data-hash-tag=\"#report-1a\"],\n a[data-hash-tag=\"#report-2a\"],\n a[data-hash-tag=\"#report-3a\"],\n a[data-hash-tag=\"#report-1b\"],\n a[data-hash-tag=\"#report-2b\"],\n a[data-hash-tag=\"#report-3b\"],\n a[data-hash-tag=\"#report-4a\"],\n a[data-hash-tag=\"#report-4b\"],\n a[data-hash-tag=\"#report-5\"],\n a[data-hash-tag=\"#report-6a\"],\n a[data-hash-tag=\"#report-comments\"],\n a[data-hash-tag=\"#report-admins-comments\"]', (e) ->\n # on 5 add class else remove\n if ($(this).attr('data-tag-id') == '#5_title')\n $('.min_rpt_1a_upr_div').addClass('min_class_5_upr_div')\n # else if ($(this).attr('data-tag-id') == '#b_1_title' || $(this).attr('data-tag-id') == '#a_1_title')\n else\n $('.min_rpt_1a_upr_div').removeClass('min_class_5_upr_div')\n \n if $('.min_rpt_1a_upr_div').hasClass('hide')\n $('.min_rpt_1a_upr_div').removeClass('hide')\n\n\n$(document).on 'keyup', '.1b-aditional-notes', (e) ->\n e.preventDefault()\n e.stopPropagation()\n obj = {}\n element = $( \"textarea[name*='report_snapshot[detail][funding_application]']\" )\n value = $(element).val()\n url = $(element).attr('href')\n obj[\"funding_application\"] = value\n $.ajax(\n url: url,\n type: 'PUT',\n dataType: 'script',\n data: obj\n )\n\n# ===== 2b submit btns action =====\n$(document).on 'click', '.report-2b-submit-btn', (e) ->\n e.preventDefault()\n updateMinistryReport($('#report_2b_cont').find('form.report-2b-form'))\n # save id of accordion which is currently active\n # required_accordion = $('#report_2b_cont').find('.collapse.show').attr('id')\n # $('.report-2b-form').attr('action', $('.report-2b-form').attr('action')+'?accordion_open='+required_accordion )\n # Rails.fire($('.report-2b-form')[0], 'submit');\n\n# ===== 7 submit btns action =====\n$(document).on 'click', '.report-7-submit-btn', (e) ->\n e.preventDefault()\n updateMinistryReport($('#report_7_cont').find('form.report-7-form'))\n\n# ===== 3a submit btns action =====\n$(document).on 'click', '.report-3a-submit-btn', (e) ->\n e.preventDefault()\n updateMinistryReport($('#report_3a_cont').find('form.report-3a-form'))\n # save id of accordion which is currently active\n # required_accordion = $('#report_3a_cont').find('.collapse.show').attr('id')\n # $('.report-3a-form').attr('action', $('.report-3a-form').attr('action')+'?accordion_open='+required_accordion )\n # Rails.fire($('.report-3a-form')[0], 'submit');\n\n# ===== 3b submit btns action =====\n$(document).on 'click', '.report-3b-submit-btn', (e) ->\n e.preventDefault()\n updateMinistryReport($('#report_3b_cont').find('form.report-3b-form'))\n # save id of accordion which is currently active\n # required_accordion = $('#report_3b_cont').find('.collapse.show').attr('id')\n # $('.report-3b-form').attr('action', $('.report-3b-form').attr('action')+'?accordion_open='+required_accordion )\n # Rails.fire($('.report-3b-form')[0], 'submit');\n\n$(document).on 'click', '.report-6a-submit-btn', (e) ->\n e.preventDefault()\n updateMinistryReport($('#report_6a_cont').find('form.report-6a-form'))\n\n# ===== 5 submit btns action =====\n$(document).on 'click', '.report-5-submit-btn', (e) ->\n e.preventDefault()\n updateMinistryReport($('#report_5_cont').find('form.report-5-form'))\n \n$(document).on 'click', '.report-4a-submit-btn', (e) ->\n e.preventDefault()\n updateMinistryReport($('form.report-4a-form'))\n\n$(document).on 'click', 'a[data-hash-tag=\"#report-1a\"],\n a[data-hash-tag=\"#report-2a\"],\n a[data-hash-tag=\"#report-3a\"],\n a[data-hash-tag=\"#report-1b\"],\n a[data-hash-tag=\"#report-2b\"],\n a[data-hash-tag=\"#report-3b\"],\n a[data-hash-tag=\"#report-4a\"],\n a[data-hash-tag=\"#report-4b\"],\n a[data-hash-tag=\"#report-5\"],\n a[data-hash-tag=\"#report-6a\"],\n a[data-hash-tag=\"#report-7\"],\n a[data-hash-tag=\"#report-comments\"],\n a[data-hash-tag=\"#report-admins-comments\"]', (e)->\n e.preventDefault()\n current_element = $(this)\n parent = $(this).closest('#1a-1b-ul')\n\n # -- remove tabs active class and insert to current element\n parent.find('li > a').each(->\n $(this).removeClass('active')\n )\n current_element.addClass('active')\n\n # -- hide siblings title and show current element title\n $(current_element.attr('data-tag-id')).parent().find('.report-title-paragraph').each(->\n if !$(this).hasClass('hide')\n $(this).addClass('hide')\n )\n if (current_element.attr('data-tag-id') == '#b_1_title')\n $(current_element.attr('data-tag-id')).closest('#mnstry-report-1a-cont')\n $(current_element.attr('data-tag-id')).closest('.upr-section-1a-1b').find('.report-1a-logo-cont').addClass('hide')\n $(current_element.attr('data-tag-id')).closest('.upr-section-1a-1b').find('.report-5-logo-cont').addClass('hide')\n $(current_element.attr('data-tag-id')).closest('.upr-section-1a-1b').find('.report-1b-logo-cont').removeClass('hide')\n\n else if (current_element.attr('data-tag-id') == '#a_1_title')\n $(current_element.attr('data-tag-id')).closest('#mnstry-report-1a-cont')\n $(current_element.attr('data-tag-id')).closest('.upr-section-1a-1b').find('.report-1a-logo-cont').removeClass('hide')\n $(current_element.attr('data-tag-id')).closest('.upr-section-1a-1b').find('.report-1b-logo-cont').addClass('hide')\n $(current_element.attr('data-tag-id')).closest('.upr-section-1a-1b').find('.report-5-logo-cont').addClass('hide')\n\n \n else if (current_element.attr('data-tag-id') == '#5_title')\n $(current_element.attr('data-tag-id')).closest('#mnstry-report-1a-cont')\n $(current_element.attr('data-tag-id')).closest('.upr-section-1a-1b').find('.report-1a-logo-cont').addClass('hide')\n $(current_element.attr('data-tag-id')).closest('.upr-section-1a-1b').find('.report-1b-logo-cont').addClass('hide')\n $(current_element.attr('data-tag-id')).closest('.upr-section-1a-1b').find('.report-5-logo-cont').removeClass('hide')\n\n $(current_element.attr('data-tag-id')).removeClass('hide')\n\n # -- hide siblings report and show current element report\n $('.report_review_1a_cont, .report_review_2a_cont,\n .report_review_3a_cont,\n .report_review_1b_cont, .report_review_2b_cont,\n .report_review_3b_cont, .report_review_4a_cont,\n .report_review_4b_cont, .report_review_5_cont, .report_review_6a_cont, .report_review_7_cont ,#report_comments_cont, #report_admins_comments_cont').each(->\n if !$(this).hasClass('hide')\n $(this).addClass('hide')\n )\n\n #-- hide and show required action btns\n $('.report-action-btns').children().not(current_element.attr('data-report-action')).each(->\n $(this).addClass('hide')\n )\n $(current_element.attr('data-report-action')).each(-> $(this).removeClass('hide'))\n $(current_element.attr('data-report-cont-id')).removeClass('hide')\n\n #-- toggle seas green upper div\n if ['2a-link-tab', '2b-link-tab', '3a-link-tab', '3b-link-tab', '4a-link-tab', '4b-link-tab', '6a-link-tab','7-link-tab', 'comments-link-tab', 'admins-comments-link-tab'].indexOf(current_element.attr('id')) > -1\n if $(\"#comments-scrollable-div\").length > 0\n $(\"#comments-scrollable-div\").scrollTop($(\"#comments-scrollable-div\")[0].scrollHeight);\n $(current_element.attr('data-report-seagreen-box')).addClass('hide')\n else\n $(current_element.attr('data-report-seagreen-box')).removeClass('hide')\n\n close_all_accordion()\n return false\n\n# === submit report ====\n$(document).on 'click', '#report-submit-btn', ->\n $('#submit-report-trigger')[0].click()\n return\n\nmr_disabled = false;\n$(document).ready ->\n if( $('#disabled-mr-fields').val() != undefined )\n mr_disabled = if($('#disabled-mr-fields').val().length == 0 || $('#disabled-mr-fields').val() == 'false') then false else true;\n if location.hash\n # $('a'+location.hash).trigger 'click'\n $('a[data-hash-tag=\\'' + location.hash + '\\']').trigger 'click'\n else if $('a[data-hash-tag=\"#report-1a\"]').length > 0\n $('a[data-hash-tag=\"#report-1a\"]')[0].click();\n\n # to change url hash according to selected tab\n $(document.body).on 'click', 'a[data-hash-tag=\"#report-1a\"],\n a[data-hash-tag=\"#report-2a\"],\n a[data-hash-tag=\"#report-3a\"],\n a[data-hash-tag=\"#report-1b\"],\n a[data-hash-tag=\"#report-2b\"],\n a[data-hash-tag=\"#report-3b\"],\n a[data-hash-tag=\"#report-4a\"],\n a[data-hash-tag=\"#report-4b\"],\n a[data-hash-tag=\"#report-5\"],\n a[data-hash-tag=\"#report-6a\"],\n a[data-hash-tag=\"#report-7\"],\n a[data-hash-tag=\"#report-comments\"],\n a[data-hash-tag=\"#report-admins-comments\"]', (event) ->\n location.hash = $(this).attr('data-hash-tag')\n\n$(window).on 'popstate', ->\n anchor = location.hash or $(\"#1a-link-tab\").attr('data-hash-tag')\n $('a[data-hash-tag=\\'' + anchor + '\\']').trigger 'click'\n\n\ndocument.addEventListener(\"comments-scrolHeight-loaded\", ->\n if location.hash\n current_element = $('a[data-hash-tag=\\'' + location.hash + '\\']');\n setTimeout (->\n if ['2a-link-tab', '2b-link-tab', '3a-link-tab', '3b-link-tab', '4a-link-tab', '4b-link-tab', '6a-link-tab', '7-link-tab', 'comments-link-tab', 'admins-comments-link-tab'].indexOf(current_element.attr('id')) > -1\n if $(\"#comments-scrollable-div\").length > 0\n $(\"#comments-scrollable-div\").scrollTop($(\"#comments-scrollable-div\")[0].scrollHeight);\n $(current_element.attr('data-report-seagreen-box')).addClass('hide')\n else\n $(current_element.attr('data-report-seagreen-box')).removeClass('hide')\n ), 500\n);\ndocument.addEventListener(\"overall_health_loaded\", ->\n # tooltip initializer for 'preview last season report' module\n $('[data-toggle=\"tooltip\"]').tooltip()\n\n effectiveness_ratings()\n\n $('body').on 'keyup', '.score_fields', (e) ->\n minimum_factor = parseFloat($(e.target).closest('tr').find(\".score_fields:last\")[0].value || 0)\n highest_factor = parseFloat($(e.target).closest('tr').find(\".score_fields:first\")[0].value || 0)\n difference = highest_factor - minimum_factor\n $(e.target).closest('tr').siblings(\"tr:last\").find('td:last').text(difference)\n\n # ==== render rateyo for dynamic content addition\n $('.report_2a_card').on 'cocoon:after-insert', (event, insertedItem) ->\n rating_elem = $(insertedItem).find('.rating_review_modal_fields')\n rating_input = $(insertedItem).find('.av_rating')\n $(rating_elem).rateYo\n rating: 0.0\n fullStar: true\n starWidth: '25px'\n ratedFill: $(rating_input).data('color'),\n readOnly: mr_disabled\n $(rating_elem).click ->\n selected_value = $(this).rateYo('option', 'rating')\n $(this).closest('tr').find('.av_rating').val selected_value\n);\n\ndocument.addEventListener(\"discipleships-loaded\", ->\n effectiveness_ratings()\n # ==== render rateyo for dynamic content addition\n $('.report_2a_card').on 'cocoon:after-insert', (event, insertedItem) ->\n rating_elem = $(insertedItem).find('.rating_review_modal_fields')\n rating_input = $(insertedItem).find('.av_rating')\n $(rating_elem).rateYo\n rating: 0.0\n fullStar: true\n starWidth: '25px'\n ratedFill: $(rating_input).data('color'),\n readOnly: mr_disabled\n $(rating_elem).click ->\n selected_value = $(this).rateYo('option', 'rating')\n $(this).closest('tr').find('.av_rating').val selected_value\n);\ndocument.addEventListener(\"discipleships-loaded2\", ->\n $('[data-toggle=\"tooltip\"]').tooltip()\n effectiveness_ratings()\n $(\".primary_theme_btn_select\").select2({\n placeholder: \"Select Primary Theme\",\n theme: \"bootstrap\",\n width: \"100%\",\n allowClear: true,\n });\n # ==== render rateyo for dynamic content addition\n $('.report_2a_card').on 'cocoon:after-insert', (event, insertedItem) ->\n rating_elem = $(insertedItem).find('.rating_review_modal_fields')\n rating_input = $(insertedItem).find('.av_rating')\n $(rating_elem).rateYo\n rating: 0.0\n fullStar: true\n starWidth: '25px'\n ratedFill: $(rating_input).data('color'),\n readOnly: mr_disabled\n $(rating_elem).click ->\n selected_value = $(this).rateYo('option', 'rating')\n $(this).closest('tr').find('.av_rating').val selected_value\n);\n\n# ============= 2B Smart tooltip\ndocument.addEventListener(\"vision-goal-report\", ->\n $('[data-toggle=\"tooltip\"]').tooltip()\n)\n\neffectiveness_ratings = ->\n $('.church_ratings').each (index, element) ->\n rate_element = $(element).closest('td').find('.av_rating')\n rating = parseFloat($(rate_element).val())\n $(element).rateYo\n rating: rating\n fullStar: true\n starWidth: '25px'\n ratedFill: $(rate_element).data('color'),\n readOnly: mr_disabled\n\n $(element).click ->\n selected_value = $(this).rateYo('option', 'rating')\n $(this).closest('td').find('.av_rating').val selected_value\n\n$(document).on 'click', '.funding_application_save_btn', (e)->\n e.preventDefault()\n e.stopPropagation()\n obj = {}\n element = $( \"textarea[name*='report_snapshot[detail][funding_application]']\" )\n value = $(element).val()\n url = $(element).attr('href')\n obj[\"funding_application\"] = value\n $.ajax(\n url: url,\n type: 'PUT',\n dataType: 'script',\n data: obj\n )\n\n# ===== Closing all accordion when tabs clicks 2A, 2B ....\nclose_all_accordion = ->\n headers = $('.card-header:not(.collapsed)')\n bodies = $('.mn-report-form .collapse.show')\n headers.each( (indx, elem) ->\n $(elem).addClass('.collapsed').attr('aria-expanded', false)\n )\n bodies.each( (indx, elem) ->\n $(elem).removeClass('show')\n )\n\n# ===== Vision Goal school term select\n$(document).on('click', '#edit-vision-goal .school-term, #new-vision-goal .school-term', ->\n current_element = $(this)\n $('#edit-vision-goal .school-term,\n #new-vision-goal .school-term').each( (indx, el)->\n if(!$(el).hasClass('disabled_season'))\n $(el).addClass('disabled_season')\n )\n $('#edit-vision-goal .school-term,\n #new-vision-goal .school-term').each( (indx, el)->\n if($(el).data('term') == current_element.data('term'))\n $(el).removeClass('disabled_season')\n )\n $('.vision-goal-terms').val(current_element.data('term'));\n)\n\n# ===== Vision Goal season select\n$(document).on('click', '#edit-vision-goal .vision-season, #new-vision-goal .vision-season', ->\n current_element = $(this)\n $('#new-vision-goal .vision-season,\n #edit-vision-goal .vision-season').each( (indx, el)->\n if(!$(el).hasClass('disabled_season'))\n $(el).addClass('disabled_season')\n )\n $('#new-vision-goal .vision-season,\n #edit-vision-goal .vision-season').each( (indx, el)->\n if($(el).data('season') == current_element.data('season'))\n $(el).removeClass('disabled_season')\n )\n $('.vision-goal-season').val(current_element.data('season'));\n)\n\n\n# === create ministry report form ========\n# $(document).on 'mouseover', '.mntry-report .seasons-listing .seasson-span img', ->\n# parent = $(this).closest('.seasons-listing')\n# parent.find('img').each( (indx, elem) ->\n# if(!$(elem).hasClass('opacity-0-3'))\n# $(elem).addClass('opacity-0-3')\n# )\n# $(this).removeClass('opacity-0-3').addClass('opacity-1')\n$(document).on(\n mouseenter: ->\n disable_season($(this))\n $(this).removeClass('opacity-0-3').addClass('opacity-1')\n mouseleave: ->\n disable_season($(this))\n click: ->\n parent = $(this).closest('.seasons-listing')\n parent.find('img').each( (indx, elem) ->\n if($(elem).hasClass('opacity-1') && $(elem).hasClass('active') )\n $(elem).addClass('opacity-0-3').removeClass('opacity-1 active')\n )\n $(this).addClass('opacity-1 active').removeClass('opacity-0-3')\n parent.find('.report-season-id').val($(this).data('value'))\n\n , '.mntry-report .seasons-listing .seasson-span img'\n\n)\n$(document).on 'change', '.report-year', (e) ->\n selected_year = $(this).val()\n $.ajax(\n url: '/reports/new?last_year='+selected_year\n type: 'GET'\n contentType: \"text/javascript\"\n dataType: 'script'\n )\n return\n\n$(document).on 'change', '#induction-resource-dropdown', (e) ->\n $.ajax(\n url: $(this).attr(\"href\")\n dataType: 'script'\n type: 'GET',\n data: {'intent': $(this).val()}\n )\n return\n\ndisable_season = (current_element) ->\n parent = current_element.closest('.seasons-listing')\n parent.find('img').each( (indx, elem) ->\n if($(elem).hasClass('opacity-1') && !$(elem).hasClass('active') )\n $(elem).addClass('opacity-0-3').removeClass('opacity-1')\n )\n\n#======= Auto save review form =============\ntimer = undefined\n\n$(document).on \"change\", \".induction-template-form\", ->\n triggerAutoSave(this)\n $('.autosave-textbox').html 'Saving...'\n\n\n$(document).on \"change\", \"#report_4a_cont input\", ->\n # but input field should be belongs to sda Teaching Modal\n if !$(this).prop('name').includes('sda_teaching')\n triggerAutoSave(this)\n\n$(document).on 'input', '.mntry-report-1a-cont textarea,\n .mntry-report-1a-cont input,\n .moderate-review-form,\n #report_2a_cont textarea,\n #report_2b_cont input, #report_2b_cont textarea,\n #report_7_cont input,\n #report_3a_cont input, #report_3a_cont textarea,\n #report_3b_cont input, #report_3b_cont textarea,\n #report_4a_cont input, #report_4a_cont textarea,\n #report_4b_cont input, #report_4b_cont textarea,\n #report_6a_cont input, #report_6a_cont textarea,\n #report_5_cont_form input, #report_5_cont_form textarea', ->\n if !$(this).prop('name').includes('sda_teaching') && !$(this).prop('name').includes('rejection_reason')\n triggerAutoSave(this)\n\n# work on mobile, tabs\n$.browser = (/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase()));\nif ($.browser)\n $(document).on 'click', '.mntry-report-1a-cont input[type=radio]', ->\n autoSaveReportTimeout($(this).closest('form'))\n return\n\n$(document).on 'click', '#report_2a_cont svg,\n #report_3a_cont svg,\n #report_3b_cont svg', ->\n if( !mr_disabled )\n # disable add more, remove button while autosaving\n $('.add-more-rep-field, .remove_fields').each( (indx, elm) ->\n $(elm).find('button').prop('disabled', true)\n )\n autoSaveReportTimeout($(this).closest('form'))\n return false\n\n$(document).on 'change', '#report_3b_cont .primary_theme_btn_select', ->\n # disable add more, remove button while autosaving\n $('.add-more-rep-field, .remove_fields').each( (indx, elm) ->\n $(elm).find('button').prop('disabled', true)\n )\n autoSaveReportTimeout($(this).closest('form'))\n return false\n\n$(document).on 'click', '.fetch-delegate-layusers-btn', (e) ->\n e.preventDefault()\n form = $(this).closest('form')\n render_async_url = form.find('#render_async_url').val()\n accordion_open = form.find('.collapse.show').attr('id')\n parent_target_id = form.find('#parent_target_id').val()\n $.ajax(\n url: $(this).data('url')\n dataType: 'script'\n data: {'render_async_url': render_async_url, 'accordion_open': accordion_open, 'parent_target_id': parent_target_id}\n )\n return\n\n$(document).on 'click', '.remove-delegate-layuser-preaching-btn', (e) ->\n e.preventDefault()\n form = $(this).closest('form')\n render_async_url = form.find('#render_async_url').val()\n accordion_open = form.find('.collapse.show').attr('id')\n parent_target_id = form.find('#parent_target_id').val()\n $.ajax(\n url: $(this).data('url')\n type: 'delete'\n dataType: 'script'\n data: {'render_async_url': render_async_url, 'accordion_open': accordion_open, 'parent_target_id': parent_target_id}\n beforeSend: (xhr) ->\n xhr.setRequestHeader 'X-CSRF-Token', $('meta[name=\"csrf-token\"]').attr('content')\n )\n return\n\n# this function only use case is to prevent accordion from toggling when\n# import Preaching button click in 3b\n$(document).on 'click', '.import-location-preaching', (e) ->\n e.stopPropagation();\n return\n# this function only use case is to prevent accordion from toggling when\n# clicking checkbox share in 2b\n$(document).on 'click', '#report_2b_cont .label-for-share-2b,\n #report_2b_cont input[type=checkbox],\n #report_4a_cont .label-for-share-4a,\n #report_4a_cont input[type=checkbox],\n #report_4b_cont input[type=checkbox],\n #report_4b_cont .label-for-share-4a', (e) ->\n e.stopPropagation();\n return\n\n# Equipping section of MR\n\n$(document).on 'click', '.eqp-report-tr', ->\n url = $(this).data('url')\n location.href = url\n return\n\n\n# ===== Functions ======\n\ntriggerAutoSave = (this_ref) ->\n # MS, PGS, UMS, SUPV can edit Part 4 of supervisor's report. so they are permitted users\n permitted_user = $('#permitted_user').val()\n\n if( !mr_disabled || permitted_user == 'true' )\n # disable add more, remove button while autosaving\n $('.add-more-rep-field, .remove_fields,\n .delete-foreground-row .close-foreground-row-2').each( (indx, elm) ->\n $(elm).find('button').prop('disabled', true)\n )\n autoSaveReportTimeout($(this_ref).closest('form'))\n return\n\nautoSaveReportTimeout = (form) ->\n clearTimeout timer\n timer = setTimeout((->\n updateMinistryReport(form)\n return\n ), 2000)\n return\n\nupdateMinistryReport = (form) ->\n required_accordion = form.find('.collapse.show').attr('id')\n # save id of accordion which is currently active\n form.attr('action', form.attr('action'))\n # form.css({'opacity': 0.4})\n # form.find('*').css({'cursor': 'none'})\n $.ajax\n url: form.attr('action')\n type: \"POST\"\n data: form.serialize()\n dataType: 'script'\n beforeSend: (xhr) ->\n xhr.setRequestHeader 'X-CSRF-Token', $('meta[name=\"csrf-token\"]').attr('content')\n $('#report-submit-btn').prop('disabled', true)\n $('.autosave-textbox').html 'Saving...'\n $('.auto-save-cont').css('display', 'flex')\n return\n complete: ->\n setTimeout (->\n $('.autosave-textbox').html 'Saved!' \n $('#report-submit-btn').prop('disabled', false)\n $('.add-more-rep-field, .remove_fields,\n .delete-foreground-row').each( (indx, elm) ->\n $(elm).find('button').prop('disabled', false)\n )\n # form.css({'opacity': 1})\n # form.find('*').css({'cursor': 'default'})\n return\n ), 1000\n setTimeout (->\n $('.autosave-textbox').html ' '\n $('.auto-save-cont').css('display', 'none')\n return\n ), 2000\n return\n return\n\nimport_delegated_preaching = (element) ->\n url = element.data('url')\n form = element.closest('form')\n render_async_url = form.find('#render_async_url').val()\n accordion_open = form.find('.collapse.show').attr('id')\n parent_target_id = form.find('#parent_target_id').val()\n $.ajax(\n url: url\n dataType: 'script'\n data: { 'render_async_url': render_async_url, 'accordion_open': accordion_open, 'parent_target_id': parent_target_id }\n )\n return\n\n# preaching application/note move cursor below on enter press event\nfocus_below_field = (klass_name) ->\n $(document).on 'keypress', klass_name, (e) ->\n if ( e.which == 13 )\n e.preventDefault()\n\n next_tr = undefined\n if ($(this).closest('tr').next('input').length > 0)\n next_tr = $(this).closest('tr').next().next('tr')\n else\n next_tr = $(this).closest('tr').next('tr')\n\n if next_tr.length > 0\n field = next_tr.find(klass_name)\n fldLength= field.val().length;\n field.focus()\n field[0].setSelectionRange(fldLength, fldLength);\n# apply on all preaching fields\npreaching_field_move_cursor = () ->\n fields = ['.preaching-note', '.preaching-speaker', '.preaching-message'];\n for x of fields\n focus_below_field(fields[x])\n# call override behaviour\npreaching_field_move_cursor()\n\nsend_mr_to_principal = (confirmation_url, main_url) ->\n $.ajax(\n url: confirmation_url,\n dataType: 'script',\n data: {url: main_url},\n method: 'GET'\n )\n\n\n# Attached import_delegated_preaching func in window object so it is available globally\nwindow.import_delegated_preaching = import_delegated_preaching\n\nwindow.send_mr_to_principal = send_mr_to_principal\n","$(document).ready ->\n $('.ministers-dropdown').select2\n placeholder: 'Add existing minister'\n theme: 'bootstrap'\n $('body').on 'click', '.add_min_btn', ->\n url = $(this).data('href') + '?minister_id=' + $('.ministers-dropdown option:selected').val()\n $.ajax\n method: 'GET'\n url: url\n dataType: 'script'\n\n$(document).on 'click', '.r-season-cont', ->\n location.href = $(this).data('url')\n","$(->\n $('.questionnaire-row td:not(:last-child)').click(->\n location.href = $(this).closest('tr').attr('data-href')\n )\n\n # ===== Questionnaire listing switch tabs, change tab parameter value =====\n $('#questionnaires-li').click(->\n $('#questionnaire-listing-cont .form-row #tab').val('questionnaires');\n )\n $('#archived-li').click(->\n $('#questionnaire-listing-cont .form-row #tab').val('archived');\n )\n)\n\n# ==== reorder question number in adding new questionnaire in form ======\n$(document).on('click', '.add_quest_next_btn_div', ->\n parent = $(this).parent()\n totalQuestions = parent.find('.nested-fields')\n\n totalQuestions.each( (indx, element) ->\n $(element).find('label').text('Question '+(indx+1))\n )\n)\n\n# ==== Alert Publish status =====\n$(document).on 'click', '#publish-review-template', (e) ->\n e.preventDefault()\n $('#publish-alert-modal').modal('show')\n return false;\n\n\n$(document).on 'click', '.template-publish-confirmation', ->\n $('.review-template-status').val('published')\n $('form.review-template-form').submit()\n\n\n# ==== ToggleClass ====\n$(document).on 'click', '.quest_view_sidebar_list_item', ->\n appendActiveTabClass($(this))\n return false\n\n# ======== Appending select competency parameter runtime =======\n$(document).on 'click', '.add-current-competency-urlstate', ->\n pushStateSelectedCompetency($(this))\n return false\n\n\n\npushStateSelectedCompetency = (current_element) ->\n [url, queryString] = location.href.split('?')\n newQueryString = if(queryString) then queryString.split('&').filter((elem) -> !elem.includes('selected_competency')).join('&') else '?selected_competency='+current_element.data('url-state-change')\n if(newQueryString.length == 0)\n newQueryString = '?selected_competency='+current_element.data('url-state-change')\n else if(!newQueryString.includes('?'))\n newQueryString = '?'+newQueryString+'&selected_competency='+current_element.data('url-state-change')\n # queryString = if (queryString) then \"?\"+queryString + '&selected_competency='+current_element.data('url-state-change') else '?selected_competency='+current_element.data('url-state-change')\n new_url = url+newQueryString\n history.pushState({}, '', new_url)\n return false;\n\nappendActiveTabClass = (current_element) ->\n parentUl = current_element.parent();\n parentUl.find('li').each( (indx, element) ->\n $(element).removeClass('active-tab')\n )\n current_element.addClass('active-tab')\n return false","$(document).on 'click', '#review-list-cont .review-tr-cont td:not(:last-child)', ->\n location.href = $(this).parent().attr('data-href') if $(this).parent().attr('data-href').length > 0\n return false\n# $(document).on 'click', '.rate-showcase', ->\n# $(this).siblings('.rate-slide-bar').css(\"display\", \"flex\").hide().fadeIn()\n# return false\n$(document).on 'click', '.rate-slide-close', ->\n $(this).parent().fadeOut()\n return false\n$(document).on 'click', '.invite-reviewer-btn', ->\n if($('#rinvite-email-field')[0].checkValidity())\n $('#loader-cont').fadeIn()\n else\n $(this).closest('form').validate().element(\"#rinvite-email-field\")\n Rails.fire($(this).closest('form')[0], 'submit')\n return false\n$(document).on 'click', '.reminder-link:not(\".reminder-disable-color\")', (e) ->\n e.preventDefault()\n $('#loader-cont').fadeIn()\n $.ajax(\n url: $(this).attr('data-href')\n type: 'GET'\n ).done (data) ->\n toastr.success('Reminder has been sent.');\n $('#reminder-'+data.reminders+'-id-'+data.id).parent().addClass('reminder-disable-color');\n $('#loader-cont').fadeOut();\n$(document).on 'click', '.moderate-review-tr td:not(\".right-border\")', ->\n location.href = $(this).parent().attr('data-href')\n\n# ==== Preview Competency Report PGS, MIN\n$(document).on 'click', '.preview-competency_report_tr', ->\n window.open($(this).attr('data-href'), '_blank')\n\n# ===== Does not apply Rate ========\n$(document).on 'click', '.does-not-apply-rate', ->\n doesNotApplyRate($(this))\n return false\n$(->\n $('.does-not-apply-rate.run-click-trigger').each((indx, element) ->\n doesNotApplyRate($(element))\n )\n)\n\n# ======= Toggle Generate Review Report btn according to sidebar tab active ========\n\n$(document).on 'click', '.toggle-generate-review-report', ->\n parent = $(this).closest('.quest_view_sidebar_list')\n # check if we click last tab of sidebar or not, if yes return true otherwise false\n last_sidebar_tab = parent.find('a.toggle-generate-review-report').last().attr('id') == $(this).attr('id')\n toggle_class = if $(this).closest('.invitee-review-report-form').length > 0 then '.submit-reviewer-report-container' else '.generate-review-report-container'\n if(last_sidebar_tab)\n $(toggle_class).show()\n else\n $(toggle_class).hide()\n return\n\ndoesNotApplyRate = (current_element) ->\n parent = current_element.parent()\n slideBar = parent.find('.rate-slide-bar')\n rateBox = parent.find('.rate-showcase')\n slideBar.toggleClass('custom-disable')\n rateBox.toggleClass('custom-disable')\n if current_element.text() == \"Can't say / Does not apply\"\n current_element.text('Apply')\n parent.find('.review-rating').val(null);\n else\n current_element.text(\"Can't say / Does not apply\")\n\n#======= Auto save review form =============\ntimer = undefined\n$(document).on 'input', '.quest_review textarea', ->\n autoSaveReviewForm()\n return\n# $(document).on 'click', '.rateYo-cont, .does-not-apply-rate', ->\n# console.log('sdfdsf');\n# autoSaveReviewForm()\n# return\n$(->\n if $('.quest_review').length > 0\n observer = new MutationObserver((mutations) ->\n mutations.forEach (mutation) ->\n if mutation.type == 'childList'\n autoSaveReviewForm()\n return\n return\n )\n observer.observe($('.quest_review')[0],\n childList: true\n subtree: true\n )\n)\nautoSaveReviewForm = ->\n clearTimeout timer\n timer = setTimeout((->\n methodType = $('#review-form-tag, .invitee-review-report-form').find('input[name=_method]').val()\n if(methodType == undefined)\n methodType = 'POST'\n $.ajax\n url: $('#review-form-tag, .invitee-review-report-form').attr('action')\n type: methodType\n data: $('#review-form-tag, .invitee-review-report-form').serialize()\n dataType: 'json'\n beforeSend: (xhr) ->\n xhr.setRequestHeader 'X-CSRF-Token', $('meta[name=\"csrf-token\"]').attr('content')\n $('.autosave-textbox').html 'Saving...'\n $('.auto-save-cont').css('display', 'flex')\n return\n complete: ->\n setTimeout (->\n $('.autosave-textbox').html 'Saved!'\n return\n ), 1000\n setTimeout (->\n $('.autosave-textbox').html ' '\n $('.auto-save-cont').css('display', 'none')\n return\n ), 2000\n return\n return\n ), 2000)\n return\n\n$(document).ready ->\n if $('.quest_view_sidebar_list li.active-tab a').attr('id') == 'envisioning-cont-tab'\n $('.next-question-btn').hide()\n $('body').on 'click', '.next-question-btn', ->\n next_tab = $('.quest_view_sidebar_list').find('li.active-tab').next('li')\n $(next_tab).find('a').trigger 'click'\n $(next_tab).trigger 'click'\n $('html, body').animate { scrollTop: 0 }, 'slow'\n return\n $('body').on 'click', '.quest_view_sidebar_list li', ->\n if $(this).find('#envisioning-cont-tab').length > 0\n $('.next-question-btn').hide()\n else\n $('.next-question-btn').show()\n return\n return\n\n# ====== Moderate Review Detail =========\n\n# set selected-competency-hidden field value according to competency active tab\n$(document).on('click', '#review-report-form .add-current-competency-urlstate', ->\n $('.selected-competency-hidden').val($(this).data('url-state-change') )\n)","gstart_time = '';\ngend_time = '';\n$(->\n $('#calendar').fullCalendar(\n height: 650\n header: {\n left: '',\n center: 'prev title next',\n right: 'today, agendaWeek, month'\n }\n columnHeaderFormat: 'MMM D - ddd'\n defaultView: 'agendaWeek'\n events: '/schedule_times'\n displayEventTime: true\n selectable: true\n displayEventEnd: true\n timeFormat: 'h:mm a'\n slotDuration: '00:15:00'\n slotLabelInterval: '00:15'\n businessHours: {\n dow: [ 1, 2, 3, 4, 5, 6, 7 ]\n start: '08:00'\n end: '18:00'\n }\n minTime: '08:00:00'\n maxTime: '18:00:00'\n selectOverlap: (event) ->\n # if event preset then it return false so user not able to select date which have events.\n return !event;\n\n # === on clicking a cell ===\n select: (start, end, jsEvent, view) ->\n if $('.interview-availability-container.empty-slots-cont').length > 0\n availEmptySlot(start, end)\n return false\n eventClick: (event, jsEvent, view) ->\n if $('.interview-availability-container.empty-slots-cont').length > 0\n if event.status != 'closed'\n $.ajax(\n url: '/schedule_times/'+event.id,\n dataType: 'script',\n type: 'GET'\n )\n else\n # when MIN clicks schedule time\n eventEndDate = new Date(moment(event.end).format('MMMM D, YYYY H:mm:ss'))\n currentDate = new Date();\n if eventEndDate > currentDate && event.status != 'closed'\n # check already occupied by another MIN\n if(event.occupied)\n $.ajax(\n url: '/schedule_times/'+event.id,\n dataType: 'script',\n type: 'GET'\n )\n else\n $.ajax(\n url: '/schedule_times/'+event.id+'/appointments/confirmation'\n dataType: 'script'\n type: 'GET'\n )\n return false\n eventRender: (event, element) ->\n if(event.occupied)\n $.ajax(\n url: '/schedule_times/'+event.id+'/check_current_user_as_interviewer',\n dataType: 'json',\n type: 'GET',\n success: (data, textStatus, jqXHR) ->\n if(data == true)\n $(element).css\n \"background\": \"url('assets/green-stripe.png') right\"\n \"border-color\": \"#74da92\"\n else\n $(element).css\n \"background-color\": \"#ffaeae !important\"\n \"border-color\": \"red\"\n )\n $(element).css\n \"background\": \"url('assets/green-stripe.png') right\"\n \"border-color\": \"#74da92\"\n )\n)\n\n#==== hide/show schedule form in Popup\n$(document).on 'click', '.schedule-edit-fa', ->\n $(this).toggleClass('hide')\n $(this).siblings('.schedule-view-fa').toggleClass('hide')\n parent = $(this).closest('.modal-content')\n parent.find('.modal-body #schedule-event-detail-cont').toggleClass('hide')\n parent.find('.modal-body #schedule-event-form-cont').toggleClass('hide')\n return false\n$(document).on 'click', '.schedule-view-fa', ->\n $(this).toggleClass('hide')\n $(this).siblings('.schedule-edit-fa').toggleClass('hide')\n parent = $(this).closest('.modal-content')\n parent.find('.modal-body #schedule-event-detail-cont').toggleClass('hide')\n parent.find('.modal-body #schedule-event-form-cont').toggleClass('hide')\n return false\n\n#==== Avail empty slot\n$(document).on('click', '#yes-available-btn', ->\n obj = { schedule_time: { start_time: gstart_time, end_time: gend_time } }\n $.ajax(\n url: '/schedule_times',\n dataType: 'script',\n data: obj,\n type: 'POST',\n beforeSend: (xhr) ->\n xhr.setRequestHeader('X-CSRF-Token', $('meta[name=\"csrf-token\"]').attr('content') )\n )\n)\n\n#==== Confirmation Popup before deleting schedule time\n$(document).on 'click', '.schedule-delete-fa', ->\n $('#schedule-event-detail-modal').modal('hide')\n $('.delete-schedule-event-modal').modal()\n#==== Delete available slot\n$(document).on 'click', '#yes-delete-schedule-time-btn', ->\n event_id = $('#schedule_event_id_field').val()\n $.ajax(\n url: '/schedule_times/'+event_id,\n dataType: 'script',\n type: 'DELETE',\n beforeSend: (xhr) ->\n xhr.setRequestHeader('X-CSRF-Token', $('meta[name=\"csrf-token\"]').attr('content') )\n )\n return false\n\navailEmptySlot = (start, end) ->\n start_date = start.format(\"H\")\n start_date_string = start_date.toString()\n if ((start_date_string >= 8 && end.format(\"HH\") < 18) || (start_date_string >= 8 && end.format(\"HH\") == '18' && end.format(\"m\") == '0'))\n start = moment(start)\n end = moment(end)\n schedule_modal = $('#schedule-interview-modal')\n start_span = schedule_modal.find('.start-time-span')\n end_span = schedule_modal.find('.end-time-span')\n # console.log(start.format(\"MM/DD/YYYY h:mm:ss a\"), end.format(\"MM/DD/YYYY h:mm:ss a\"))\n gstart_time = start.format(\"YYYY-MM-DD h:mm:ss a\")\n gend_time = end.format(\"YYYY-MM-DD h:mm:ss a\")\n start_span.html(start.format(\"h:mm a\"))\n end_span.html(end.format(\"h:mm a\"))\n schedule_modal.modal()\n else\n alert(\"You can only book the interview slot from 08:00am to 6:00pm\");\n return false\n","$(document).on 'click', '#mailing_resources_report_modal .send-mail-btn', (e) ->\n e.preventDefault()\n if($(this).closest('form')[0].checkValidity())\n $('#loader-cont').fadeIn()\n else\n $(this).closest('form').validate().element(\".rr-email-address\")\n Rails.fire($(this).closest('form')[0], 'submit')\n return false","$.browser = (/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase()))\n\n$(document).on 'click', '.layman-invite-btn', (e) ->\n e.preventDefault()\n $('#loader-cont').show()\n Rails.fire($(this).closest('form')[0], 'submit')\n return\n\nif(!$.browser)\n $(document).on 'click', '.delegated-preaching-row', ->\n url = $(this).data('url')\n location.href = url;\n return\nif($.browser)\n $(document).on 'touchend', '.delegated-preaching-row', ->\n url = $(this).data('url')\n location.href = url;\n return\n","ministers_for_job_notification = (klass) ->\n $.each ['.conference-list-notification', '.notification-location-type-list', '.users-list-notification-cont'], (index, elem) ->\n $(elem).multipleSelect filter: true, placeholder: 'Select', formatAllSelected: ->\n return 'All ' + $( elem + ' option').length + ' selected'\n\n $(document).on 'change', 'select.selectable_list', ->\n conf_ids = $(this).closest('.modal-body').find('.conference-list-notification').val()\n location_type_ids = $(this).closest('.modal-body').find('.notification-location-type-list').val()\n $.ajax(\n url: '/notifications/fetch_required_ministers'\n type: 'GET'\n dataType: 'JSON'\n data:\n 'conference_ids': conf_ids\n 'location_type_ids': location_type_ids\n 'conference_ministers': true).done (ministers) ->\n options = ''\n $(ministers).each (indx, elem) ->\n name = elem.first_name + ' ' + elem.last_name\n if name.length == 1\n name = elem.email\n if elem.main_role != null\n role = \"(\"+elem.main_role.toUpperCase()+\")\"\n options = options + \"<option value='\" + elem.id + \"'>\"+ name + ' ' + role + \"</option>\"\n return\n $('select' + klass).html options\n $('select' + klass).multipleSelect 'destroy'\n $('select' + klass).multipleSelect filter: true, placeholder: 'Select'\n return\n return\n return\n\nwindow.ministers_for_job_notification = ministers_for_job_notification\n","$(document).ready ->\n $('body').on 'change', '#union_admin_roles_modal input[type=\"checkbox\"]', ->\n $('#union_admin_roles_modal input[type=\"checkbox\"]').not(this).prop 'checked', false\n return\n","$(->\n $('.msa-ministers-dropdown').select2(\n placeholder: 'Add existing minister',\n theme: 'bootstrap',\n width: '220px'\n )\n)\n\n# ==== Popup modal for assign MIN to MSA\n$(document).on 'click', '.assign-existing-min-msa', ->\n parent = $(this).closest('.invite-assign-min-container')\n selected_minister_id = parent.find('.msa-ministers-dropdown').val();\n $.ajax(\n url: $(this).data('href')+'?selected_minister_id='+selected_minister_id\n dataType: 'script'\n )\n return false\n","$(document).on 'click', '.focus_area_explanation_toggle', ->\n $(this).closest('.focus-area-block').find('.focus_area_explanation_slider').slideToggle();\n# ====== AUXANO accordion when open, change query parameter\n$(document).on 'click', '.auxano-card-cont', ->\n if !$(this).find('.auxano-accordion-bar').hasClass('collapsed')\n year = $(this).data('year')\n loc_hash = $(this).attr('id')\n [url, quryString] = location.href.split('?')\n new_url = url+'?year='+year+'#'+loc_hash\n history.pushState({}, '',new_url)\n","$(document).on 'click', '#reivew-next-confirmation', ->\n parent = $(this).closest('.modal-content')\n parent.hide()\n parent.siblings('.modal-content').show()\n return false\n\n#==== Min avail timeslot\n$(document).on 'click', '#yes-avail-timeslot', ->\n event_id = $('#event-id-field').val()\n year = $('#review-year-selection').val()\n location_ids = $('#review-location-selection').val()\n $.ajax(\n url: '/schedule_times/'+event_id+'/appointments',\n dataType: 'script',\n type: 'POST',\n data: { year: year, location_ids: location_ids }\n beforeSend: (xhr) ->\n xhr.setRequestHeader('X-CSRF-Token', $('meta[name=\"csrf-token\"]').attr('content') )\n )\n return false\n\n#==== Change locations according to year\n$(document).on 'change', '#review-year-selection', ->\n year = $('#review-year-selection').val()\n $.ajax(\n url: '/appointments/location_all',\n dataType: 'script',\n type: 'GET',\n data: { year: year }\n beforeSend: (xhr) ->\n xhr.setRequestHeader('X-CSRF-Token', $('meta[name=\"csrf-token\"]').attr('content') )\n )\n return false\n\n#==== Setting Appointment popup, enable btn when year and locations selected\n$(document).on 'change', '#review-year-selection, #review-location-selection', ->\n parent = $(this).closest('.modal-content')\n year_location_fields = parent.find('#review-year-selection, #review-location-selection')\n any_field_empty = false\n year_location_fields.each( (indx, elem) ->\n if $(elem).val().length == 0\n any_field_empty = true\n )\n if any_field_empty\n parent.find('#reivew-next-confirmation').attr('disabled', true)\n else\n parent.find('#reivew-next-confirmation').attr('disabled', false)\n return false","$(document).ready ->\n $('.conference_min_add_form').validate(\n rules: 'start_date': required: true, 'report_to': required: true\n )\n return\n\n$(document).on 'click', '.add-existing-user-conference, .add-existing-user-location', ->\n if ($(this).closest('form').valid())\n $(this).attr('disabled', true)\n $('#loader-cont').show()\n Rails.fire($(this).closest('form')[0], 'submit')\n\n$(document).on 'click', '.conference-ministry-tabs', ->\n newurl = updateQueryStringParameter('active-tab', $(this).data('active-tab'))\n window.location.href = newurl\n return\n# select with or without conference ministers, and add it to his conference by MS\n$(document).on 'click', '.add_request_user_to_conference', ->\n url = $(this).data('href') + '?minister_id=' + $('.transfer-in-ministers-dropdown option:selected').val()\n $('#transfer-in-modal').modal('hide');\n $.ajax\n method: 'GET'\n url: url\n dataType: 'script'\n return\n\n$(document).on 'click', '.popsup-confirmation-add-user-request', (e) ->\n e.preventDefault();\n url = $(this).data('url');\n $.ajax\n method: 'GET'\n url: url\n dataType: 'script'\n return\n\nupdateQueryStringParameter = (key, value) ->\n uri = window.location.href\n re = new RegExp('([?&])' + key + '=.*?(&|$)', 'i')\n separator = if uri.indexOf('?') != -1 then '&' else '?'\n if uri.match(re)\n uri.replace re, '$1' + key + '=' + value + '$2'\n else\n uri + separator + key + '=' + value\n","$(->\n renderPreachingSummaryForm()\n)\n\n# ============= Events ===============\n$(document).on 'click', '.preaching-summary-link', ->\n toggleActiveTabClass($(this))\n renderPreachingSummaryForm()\n\n$(document).on 'click', '.conference-review-link', ->\n toggleActiveTabClass($(this))\n renderConferenceReviewForm()\n\n$(document).on 'click', '.track-attendance-link', ->\n toggleActiveTabClass($(this))\n rendertrackAttendanceForm()\n\n$(document).on 'click', '.profile-statistics-link', ->\n toggleActiveTabClass($(this))\n renderProfileStatisticsForm()\n\n\n# ============== Functions =============\nrenderPreachingSummaryForm = ->\n target = $('.preaching-summary-block')\n if(target.length == 0)\n return false\n toggleLoaderBaseClasses()\n $.ajax(\n url: 'preaching_summary/new',\n type: 'GET'\n ).done((data)->\n target.html(data)\n )\n\nrenderConferenceReviewForm = ->\n target = $('.preaching-summary-block')\n toggleLoaderBaseClasses()\n $.ajax(\n url: 'conference_review/new',\n type: 'GET'\n ).done((data) ->\n target.html(data)\n $('#loader-box').hide()\n )\n\nrendertrackAttendanceForm = ->\n target = $('.preaching-summary-block')\n toggleLoaderBaseClasses()\n $.ajax(\n url: 'average_track_attendance',\n type: 'GET'\n ).done((data) ->\n target.html(data)\n )\n\nrenderProfileStatisticsForm = ->\n target = $('.preaching-summary-block')\n toggleLoaderBaseClasses()\n $.ajax(\n url: 'profile_statistics_form',\n type: 'GET'\n ).done((data) ->\n target.html(data)\n )\n\n# Toggle active tab class on switch tabs\ntoggleActiveTabClass = (target_element) ->\n $('.list-inline-item a').each( (index, elem) ->\n $(elem).removeClass('active')\n )\n if(!target_element.hasClass('active'))\n target_element.addClass('active')\n\n# Toggle loader on switching tabs\ntoggleLoaderBaseClasses = ->\n classes = ['#conference-review-cont', '#track-attendance-cont', '#preaching-summary-cont']\n classes.forEach( (elem) ->\n if($(elem).length > 0)\n $('#loader-box').show()\n $(elem).hide()\n )\n","$(document).on 'click', '.send-summary-mail-btn', (e)->\n e.preventDefault()\n if($(this).closest('form')[0].checkValidity())\n $('#loader-cont').fadeIn()\n else\n $(this).closest('form').validate().element(\".rr-email-address\")\n Rails.fire($(this).closest('form')[0], 'submit')\n return false\n\n# UMS summary reports list for showing comments\n$(document).on 'click', '.show-sum-rep-com-popup', () ->\n $(this).siblings('.modal').modal('show')","import { createConsumer } from \"@rails/actioncable\"\nconsumer = createConsumer()\n\nconsumer.subscriptions.create \"WebNotificationsChannel\",\n received: (data) ->\n if(data['message'].length != 0)\n i = 0\n while i < data['message'].length\n content = ''\n if data['message'][i].n_type == 'job_posting'\n reason = \"<a href='/job_postings'>\" + data['message'][i].name + \" has posted a new job. </a>\"\n else\n if data['message'][i].url && data['message'][i].url.length > 0\n reason = '<a href=\"'+data['message'][i].url+'\">'+data['message'][i].reason+'</a>'\n else\n reason = data['message'][i].reason\n\n if $('.notification-box').find('#notification-row-' + data['message'][i].id).length == 0\n content += '<div class=\"row notifi_div unread_notifi_div\" id=\"notification-row-' + data['message'][i].id + '\"> \\\n <div class=\"text-center\">\\\n <img src=\"'+data['message'][i].image_url+'\" class=\"rounded-circle\">\\\n </div>\\\n <div class=\"col\">\\\n <strong class=\"text-info text-capitalize\">' + data['message'][i].name + '</strong><div class=\"notifi_content\">' +\n reason + '</div>\\\n <small class=\"text-warning\">' +\n data['message'][i].created_at + '\\\n </small>\\\n </div>\\\n </div>'\n if $('.empty-notification-text').length != 0\n $('.notification-box').html(content)\n else\n $('.notification-box').prepend(content)\n i++\n # remove navAlert-counter\n $('.notification-bell-icon').remove('.navAlert-counter')\n $('.notification-bell-icon').prepend('<span class=\"navAlert-counter\">' +\n data['message'][0].unread_msg + '</span>')\n else\n $('.nav-link').find('.navAlert-counter').remove()\n $('.notification-bell-icon').find('.navAlert-counter').remove()\n","import { createConsumer } from \"@rails/actioncable\"\nconsumer = createConsumer()\n\nconsumer.subscriptions.create \"WebNotificationsChannel\",\n connected: ->\n # Called when the subscription is ready for use on the server\n\n disconnected: ->\n # Called when the subscription has been terminated by the server\n\n received: (data) ->\n # Called when there's incoming data on the websocket for this channel\n","var n,\n l,\n u,\n i,\n t,\n r,\n o,\n f,\n e,\n c = {},\n s = [],\n a = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\nfunction h(n, l) {\n for (var u in l) n[u] = l[u];\n return n;\n}\nfunction v(n) {\n var l = n.parentNode;\n l && l.removeChild(n);\n}\nfunction y(l, u, i) {\n var t,\n r,\n o,\n f = {};\n for (o in u) \"key\" == o ? t = u[o] : \"ref\" == o ? r = u[o] : f[o] = u[o];\n if (arguments.length > 2 && (f.children = arguments.length > 3 ? n.call(arguments, 2) : i), \"function\" == typeof l && null != l.defaultProps) for (o in l.defaultProps) void 0 === f[o] && (f[o] = l.defaultProps[o]);\n return p(l, f, t, r, null);\n}\nfunction p(n, i, t, r, o) {\n var f = {\n type: n,\n props: i,\n key: t,\n ref: r,\n __k: null,\n __: null,\n __b: 0,\n __e: null,\n __d: void 0,\n __c: null,\n __h: null,\n constructor: void 0,\n __v: null == o ? ++u : o\n };\n return null == o && null != l.vnode && l.vnode(f), f;\n}\nfunction d() {\n return {\n current: null\n };\n}\nfunction _(n) {\n return n.children;\n}\nfunction k(n, l, u, i, t) {\n var r;\n for (r in u) \"children\" === r || \"key\" === r || r in l || g(n, r, null, u[r], i);\n for (r in l) t && \"function\" != typeof l[r] || \"children\" === r || \"key\" === r || \"value\" === r || \"checked\" === r || u[r] === l[r] || g(n, r, l[r], u[r], i);\n}\nfunction b(n, l, u) {\n \"-\" === l[0] ? n.setProperty(l, null == u ? \"\" : u) : n[l] = null == u ? \"\" : \"number\" != typeof u || a.test(l) ? u : u + \"px\";\n}\nfunction g(n, l, u, i, t) {\n var r;\n n: if (\"style\" === l) {\n if (\"string\" == typeof u) n.style.cssText = u;else {\n if (\"string\" == typeof i && (n.style.cssText = i = \"\"), i) for (l in i) u && l in u || b(n.style, l, \"\");\n if (u) for (l in u) i && u[l] === i[l] || b(n.style, l, u[l]);\n }\n } else if (\"o\" === l[0] && \"n\" === l[1]) r = l !== (l = l.replace(/Capture$/, \"\")), l = l.toLowerCase() in n ? l.toLowerCase().slice(2) : l.slice(2), n.l || (n.l = {}), n.l[l + r] = u, u ? i || n.addEventListener(l, r ? w : m, r) : n.removeEventListener(l, r ? w : m, r);else if (\"dangerouslySetInnerHTML\" !== l) {\n if (t) l = l.replace(/xlink(H|:h)/, \"h\").replace(/sName$/, \"s\");else if (\"width\" !== l && \"height\" !== l && \"href\" !== l && \"list\" !== l && \"form\" !== l && \"tabIndex\" !== l && \"download\" !== l && l in n) try {\n n[l] = null == u ? \"\" : u;\n break n;\n } catch (n) {}\n \"function\" == typeof u || (null == u || !1 === u && -1 == l.indexOf(\"-\") ? n.removeAttribute(l) : n.setAttribute(l, u));\n }\n}\nfunction m(n) {\n t = !0;\n try {\n return this.l[n.type + !1](l.event ? l.event(n) : n);\n } finally {\n t = !1;\n }\n}\nfunction w(n) {\n t = !0;\n try {\n return this.l[n.type + !0](l.event ? l.event(n) : n);\n } finally {\n t = !1;\n }\n}\nfunction x(n, l) {\n this.props = n, this.context = l;\n}\nfunction A(n, l) {\n if (null == l) return n.__ ? A(n.__, n.__.__k.indexOf(n) + 1) : null;\n for (var u; l < n.__k.length; l++) if (null != (u = n.__k[l]) && null != u.__e) return u.__e;\n return \"function\" == typeof n.type ? A(n) : null;\n}\nfunction P(n) {\n var l, u;\n if (null != (n = n.__) && null != n.__c) {\n for (n.__e = n.__c.base = null, l = 0; l < n.__k.length; l++) if (null != (u = n.__k[l]) && null != u.__e) {\n n.__e = n.__c.base = u.__e;\n break;\n }\n return P(n);\n }\n}\nfunction C(n) {\n t ? setTimeout(n) : f(n);\n}\nfunction T(n) {\n (!n.__d && (n.__d = !0) && r.push(n) && !$.__r++ || o !== l.debounceRendering) && ((o = l.debounceRendering) || C)($);\n}\nfunction $() {\n var n, l, u, i, t, o, f, e;\n for (r.sort(function (n, l) {\n return n.__v.__b - l.__v.__b;\n }); n = r.shift();) n.__d && (l = r.length, i = void 0, t = void 0, f = (o = (u = n).__v).__e, (e = u.__P) && (i = [], (t = h({}, o)).__v = o.__v + 1, M(e, o, t, u.__n, void 0 !== e.ownerSVGElement, null != o.__h ? [f] : null, i, null == f ? A(o) : f, o.__h), N(i, o), o.__e != f && P(o)), r.length > l && r.sort(function (n, l) {\n return n.__v.__b - l.__v.__b;\n }));\n $.__r = 0;\n}\nfunction H(n, l, u, i, t, r, o, f, e, a) {\n var h,\n v,\n y,\n d,\n k,\n b,\n g,\n m = i && i.__k || s,\n w = m.length;\n for (u.__k = [], h = 0; h < l.length; h++) if (null != (d = u.__k[h] = null == (d = l[h]) || \"boolean\" == typeof d ? null : \"string\" == typeof d || \"number\" == typeof d || \"bigint\" == typeof d ? p(null, d, null, null, d) : Array.isArray(d) ? p(_, {\n children: d\n }, null, null, null) : d.__b > 0 ? p(d.type, d.props, d.key, d.ref ? d.ref : null, d.__v) : d)) {\n if (d.__ = u, d.__b = u.__b + 1, null === (y = m[h]) || y && d.key == y.key && d.type === y.type) m[h] = void 0;else for (v = 0; v < w; v++) {\n if ((y = m[v]) && d.key == y.key && d.type === y.type) {\n m[v] = void 0;\n break;\n }\n y = null;\n }\n M(n, d, y = y || c, t, r, o, f, e, a), k = d.__e, (v = d.ref) && y.ref != v && (g || (g = []), y.ref && g.push(y.ref, null, d), g.push(v, d.__c || k, d)), null != k ? (null == b && (b = k), \"function\" == typeof d.type && d.__k === y.__k ? d.__d = e = I(d, e, n) : e = z(n, d, y, m, k, e), \"function\" == typeof u.type && (u.__d = e)) : e && y.__e == e && e.parentNode != n && (e = A(y));\n }\n for (u.__e = b, h = w; h--;) null != m[h] && (\"function\" == typeof u.type && null != m[h].__e && m[h].__e == u.__d && (u.__d = L(i).nextSibling), q(m[h], m[h]));\n if (g) for (h = 0; h < g.length; h++) S(g[h], g[++h], g[++h]);\n}\nfunction I(n, l, u) {\n for (var i, t = n.__k, r = 0; t && r < t.length; r++) (i = t[r]) && (i.__ = n, l = \"function\" == typeof i.type ? I(i, l, u) : z(u, i, i, t, i.__e, l));\n return l;\n}\nfunction j(n, l) {\n return l = l || [], null == n || \"boolean\" == typeof n || (Array.isArray(n) ? n.some(function (n) {\n j(n, l);\n }) : l.push(n)), l;\n}\nfunction z(n, l, u, i, t, r) {\n var o, f, e;\n if (void 0 !== l.__d) o = l.__d, l.__d = void 0;else if (null == u || t != r || null == t.parentNode) n: if (null == r || r.parentNode !== n) n.appendChild(t), o = null;else {\n for (f = r, e = 0; (f = f.nextSibling) && e < i.length; e += 1) if (f == t) break n;\n n.insertBefore(t, r), o = r;\n }\n return void 0 !== o ? o : t.nextSibling;\n}\nfunction L(n) {\n var l, u, i;\n if (null == n.type || \"string\" == typeof n.type) return n.__e;\n if (n.__k) for (l = n.__k.length - 1; l >= 0; l--) if ((u = n.__k[l]) && (i = L(u))) return i;\n return null;\n}\nfunction M(n, u, i, t, r, o, f, e, c) {\n var s,\n a,\n v,\n y,\n p,\n d,\n k,\n b,\n g,\n m,\n w,\n A,\n P,\n C,\n T,\n $ = u.type;\n if (void 0 !== u.constructor) return null;\n null != i.__h && (c = i.__h, e = u.__e = i.__e, u.__h = null, o = [e]), (s = l.__b) && s(u);\n try {\n n: if (\"function\" == typeof $) {\n if (b = u.props, g = (s = $.contextType) && t[s.__c], m = s ? g ? g.props.value : s.__ : t, i.__c ? k = (a = u.__c = i.__c).__ = a.__E : (\"prototype\" in $ && $.prototype.render ? u.__c = a = new $(b, m) : (u.__c = a = new x(b, m), a.constructor = $, a.render = B), g && g.sub(a), a.props = b, a.state || (a.state = {}), a.context = m, a.__n = t, v = a.__d = !0, a.__h = [], a._sb = []), null == a.__s && (a.__s = a.state), null != $.getDerivedStateFromProps && (a.__s == a.state && (a.__s = h({}, a.__s)), h(a.__s, $.getDerivedStateFromProps(b, a.__s))), y = a.props, p = a.state, a.__v = u, v) null == $.getDerivedStateFromProps && null != a.componentWillMount && a.componentWillMount(), null != a.componentDidMount && a.__h.push(a.componentDidMount);else {\n if (null == $.getDerivedStateFromProps && b !== y && null != a.componentWillReceiveProps && a.componentWillReceiveProps(b, m), !a.__e && null != a.shouldComponentUpdate && !1 === a.shouldComponentUpdate(b, a.__s, m) || u.__v === i.__v) {\n for (u.__v !== i.__v && (a.props = b, a.state = a.__s, a.__d = !1), u.__e = i.__e, u.__k = i.__k, u.__k.forEach(function (n) {\n n && (n.__ = u);\n }), w = 0; w < a._sb.length; w++) a.__h.push(a._sb[w]);\n a._sb = [], a.__h.length && f.push(a);\n break n;\n }\n null != a.componentWillUpdate && a.componentWillUpdate(b, a.__s, m), null != a.componentDidUpdate && a.__h.push(function () {\n a.componentDidUpdate(y, p, d);\n });\n }\n if (a.context = m, a.props = b, a.__P = n, A = l.__r, P = 0, \"prototype\" in $ && $.prototype.render) {\n for (a.state = a.__s, a.__d = !1, A && A(u), s = a.render(a.props, a.state, a.context), C = 0; C < a._sb.length; C++) a.__h.push(a._sb[C]);\n a._sb = [];\n } else do {\n a.__d = !1, A && A(u), s = a.render(a.props, a.state, a.context), a.state = a.__s;\n } while (a.__d && ++P < 25);\n a.state = a.__s, null != a.getChildContext && (t = h(h({}, t), a.getChildContext())), v || null == a.getSnapshotBeforeUpdate || (d = a.getSnapshotBeforeUpdate(y, p)), T = null != s && s.type === _ && null == s.key ? s.props.children : s, H(n, Array.isArray(T) ? T : [T], u, i, t, r, o, f, e, c), a.base = u.__e, u.__h = null, a.__h.length && f.push(a), k && (a.__E = a.__ = null), a.__e = !1;\n } else null == o && u.__v === i.__v ? (u.__k = i.__k, u.__e = i.__e) : u.__e = O(i.__e, u, i, t, r, o, f, c);\n (s = l.diffed) && s(u);\n } catch (n) {\n u.__v = null, (c || null != o) && (u.__e = e, u.__h = !!c, o[o.indexOf(e)] = null), l.__e(n, u, i);\n }\n}\nfunction N(n, u) {\n l.__c && l.__c(u, n), n.some(function (u) {\n try {\n n = u.__h, u.__h = [], n.some(function (n) {\n n.call(u);\n });\n } catch (n) {\n l.__e(n, u.__v);\n }\n });\n}\nfunction O(l, u, i, t, r, o, f, e) {\n var s,\n a,\n h,\n y = i.props,\n p = u.props,\n d = u.type,\n _ = 0;\n if (\"svg\" === d && (r = !0), null != o) for (; _ < o.length; _++) if ((s = o[_]) && \"setAttribute\" in s == !!d && (d ? s.localName === d : 3 === s.nodeType)) {\n l = s, o[_] = null;\n break;\n }\n if (null == l) {\n if (null === d) return document.createTextNode(p);\n l = r ? document.createElementNS(\"http://www.w3.org/2000/svg\", d) : document.createElement(d, p.is && p), o = null, e = !1;\n }\n if (null === d) y === p || e && l.data === p || (l.data = p);else {\n if (o = o && n.call(l.childNodes), a = (y = i.props || c).dangerouslySetInnerHTML, h = p.dangerouslySetInnerHTML, !e) {\n if (null != o) for (y = {}, _ = 0; _ < l.attributes.length; _++) y[l.attributes[_].name] = l.attributes[_].value;\n (h || a) && (h && (a && h.__html == a.__html || h.__html === l.innerHTML) || (l.innerHTML = h && h.__html || \"\"));\n }\n if (k(l, p, y, r, e), h) u.__k = [];else if (_ = u.props.children, H(l, Array.isArray(_) ? _ : [_], u, i, t, r && \"foreignObject\" !== d, o, f, o ? o[0] : i.__k && A(i, 0), e), null != o) for (_ = o.length; _--;) null != o[_] && v(o[_]);\n e || (\"value\" in p && void 0 !== (_ = p.value) && (_ !== l.value || \"progress\" === d && !_ || \"option\" === d && _ !== y.value) && g(l, \"value\", _, y.value, !1), \"checked\" in p && void 0 !== (_ = p.checked) && _ !== l.checked && g(l, \"checked\", _, y.checked, !1));\n }\n return l;\n}\nfunction S(n, u, i) {\n try {\n \"function\" == typeof n ? n(u) : n.current = u;\n } catch (n) {\n l.__e(n, i);\n }\n}\nfunction q(n, u, i) {\n var t, r;\n if (l.unmount && l.unmount(n), (t = n.ref) && (t.current && t.current !== n.__e || S(t, null, u)), null != (t = n.__c)) {\n if (t.componentWillUnmount) try {\n t.componentWillUnmount();\n } catch (n) {\n l.__e(n, u);\n }\n t.base = t.__P = null, n.__c = void 0;\n }\n if (t = n.__k) for (r = 0; r < t.length; r++) t[r] && q(t[r], u, i || \"function\" != typeof n.type);\n i || null == n.__e || v(n.__e), n.__ = n.__e = n.__d = void 0;\n}\nfunction B(n, l, u) {\n return this.constructor(n, u);\n}\nfunction D(u, i, t) {\n var r, o, f;\n l.__ && l.__(u, i), o = (r = \"function\" == typeof t) ? null : t && t.__k || i.__k, f = [], M(i, u = (!r && t || i).__k = y(_, null, [u]), o || c, c, void 0 !== i.ownerSVGElement, !r && t ? [t] : o ? null : i.firstChild ? n.call(i.childNodes) : null, f, !r && t ? t : o ? o.__e : i.firstChild, r), N(f, u);\n}\nfunction E(n, l) {\n D(n, l, E);\n}\nfunction F(l, u, i) {\n var t,\n r,\n o,\n f = h({}, l.props);\n for (o in u) \"key\" == o ? t = u[o] : \"ref\" == o ? r = u[o] : f[o] = u[o];\n return arguments.length > 2 && (f.children = arguments.length > 3 ? n.call(arguments, 2) : i), p(l.type, f, t || l.key, r || l.ref, null);\n}\nfunction G(n, l) {\n var u = {\n __c: l = \"__cC\" + e++,\n __: n,\n Consumer: function (n, l) {\n return n.children(l);\n },\n Provider: function (n) {\n var u, i;\n return this.getChildContext || (u = [], (i = {})[l] = this, this.getChildContext = function () {\n return i;\n }, this.shouldComponentUpdate = function (n) {\n this.props.value !== n.value && u.some(function (n) {\n n.__e = !0, T(n);\n });\n }, this.sub = function (n) {\n u.push(n);\n var l = n.componentWillUnmount;\n n.componentWillUnmount = function () {\n u.splice(u.indexOf(n), 1), l && l.call(n);\n };\n }), n.children;\n }\n };\n return u.Provider.__ = u.Consumer.contextType = u;\n}\nn = s.slice, l = {\n __e: function (n, l, u, i) {\n for (var t, r, o; l = l.__;) if ((t = l.__c) && !t.__) try {\n if ((r = t.constructor) && null != r.getDerivedStateFromError && (t.setState(r.getDerivedStateFromError(n)), o = t.__d), null != t.componentDidCatch && (t.componentDidCatch(n, i || {}), o = t.__d), o) return t.__E = t;\n } catch (l) {\n n = l;\n }\n throw n;\n }\n}, u = 0, i = function (n) {\n return null != n && void 0 === n.constructor;\n}, t = !1, x.prototype.setState = function (n, l) {\n var u;\n u = null != this.__s && this.__s !== this.state ? this.__s : this.__s = h({}, this.state), \"function\" == typeof n && (n = n(h({}, u), this.props)), n && h(u, n), null != n && this.__v && (l && this._sb.push(l), T(this));\n}, x.prototype.forceUpdate = function (n) {\n this.__v && (this.__e = !0, n && this.__h.push(n), T(this));\n}, x.prototype.render = _, r = [], f = \"function\" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, $.__r = 0, e = 0;\nexport { x as Component, _ as Fragment, F as cloneElement, G as createContext, y as createElement, d as createRef, y as h, E as hydrate, i as isValidElement, l as options, D as render, j as toChildArray };","import { options as n } from \"preact\";\nvar t,\n r,\n u,\n i,\n o = 0,\n f = [],\n c = [],\n e = n.__b,\n a = n.__r,\n v = n.diffed,\n l = n.__c,\n m = n.unmount;\nfunction d(t, u) {\n n.__h && n.__h(r, t, o || u), o = 0;\n var i = r.__H || (r.__H = {\n __: [],\n __h: []\n });\n return t >= i.__.length && i.__.push({\n __V: c\n }), i.__[t];\n}\nfunction p(n) {\n return o = 1, y(B, n);\n}\nfunction y(n, u, i) {\n var o = d(t++, 2);\n if (o.t = n, !o.__c && (o.__ = [i ? i(u) : B(void 0, u), function (n) {\n var t = o.__N ? o.__N[0] : o.__[0],\n r = o.t(t, n);\n t !== r && (o.__N = [r, o.__[1]], o.__c.setState({}));\n }], o.__c = r, !r.u)) {\n r.u = !0;\n var f = r.shouldComponentUpdate;\n r.shouldComponentUpdate = function (n, t, r) {\n if (!o.__c.__H) return !0;\n var u = o.__c.__H.__.filter(function (n) {\n return n.__c;\n });\n if (u.every(function (n) {\n return !n.__N;\n })) return !f || f.call(this, n, t, r);\n var i = !1;\n return u.forEach(function (n) {\n if (n.__N) {\n var t = n.__[0];\n n.__ = n.__N, n.__N = void 0, t !== n.__[0] && (i = !0);\n }\n }), !(!i && o.__c.props === n) && (!f || f.call(this, n, t, r));\n };\n }\n return o.__N || o.__;\n}\nfunction h(u, i) {\n var o = d(t++, 3);\n !n.__s && z(o.__H, i) && (o.__ = u, o.i = i, r.__H.__h.push(o));\n}\nfunction s(u, i) {\n var o = d(t++, 4);\n !n.__s && z(o.__H, i) && (o.__ = u, o.i = i, r.__h.push(o));\n}\nfunction _(n) {\n return o = 5, F(function () {\n return {\n current: n\n };\n }, []);\n}\nfunction A(n, t, r) {\n o = 6, s(function () {\n return \"function\" == typeof n ? (n(t()), function () {\n return n(null);\n }) : n ? (n.current = t(), function () {\n return n.current = null;\n }) : void 0;\n }, null == r ? r : r.concat(n));\n}\nfunction F(n, r) {\n var u = d(t++, 7);\n return z(u.__H, r) ? (u.__V = n(), u.i = r, u.__h = n, u.__V) : u.__;\n}\nfunction T(n, t) {\n return o = 8, F(function () {\n return n;\n }, t);\n}\nfunction q(n) {\n var u = r.context[n.__c],\n i = d(t++, 9);\n return i.c = n, u ? (null == i.__ && (i.__ = !0, u.sub(r)), u.props.value) : n.__;\n}\nfunction x(t, r) {\n n.useDebugValue && n.useDebugValue(r ? r(t) : t);\n}\nfunction P(n) {\n var u = d(t++, 10),\n i = p();\n return u.__ = n, r.componentDidCatch || (r.componentDidCatch = function (n, t) {\n u.__ && u.__(n, t), i[1](n);\n }), [i[0], function () {\n i[1](void 0);\n }];\n}\nfunction V() {\n var n = d(t++, 11);\n if (!n.__) {\n for (var u = r.__v; null !== u && !u.__m && null !== u.__;) u = u.__;\n var i = u.__m || (u.__m = [0, 0]);\n n.__ = \"P\" + i[0] + \"-\" + i[1]++;\n }\n return n.__;\n}\nfunction b() {\n for (var t; t = f.shift();) if (t.__P && t.__H) try {\n t.__H.__h.forEach(k), t.__H.__h.forEach(w), t.__H.__h = [];\n } catch (r) {\n t.__H.__h = [], n.__e(r, t.__v);\n }\n}\nn.__b = function (n) {\n r = null, e && e(n);\n}, n.__r = function (n) {\n a && a(n), t = 0;\n var i = (r = n.__c).__H;\n i && (u === r ? (i.__h = [], r.__h = [], i.__.forEach(function (n) {\n n.__N && (n.__ = n.__N), n.__V = c, n.__N = n.i = void 0;\n })) : (i.__h.forEach(k), i.__h.forEach(w), i.__h = [])), u = r;\n}, n.diffed = function (t) {\n v && v(t);\n var o = t.__c;\n o && o.__H && (o.__H.__h.length && (1 !== f.push(o) && i === n.requestAnimationFrame || ((i = n.requestAnimationFrame) || j)(b)), o.__H.__.forEach(function (n) {\n n.i && (n.__H = n.i), n.__V !== c && (n.__ = n.__V), n.i = void 0, n.__V = c;\n })), u = r = null;\n}, n.__c = function (t, r) {\n r.some(function (t) {\n try {\n t.__h.forEach(k), t.__h = t.__h.filter(function (n) {\n return !n.__ || w(n);\n });\n } catch (u) {\n r.some(function (n) {\n n.__h && (n.__h = []);\n }), r = [], n.__e(u, t.__v);\n }\n }), l && l(t, r);\n}, n.unmount = function (t) {\n m && m(t);\n var r,\n u = t.__c;\n u && u.__H && (u.__H.__.forEach(function (n) {\n try {\n k(n);\n } catch (n) {\n r = n;\n }\n }), u.__H = void 0, r && n.__e(r, u.__v));\n};\nvar g = \"function\" == typeof requestAnimationFrame;\nfunction j(n) {\n var t,\n r = function () {\n clearTimeout(u), g && cancelAnimationFrame(t), setTimeout(n);\n },\n u = setTimeout(r, 100);\n g && (t = requestAnimationFrame(r));\n}\nfunction k(n) {\n var t = r,\n u = n.__c;\n \"function\" == typeof u && (n.__c = void 0, u()), r = t;\n}\nfunction w(n) {\n var t = r;\n n.__c = n.__(), r = t;\n}\nfunction z(n, t) {\n return !n || n.length !== t.length || t.some(function (t, r) {\n return t !== n[r];\n });\n}\nfunction B(n, t) {\n return \"function\" == typeof t ? t(n) : t;\n}\nexport { T as useCallback, q as useContext, x as useDebugValue, h as useEffect, P as useErrorBoundary, V as useId, A as useImperativeHandle, s as useLayoutEffect, F as useMemo, y as useReducer, _ as useRef, p as useState };","import { Component as n, createElement as t, options as e, toChildArray as r, Fragment as u, render as o, hydrate as i, createContext as l, createRef as c, cloneElement as f } from \"preact\";\nexport { Component, Fragment, createContext, createElement, createRef } from \"preact\";\nimport { useState as a, useId as s, useReducer as h, useEffect as v, useLayoutEffect as d, useRef as p, useImperativeHandle as m, useMemo as y, useCallback as _, useContext as b, useDebugValue as S } from \"preact/hooks\";\nexport * from \"preact/hooks\";\nfunction g(n, t) {\n for (var e in t) n[e] = t[e];\n return n;\n}\nfunction C(n, t) {\n for (var e in n) if (\"__source\" !== e && !(e in t)) return !0;\n for (var r in t) if (\"__source\" !== r && n[r] !== t[r]) return !0;\n return !1;\n}\nfunction E(n, t) {\n return n === t && (0 !== n || 1 / n == 1 / t) || n != n && t != t;\n}\nfunction w(n) {\n this.props = n;\n}\nfunction R(n, e) {\n function r(n) {\n var t = this.props.ref,\n r = t == n.ref;\n return !r && t && (t.call ? t(null) : t.current = null), e ? !e(this.props, n) || !r : C(this.props, n);\n }\n function u(e) {\n return this.shouldComponentUpdate = r, t(n, e);\n }\n return u.displayName = \"Memo(\" + (n.displayName || n.name) + \")\", u.prototype.isReactComponent = !0, u.__f = !0, u;\n}\n(w.prototype = new n()).isPureReactComponent = !0, w.prototype.shouldComponentUpdate = function (n, t) {\n return C(this.props, n) || C(this.state, t);\n};\nvar x = e.__b;\ne.__b = function (n) {\n n.type && n.type.__f && n.ref && (n.props.ref = n.ref, n.ref = null), x && x(n);\n};\nvar N = \"undefined\" != typeof Symbol && Symbol.for && Symbol.for(\"react.forward_ref\") || 3911;\nfunction k(n) {\n function t(t) {\n var e = g({}, t);\n return delete e.ref, n(e, t.ref || null);\n }\n return t.$$typeof = N, t.render = t, t.prototype.isReactComponent = t.__f = !0, t.displayName = \"ForwardRef(\" + (n.displayName || n.name) + \")\", t;\n}\nvar A = function (n, t) {\n return null == n ? null : r(r(n).map(t));\n },\n O = {\n map: A,\n forEach: A,\n count: function (n) {\n return n ? r(n).length : 0;\n },\n only: function (n) {\n var t = r(n);\n if (1 !== t.length) throw \"Children.only\";\n return t[0];\n },\n toArray: r\n },\n T = e.__e;\ne.__e = function (n, t, e, r) {\n if (n.then) for (var u, o = t; o = o.__;) if ((u = o.__c) && u.__c) return null == t.__e && (t.__e = e.__e, t.__k = e.__k), u.__c(n, t);\n T(n, t, e, r);\n};\nvar I = e.unmount;\nfunction L(n, t, e) {\n return n && (n.__c && n.__c.__H && (n.__c.__H.__.forEach(function (n) {\n \"function\" == typeof n.__c && n.__c();\n }), n.__c.__H = null), null != (n = g({}, n)).__c && (n.__c.__P === e && (n.__c.__P = t), n.__c = null), n.__k = n.__k && n.__k.map(function (n) {\n return L(n, t, e);\n })), n;\n}\nfunction U(n, t, e) {\n return n && (n.__v = null, n.__k = n.__k && n.__k.map(function (n) {\n return U(n, t, e);\n }), n.__c && n.__c.__P === t && (n.__e && e.insertBefore(n.__e, n.__d), n.__c.__e = !0, n.__c.__P = e)), n;\n}\nfunction D() {\n this.__u = 0, this.t = null, this.__b = null;\n}\nfunction F(n) {\n var t = n.__.__c;\n return t && t.__a && t.__a(n);\n}\nfunction M(n) {\n var e, r, u;\n function o(o) {\n if (e || (e = n()).then(function (n) {\n r = n.default || n;\n }, function (n) {\n u = n;\n }), u) throw u;\n if (!r) throw e;\n return t(r, o);\n }\n return o.displayName = \"Lazy\", o.__f = !0, o;\n}\nfunction V() {\n this.u = null, this.o = null;\n}\ne.unmount = function (n) {\n var t = n.__c;\n t && t.__R && t.__R(), t && !0 === n.__h && (n.type = null), I && I(n);\n}, (D.prototype = new n()).__c = function (n, t) {\n var e = t.__c,\n r = this;\n null == r.t && (r.t = []), r.t.push(e);\n var u = F(r.__v),\n o = !1,\n i = function () {\n o || (o = !0, e.__R = null, u ? u(l) : l());\n };\n e.__R = i;\n var l = function () {\n if (! --r.__u) {\n if (r.state.__a) {\n var n = r.state.__a;\n r.__v.__k[0] = U(n, n.__c.__P, n.__c.__O);\n }\n var t;\n for (r.setState({\n __a: r.__b = null\n }); t = r.t.pop();) t.forceUpdate();\n }\n },\n c = !0 === t.__h;\n r.__u++ || c || r.setState({\n __a: r.__b = r.__v.__k[0]\n }), n.then(i, i);\n}, D.prototype.componentWillUnmount = function () {\n this.t = [];\n}, D.prototype.render = function (n, e) {\n if (this.__b) {\n if (this.__v.__k) {\n var r = document.createElement(\"div\"),\n o = this.__v.__k[0].__c;\n this.__v.__k[0] = L(this.__b, r, o.__O = o.__P);\n }\n this.__b = null;\n }\n var i = e.__a && t(u, null, n.fallback);\n return i && (i.__h = null), [t(u, null, e.__a ? null : n.children), i];\n};\nvar W = function (n, t, e) {\n if (++e[1] === e[0] && n.o.delete(t), n.props.revealOrder && (\"t\" !== n.props.revealOrder[0] || !n.o.size)) for (e = n.u; e;) {\n for (; e.length > 3;) e.pop()();\n if (e[1] < e[0]) break;\n n.u = e = e[2];\n }\n};\nfunction P(n) {\n return this.getChildContext = function () {\n return n.context;\n }, n.children;\n}\nfunction $(n) {\n var e = this,\n r = n.i;\n e.componentWillUnmount = function () {\n o(null, e.l), e.l = null, e.i = null;\n }, e.i && e.i !== r && e.componentWillUnmount(), n.__v ? (e.l || (e.i = r, e.l = {\n nodeType: 1,\n parentNode: r,\n childNodes: [],\n appendChild: function (n) {\n this.childNodes.push(n), e.i.appendChild(n);\n },\n insertBefore: function (n, t) {\n this.childNodes.push(n), e.i.appendChild(n);\n },\n removeChild: function (n) {\n this.childNodes.splice(this.childNodes.indexOf(n) >>> 1, 1), e.i.removeChild(n);\n }\n }), o(t(P, {\n context: e.context\n }, n.__v), e.l)) : e.l && e.componentWillUnmount();\n}\nfunction j(n, e) {\n var r = t($, {\n __v: n,\n i: e\n });\n return r.containerInfo = e, r;\n}\n(V.prototype = new n()).__a = function (n) {\n var t = this,\n e = F(t.__v),\n r = t.o.get(n);\n return r[0]++, function (u) {\n var o = function () {\n t.props.revealOrder ? (r.push(u), W(t, n, r)) : u();\n };\n e ? e(o) : o();\n };\n}, V.prototype.render = function (n) {\n this.u = null, this.o = new Map();\n var t = r(n.children);\n n.revealOrder && \"b\" === n.revealOrder[0] && t.reverse();\n for (var e = t.length; e--;) this.o.set(t[e], this.u = [1, 0, this.u]);\n return n.children;\n}, V.prototype.componentDidUpdate = V.prototype.componentDidMount = function () {\n var n = this;\n this.o.forEach(function (t, e) {\n W(n, e, t);\n });\n};\nvar z = \"undefined\" != typeof Symbol && Symbol.for && Symbol.for(\"react.element\") || 60103,\n B = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,\n H = \"undefined\" != typeof document,\n Z = function (n) {\n return (\"undefined\" != typeof Symbol && \"symbol\" == typeof Symbol() ? /fil|che|rad/i : /fil|che|ra/i).test(n);\n };\nfunction Y(n, t, e) {\n return null == t.__k && (t.textContent = \"\"), o(n, t), \"function\" == typeof e && e(), n ? n.__c : null;\n}\nfunction q(n, t, e) {\n return i(n, t), \"function\" == typeof e && e(), n ? n.__c : null;\n}\nn.prototype.isReactComponent = {}, [\"componentWillMount\", \"componentWillReceiveProps\", \"componentWillUpdate\"].forEach(function (t) {\n Object.defineProperty(n.prototype, t, {\n configurable: !0,\n get: function () {\n return this[\"UNSAFE_\" + t];\n },\n set: function (n) {\n Object.defineProperty(this, t, {\n configurable: !0,\n writable: !0,\n value: n\n });\n }\n });\n});\nvar G = e.event;\nfunction J() {}\nfunction K() {\n return this.cancelBubble;\n}\nfunction Q() {\n return this.defaultPrevented;\n}\ne.event = function (n) {\n return G && (n = G(n)), n.persist = J, n.isPropagationStopped = K, n.isDefaultPrevented = Q, n.nativeEvent = n;\n};\nvar X,\n nn = {\n configurable: !0,\n get: function () {\n return this.class;\n }\n },\n tn = e.vnode;\ne.vnode = function (n) {\n var t = n.type,\n e = n.props,\n u = e;\n if (\"string\" == typeof t) {\n var o = -1 === t.indexOf(\"-\");\n for (var i in u = {}, e) {\n var l = e[i];\n H && \"children\" === i && \"noscript\" === t || \"value\" === i && \"defaultValue\" in e && null == l || (\"defaultValue\" === i && \"value\" in e && null == e.value ? i = \"value\" : \"download\" === i && !0 === l ? l = \"\" : /ondoubleclick/i.test(i) ? i = \"ondblclick\" : /^onchange(textarea|input)/i.test(i + t) && !Z(e.type) ? i = \"oninput\" : /^onfocus$/i.test(i) ? i = \"onfocusin\" : /^onblur$/i.test(i) ? i = \"onfocusout\" : /^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(i) ? i = i.toLowerCase() : o && B.test(i) ? i = i.replace(/[A-Z0-9]/g, \"-$&\").toLowerCase() : null === l && (l = void 0), /^oninput$/i.test(i) && (i = i.toLowerCase(), u[i] && (i = \"oninputCapture\")), u[i] = l);\n }\n \"select\" == t && u.multiple && Array.isArray(u.value) && (u.value = r(e.children).forEach(function (n) {\n n.props.selected = -1 != u.value.indexOf(n.props.value);\n })), \"select\" == t && null != u.defaultValue && (u.value = r(e.children).forEach(function (n) {\n n.props.selected = u.multiple ? -1 != u.defaultValue.indexOf(n.props.value) : u.defaultValue == n.props.value;\n })), n.props = u, e.class != e.className && (nn.enumerable = \"className\" in e, null != e.className && (u.class = e.className), Object.defineProperty(u, \"className\", nn));\n }\n n.$$typeof = z, tn && tn(n);\n};\nvar en = e.__r;\ne.__r = function (n) {\n en && en(n), X = n.__c;\n};\nvar rn = {\n ReactCurrentDispatcher: {\n current: {\n readContext: function (n) {\n return X.__n[n.__c].props.value;\n }\n }\n }\n },\n un = \"17.0.2\";\nfunction on(n) {\n return t.bind(null, n);\n}\nfunction ln(n) {\n return !!n && n.$$typeof === z;\n}\nfunction cn(n) {\n return ln(n) ? f.apply(null, arguments) : n;\n}\nfunction fn(n) {\n return !!n.__k && (o(null, n), !0);\n}\nfunction an(n) {\n return n && (n.base || 1 === n.nodeType && n) || null;\n}\nvar sn = function (n, t) {\n return n(t);\n },\n hn = function (n, t) {\n return n(t);\n },\n vn = u;\nfunction dn(n) {\n n();\n}\nfunction pn(n) {\n return n;\n}\nfunction mn() {\n return [!1, dn];\n}\nvar yn = d;\nfunction _n(n, t) {\n var e = t(),\n r = a({\n h: {\n __: e,\n v: t\n }\n }),\n u = r[0].h,\n o = r[1];\n return d(function () {\n u.__ = e, u.v = t, E(u.__, t()) || o({\n h: u\n });\n }, [n, e, t]), v(function () {\n return E(u.__, u.v()) || o({\n h: u\n }), n(function () {\n E(u.__, u.v()) || o({\n h: u\n });\n });\n }, [n]), e;\n}\nvar bn = {\n useState: a,\n useId: s,\n useReducer: h,\n useEffect: v,\n useLayoutEffect: d,\n useInsertionEffect: yn,\n useTransition: mn,\n useDeferredValue: pn,\n useSyncExternalStore: _n,\n startTransition: dn,\n useRef: p,\n useImperativeHandle: m,\n useMemo: y,\n useCallback: _,\n useContext: b,\n useDebugValue: S,\n version: \"17.0.2\",\n Children: O,\n render: Y,\n hydrate: q,\n unmountComponentAtNode: fn,\n createPortal: j,\n createElement: t,\n createContext: l,\n createFactory: on,\n cloneElement: cn,\n createRef: c,\n Fragment: u,\n isValidElement: ln,\n findDOMNode: an,\n Component: n,\n PureComponent: w,\n memo: R,\n forwardRef: k,\n flushSync: hn,\n unstable_batchedUpdates: sn,\n StrictMode: vn,\n Suspense: D,\n SuspenseList: V,\n lazy: M,\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: rn\n};\nexport { O as Children, w as PureComponent, vn as StrictMode, D as Suspense, V as SuspenseList, rn as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, cn as cloneElement, on as createFactory, j as createPortal, bn as default, an as findDOMNode, hn as flushSync, k as forwardRef, q as hydrate, ln as isValidElement, M as lazy, R as memo, Y as render, dn as startTransition, fn as unmountComponentAtNode, sn as unstable_batchedUpdates, pn as useDeferredValue, yn as useInsertionEffect, _n as useSyncExternalStore, mn as useTransition, un as version };","function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nimport * as preact from 'preact';\nimport { Component, createElement, isValidElement, Fragment } from 'preact';\nimport { createPortal } from 'preact/compat';\nconst styleTexts = [];\nconst styleEls = new Map();\nfunction injectStyles(styleText) {\n styleTexts.push(styleText);\n styleEls.forEach(styleEl => {\n appendStylesTo(styleEl, styleText);\n });\n}\nfunction ensureElHasStyles(el) {\n if (el.isConnected &&\n // sometimes true if SSR system simulates DOM\n el.getRootNode // sometimes undefined if SSR system simulates DOM\n ) {\n registerStylesRoot(el.getRootNode());\n }\n}\nfunction registerStylesRoot(rootNode) {\n let styleEl = styleEls.get(rootNode);\n if (!styleEl || !styleEl.isConnected) {\n styleEl = rootNode.querySelector('style[data-fullcalendar]');\n if (!styleEl) {\n styleEl = document.createElement('style');\n styleEl.setAttribute('data-fullcalendar', '');\n const nonce = getNonceValue();\n if (nonce) {\n styleEl.nonce = nonce;\n }\n const parentEl = rootNode === document ? document.head : rootNode;\n const insertBefore = rootNode === document ? parentEl.querySelector('script,link[rel=stylesheet],link[as=style],style') : parentEl.firstChild;\n parentEl.insertBefore(styleEl, insertBefore);\n }\n styleEls.set(rootNode, styleEl);\n hydrateStylesRoot(styleEl);\n }\n}\nfunction hydrateStylesRoot(styleEl) {\n for (const styleText of styleTexts) {\n appendStylesTo(styleEl, styleText);\n }\n}\nfunction appendStylesTo(styleEl, styleText) {\n const sheet = styleEl.sheet;\n const ruleCnt = sheet.cssRules.length;\n styleText.split('}').forEach((styleStr, i) => {\n styleStr = styleStr.trim();\n if (styleStr) {\n sheet.insertRule(styleStr + '}', ruleCnt + i);\n }\n });\n}\n// nonce\n// -------------------------------------------------------------------------------------------------\nlet queriedNonceValue;\nfunction getNonceValue() {\n if (queriedNonceValue === undefined) {\n queriedNonceValue = queryNonceValue();\n }\n return queriedNonceValue;\n}\n/*\nTODO: discourage meta tag and instead put nonce attribute on placeholder <style> tag\n*/\nfunction queryNonceValue() {\n const metaWithNonce = document.querySelector('meta[name=\"csp-nonce\"]');\n if (metaWithNonce && metaWithNonce.hasAttribute('content')) {\n return metaWithNonce.getAttribute('content');\n }\n const elWithNonce = document.querySelector('script[nonce]');\n if (elWithNonce) {\n return elWithNonce.nonce || '';\n }\n return '';\n}\n// main\n// -------------------------------------------------------------------------------------------------\nif (typeof document !== 'undefined') {\n registerStylesRoot(document);\n}\nvar css_248z = \":root{--fc-small-font-size:.85em;--fc-page-bg-color:#fff;--fc-neutral-bg-color:hsla(0,0%,82%,.3);--fc-neutral-text-color:grey;--fc-border-color:#ddd;--fc-button-text-color:#fff;--fc-button-bg-color:#2c3e50;--fc-button-border-color:#2c3e50;--fc-button-hover-bg-color:#1e2b37;--fc-button-hover-border-color:#1a252f;--fc-button-active-bg-color:#1a252f;--fc-button-active-border-color:#151e27;--fc-event-bg-color:#3788d8;--fc-event-border-color:#3788d8;--fc-event-text-color:#fff;--fc-event-selected-overlay-color:rgba(0,0,0,.25);--fc-more-link-bg-color:#d0d0d0;--fc-more-link-text-color:inherit;--fc-event-resizer-thickness:8px;--fc-event-resizer-dot-total-width:8px;--fc-event-resizer-dot-border-width:1px;--fc-non-business-color:hsla(0,0%,84%,.3);--fc-bg-event-color:#8fdf82;--fc-bg-event-opacity:0.3;--fc-highlight-color:rgba(188,232,241,.3);--fc-today-bg-color:rgba(255,220,40,.15);--fc-now-indicator-color:red}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc{display:flex;flex-direction:column;font-size:1em}.fc,.fc *,.fc :after,.fc :before{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{padding:0;vertical-align:top}.fc a[data-navlink]{cursor:pointer}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid var(--fc-border-color)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;font-style:normal;font-weight:400;src:url(\\\"data:application/x-font-ttf;charset=utf-8;base64,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\\\") format(\\\"truetype\\\")}.fc-icon{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-family:fcicons!important;font-style:normal;font-variant:normal;font-weight:400;height:1em;line-height:1;text-align:center;text-transform:none;-moz-user-select:none;user-select:none;width:1em}.fc-icon-chevron-left:before{content:\\\"\\\\e900\\\"}.fc-icon-chevron-right:before{content:\\\"\\\\e901\\\"}.fc-icon-chevrons-left:before{content:\\\"\\\\e902\\\"}.fc-icon-chevrons-right:before{content:\\\"\\\\e903\\\"}.fc-icon-minus-square:before{content:\\\"\\\\e904\\\"}.fc-icon-plus-square:before{content:\\\"\\\\e905\\\"}.fc-icon-x:before{content:\\\"\\\\e906\\\"}.fc .fc-button{border-radius:0;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible;text-transform:none}.fc .fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc .fc-button{-webkit-appearance:button}.fc .fc-button:not(:disabled){cursor:pointer}.fc .fc-button{background-color:transparent;border:1px solid transparent;border-radius:.25em;display:inline-block;font-size:1em;font-weight:400;line-height:1.5;padding:.4em .65em;text-align:center;-moz-user-select:none;user-select:none;vertical-align:middle}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{box-shadow:0 0 0 .2rem rgba(44,62,80,.25);outline:0}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:hover{background-color:var(--fc-button-hover-bg-color);border-color:var(--fc-button-hover-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:disabled{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background-color:var(--fc-button-active-bg-color);border-color:var(--fc-button-active-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:not(:disabled).fc-button-active:focus,.fc .fc-button-primary:not(:disabled):active:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button .fc-icon{font-size:1.5em;vertical-align:middle}.fc .fc-button-group{display:inline-flex;position:relative;vertical-align:middle}.fc .fc-button-group>.fc-button{flex:1 1 auto;position:relative}.fc .fc-button-group>.fc-button.fc-button-active,.fc .fc-button-group>.fc-button:active,.fc .fc-button-group>.fc-button:focus,.fc .fc-button-group>.fc-button:hover{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.fc .fc-toolbar{align-items:center;display:flex;justify-content:space-between}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc .fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc .fc-toolbar-title{font-size:1.75em;margin:0}.fc-direction-ltr .fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-direction-rtl .fc-toolbar>*>:not(:first-child){margin-right:.75em}.fc-direction-rtl .fc-toolbar-ltr{flex-direction:row-reverse}.fc .fc-scroller{-webkit-overflow-scrolling:touch;position:relative}.fc .fc-scroller-liquid{height:100%}.fc .fc-scroller-liquid-absolute{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-scroller-harness{direction:ltr;overflow:hidden;position:relative}.fc .fc-scroller-harness-liquid{height:100%}.fc-direction-rtl .fc-scroller-harness>.fc-scroller{direction:rtl}.fc-theme-standard .fc-scrollgrid{border:1px solid var(--fc-border-color)}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{table-layout:fixed;width:100%}.fc .fc-scrollgrid table{border-left-style:hidden;border-right-style:hidden;border-top-style:hidden}.fc .fc-scrollgrid{border-bottom-width:0;border-collapse:separate;border-right-width:0}.fc .fc-scrollgrid-liquid{height:100%}.fc .fc-scrollgrid-section,.fc .fc-scrollgrid-section table,.fc .fc-scrollgrid-section>td{height:1px}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section>*{border-left-width:0;border-top-width:0}.fc .fc-scrollgrid-section-footer>*,.fc .fc-scrollgrid-section-header>*{border-bottom-width:0}.fc .fc-scrollgrid-section-body table,.fc .fc-scrollgrid-section-footer table{border-bottom-style:hidden}.fc .fc-scrollgrid-section-sticky>*{background:var(--fc-page-bg-color);position:sticky;z-index:3}.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky>*{top:0}.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky>*{bottom:0}.fc .fc-scrollgrid-sticky-shim{height:1px;margin-bottom:-1px}.fc-sticky{position:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-view-harness-active>.fc-view{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-bg-event,.fc .fc-highlight,.fc .fc-non-business{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-non-business{background:var(--fc-non-business-color)}.fc .fc-bg-event{background:var(--fc-bg-event-color);opacity:var(--fc-bg-event-opacity)}.fc .fc-bg-event .fc-event-title{font-size:var(--fc-small-font-size);font-style:italic;margin:.5em}.fc .fc-highlight{background:var(--fc-highlight-color)}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:var(--fc-neutral-bg-color)}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event.fc-event-draggable,.fc-event[href]{cursor:pointer}.fc-event .fc-event-main{position:relative;z-index:2}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event .fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event-selected .fc-event-resizer,.fc-event:hover .fc-event-resizer{display:block}.fc-event-selected .fc-event-resizer{background:var(--fc-page-bg-color);border-color:inherit;border-radius:calc(var(--fc-event-resizer-dot-total-width)/2);border-style:solid;border-width:var(--fc-event-resizer-dot-border-width);height:var(--fc-event-resizer-dot-total-width);width:var(--fc-event-resizer-dot-total-width)}.fc-event-selected .fc-event-resizer:before{bottom:-20px;content:\\\"\\\";left:-20px;position:absolute;right:-20px;top:-20px}.fc-event-selected,.fc-event:focus{box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event-selected:before,.fc-event:focus:before{bottom:0;content:\\\"\\\";left:0;position:absolute;right:0;top:0;z-index:3}.fc-event-selected:after,.fc-event:focus:after{background:var(--fc-event-selected-overlay-color);bottom:-1px;content:\\\"\\\";left:-1px;position:absolute;right:-1px;top:-1px;z-index:1}.fc-h-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-h-event .fc-event-main{color:var(--fc-event-text-color)}.fc-h-event .fc-event-main-frame{display:flex}.fc-h-event .fc-event-time{max-width:100%;overflow:hidden}.fc-h-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-width:0}.fc-h-event .fc-event-title{display:inline-block;left:0;max-width:100%;overflow:hidden;right:0;vertical-align:top}.fc-h-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{bottom:0;top:0;width:var(--fc-event-resizer-thickness)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-h-event.fc-event-selected .fc-event-resizer{margin-top:calc(var(--fc-event-resizer-dot-total-width)*-.5);top:50%}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc .fc-popover{box-shadow:0 2px 6px rgba(0,0,0,.15);position:absolute;z-index:9999}.fc .fc-popover-header{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;font-size:1.1em;opacity:.65}.fc-theme-standard .fc-popover{background:var(--fc-page-bg-color);border:1px solid var(--fc-border-color)}.fc-theme-standard .fc-popover-header{background:var(--fc-neutral-bg-color)}\";\ninjectStyles(css_248z);\nclass DelayedRunner {\n constructor(drainedOption) {\n this.drainedOption = drainedOption;\n this.isRunning = false;\n this.isDirty = false;\n this.pauseDepths = {};\n this.timeoutId = 0;\n }\n request(delay) {\n this.isDirty = true;\n if (!this.isPaused()) {\n this.clearTimeout();\n if (delay == null) {\n this.tryDrain();\n } else {\n this.timeoutId = setTimeout(\n // NOT OPTIMAL! TODO: look at debounce\n this.tryDrain.bind(this), delay);\n }\n }\n }\n pause() {\n let scope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n let pauseDepths = this.pauseDepths;\n pauseDepths[scope] = (pauseDepths[scope] || 0) + 1;\n this.clearTimeout();\n }\n resume() {\n let scope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n let force = arguments.length > 1 ? arguments[1] : undefined;\n let pauseDepths = this.pauseDepths;\n if (scope in pauseDepths) {\n if (force) {\n delete pauseDepths[scope];\n } else {\n pauseDepths[scope] -= 1;\n let depth = pauseDepths[scope];\n if (depth <= 0) {\n delete pauseDepths[scope];\n }\n }\n this.tryDrain();\n }\n }\n isPaused() {\n return Object.keys(this.pauseDepths).length;\n }\n tryDrain() {\n if (!this.isRunning && !this.isPaused()) {\n this.isRunning = true;\n while (this.isDirty) {\n this.isDirty = false;\n this.drained(); // might set isDirty to true again\n }\n this.isRunning = false;\n }\n }\n clear() {\n this.clearTimeout();\n this.isDirty = false;\n this.pauseDepths = {};\n }\n clearTimeout() {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = 0;\n }\n }\n drained() {\n if (this.drainedOption) {\n this.drainedOption();\n }\n }\n}\nfunction removeElement(el) {\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n}\n// Querying\n// ----------------------------------------------------------------------------------------------------------------\nfunction elementClosest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n // really bad fallback for IE\n // from https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n }\n if (!document.documentElement.contains(el)) {\n return null;\n }\n do {\n if (elementMatches(el, selector)) {\n return el;\n }\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n}\nfunction elementMatches(el, selector) {\n let method = el.matches || el.matchesSelector || el.msMatchesSelector;\n return method.call(el, selector);\n}\n// accepts multiple subject els\n// returns a real array. good for methods like forEach\n// TODO: accept the document\nfunction findElements(container, selector) {\n let containers = container instanceof HTMLElement ? [container] : container;\n let allMatches = [];\n for (let i = 0; i < containers.length; i += 1) {\n let matches = containers[i].querySelectorAll(selector);\n for (let j = 0; j < matches.length; j += 1) {\n allMatches.push(matches[j]);\n }\n }\n return allMatches;\n}\n// accepts multiple subject els\n// only queries direct child elements // TODO: rename to findDirectChildren!\nfunction findDirectChildren(parent, selector) {\n let parents = parent instanceof HTMLElement ? [parent] : parent;\n let allMatches = [];\n for (let i = 0; i < parents.length; i += 1) {\n let childNodes = parents[i].children; // only ever elements\n for (let j = 0; j < childNodes.length; j += 1) {\n let childNode = childNodes[j];\n if (!selector || elementMatches(childNode, selector)) {\n allMatches.push(childNode);\n }\n }\n }\n return allMatches;\n}\n// Style\n// ----------------------------------------------------------------------------------------------------------------\nconst PIXEL_PROP_RE = /(top|left|right|bottom|width|height)$/i;\nfunction applyStyle(el, props) {\n for (let propName in props) {\n applyStyleProp(el, propName, props[propName]);\n }\n}\nfunction applyStyleProp(el, name, val) {\n if (val == null) {\n el.style[name] = '';\n } else if (typeof val === 'number' && PIXEL_PROP_RE.test(name)) {\n el.style[name] = `${val}px`;\n } else {\n el.style[name] = val;\n }\n}\n// Event Handling\n// ----------------------------------------------------------------------------------------------------------------\n// if intercepting bubbled events at the document/window/body level,\n// and want to see originating element (the 'target'), use this util instead\n// of `ev.target` because it goes within web-component boundaries.\nfunction getEventTargetViaRoot(ev) {\n var _a, _b;\n return (_b = (_a = ev.composedPath) === null || _a === void 0 ? void 0 : _a.call(ev)[0]) !== null && _b !== void 0 ? _b : ev.target;\n}\n// Unique ID for DOM attribute\nlet guid$1 = 0;\nfunction getUniqueDomId() {\n guid$1 += 1;\n return 'fc-dom-' + guid$1;\n}\n\n// Stops a mouse/touch event from doing it's native browser action\nfunction preventDefault(ev) {\n ev.preventDefault();\n}\n// Event Delegation\n// ----------------------------------------------------------------------------------------------------------------\nfunction buildDelegationHandler(selector, handler) {\n return ev => {\n let matchedChild = elementClosest(ev.target, selector);\n if (matchedChild) {\n handler.call(matchedChild, ev, matchedChild);\n }\n };\n}\nfunction listenBySelector(container, eventType, selector, handler) {\n let attachedHandler = buildDelegationHandler(selector, handler);\n container.addEventListener(eventType, attachedHandler);\n return () => {\n container.removeEventListener(eventType, attachedHandler);\n };\n}\nfunction listenToHoverBySelector(container, selector, onMouseEnter, onMouseLeave) {\n let currentMatchedChild;\n return listenBySelector(container, 'mouseover', selector, (mouseOverEv, matchedChild) => {\n if (matchedChild !== currentMatchedChild) {\n currentMatchedChild = matchedChild;\n onMouseEnter(mouseOverEv, matchedChild);\n let realOnMouseLeave = mouseLeaveEv => {\n currentMatchedChild = null;\n onMouseLeave(mouseLeaveEv, matchedChild);\n matchedChild.removeEventListener('mouseleave', realOnMouseLeave);\n };\n // listen to the next mouseleave, and then unattach\n matchedChild.addEventListener('mouseleave', realOnMouseLeave);\n }\n });\n}\n// Animation\n// ----------------------------------------------------------------------------------------------------------------\nconst transitionEventNames = ['webkitTransitionEnd', 'otransitionend', 'oTransitionEnd', 'msTransitionEnd', 'transitionend'];\n// triggered only when the next single subsequent transition finishes\nfunction whenTransitionDone(el, callback) {\n let realCallback = ev => {\n callback(ev);\n transitionEventNames.forEach(eventName => {\n el.removeEventListener(eventName, realCallback);\n });\n };\n transitionEventNames.forEach(eventName => {\n el.addEventListener(eventName, realCallback); // cross-browser way to determine when the transition finishes\n });\n}\n// ARIA workarounds\n// ----------------------------------------------------------------------------------------------------------------\nfunction createAriaClickAttrs(handler) {\n return Object.assign({\n onClick: handler\n }, createAriaKeyboardAttrs(handler));\n}\nfunction createAriaKeyboardAttrs(handler) {\n return {\n tabIndex: 0,\n onKeyDown(ev) {\n if (ev.key === 'Enter' || ev.key === ' ') {\n handler(ev);\n ev.preventDefault(); // if space, don't scroll down page\n }\n }\n };\n}\nlet guidNumber = 0;\nfunction guid() {\n guidNumber += 1;\n return String(guidNumber);\n}\n/* FullCalendar-specific DOM Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n// Make the mouse cursor express that an event is not allowed in the current area\nfunction disableCursor() {\n document.body.classList.add('fc-not-allowed');\n}\n// Returns the mouse cursor to its original look\nfunction enableCursor() {\n document.body.classList.remove('fc-not-allowed');\n}\n/* Selection\n----------------------------------------------------------------------------------------------------------------------*/\nfunction preventSelection(el) {\n el.style.userSelect = 'none';\n el.style.webkitUserSelect = 'none';\n el.addEventListener('selectstart', preventDefault);\n}\nfunction allowSelection(el) {\n el.style.userSelect = '';\n el.style.webkitUserSelect = '';\n el.removeEventListener('selectstart', preventDefault);\n}\n/* Context Menu\n----------------------------------------------------------------------------------------------------------------------*/\nfunction preventContextMenu(el) {\n el.addEventListener('contextmenu', preventDefault);\n}\nfunction allowContextMenu(el) {\n el.removeEventListener('contextmenu', preventDefault);\n}\nfunction parseFieldSpecs(input) {\n let specs = [];\n let tokens = [];\n let i;\n let token;\n if (typeof input === 'string') {\n tokens = input.split(/\\s*,\\s*/);\n } else if (typeof input === 'function') {\n tokens = [input];\n } else if (Array.isArray(input)) {\n tokens = input;\n }\n for (i = 0; i < tokens.length; i += 1) {\n token = tokens[i];\n if (typeof token === 'string') {\n specs.push(token.charAt(0) === '-' ? {\n field: token.substring(1),\n order: -1\n } : {\n field: token,\n order: 1\n });\n } else if (typeof token === 'function') {\n specs.push({\n func: token\n });\n }\n }\n return specs;\n}\nfunction compareByFieldSpecs(obj0, obj1, fieldSpecs) {\n let i;\n let cmp;\n for (i = 0; i < fieldSpecs.length; i += 1) {\n cmp = compareByFieldSpec(obj0, obj1, fieldSpecs[i]);\n if (cmp) {\n return cmp;\n }\n }\n return 0;\n}\nfunction compareByFieldSpec(obj0, obj1, fieldSpec) {\n if (fieldSpec.func) {\n return fieldSpec.func(obj0, obj1);\n }\n return flexibleCompare(obj0[fieldSpec.field], obj1[fieldSpec.field]) * (fieldSpec.order || 1);\n}\nfunction flexibleCompare(a, b) {\n if (!a && !b) {\n return 0;\n }\n if (b == null) {\n return -1;\n }\n if (a == null) {\n return 1;\n }\n if (typeof a === 'string' || typeof b === 'string') {\n return String(a).localeCompare(String(b));\n }\n return a - b;\n}\n/* String Utilities\n----------------------------------------------------------------------------------------------------------------------*/\nfunction padStart(val, len) {\n let s = String(val);\n return '000'.substr(0, len - s.length) + s;\n}\nfunction formatWithOrdinals(formatter, args, fallbackText) {\n if (typeof formatter === 'function') {\n return formatter(...args);\n }\n if (typeof formatter === 'string') {\n // non-blank string\n return args.reduce((str, arg, index) => str.replace('$' + index, arg || ''), formatter);\n }\n return fallbackText;\n}\n/* Number Utilities\n----------------------------------------------------------------------------------------------------------------------*/\nfunction compareNumbers(a, b) {\n return a - b;\n}\nfunction isInt(n) {\n return n % 1 === 0;\n}\n/* FC-specific DOM dimension stuff\n----------------------------------------------------------------------------------------------------------------------*/\nfunction computeSmallestCellWidth(cellEl) {\n let allWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-frame');\n let contentWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-cushion');\n if (!allWidthEl) {\n throw new Error('needs fc-scrollgrid-shrink-frame className'); // TODO: use const\n }\n if (!contentWidthEl) {\n throw new Error('needs fc-scrollgrid-shrink-cushion className');\n }\n return cellEl.getBoundingClientRect().width - allWidthEl.getBoundingClientRect().width +\n // the cell padding+border\n contentWidthEl.getBoundingClientRect().width;\n}\nconst INTERNAL_UNITS = ['years', 'months', 'days', 'milliseconds'];\nconst PARSE_RE = /^(-?)(?:(\\d+)\\.)?(\\d+):(\\d\\d)(?::(\\d\\d)(?:\\.(\\d\\d\\d))?)?/;\n// Parsing and Creation\nfunction createDuration(input, unit) {\n if (typeof input === 'string') {\n return parseString(input);\n }\n if (typeof input === 'object' && input) {\n // non-null object\n return parseObject(input);\n }\n if (typeof input === 'number') {\n return parseObject({\n [unit || 'milliseconds']: input\n });\n }\n return null;\n}\nfunction parseString(s) {\n let m = PARSE_RE.exec(s);\n if (m) {\n let sign = m[1] ? -1 : 1;\n return {\n years: 0,\n months: 0,\n days: sign * (m[2] ? parseInt(m[2], 10) : 0),\n milliseconds: sign * ((m[3] ? parseInt(m[3], 10) : 0) * 60 * 60 * 1000 +\n // hours\n (m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 +\n // minutes\n (m[5] ? parseInt(m[5], 10) : 0) * 1000 + (\n // seconds\n m[6] ? parseInt(m[6], 10) : 0) // ms\n )\n };\n }\n return null;\n}\nfunction parseObject(obj) {\n let duration = {\n years: obj.years || obj.year || 0,\n months: obj.months || obj.month || 0,\n days: obj.days || obj.day || 0,\n milliseconds: (obj.hours || obj.hour || 0) * 60 * 60 * 1000 +\n // hours\n (obj.minutes || obj.minute || 0) * 60 * 1000 +\n // minutes\n (obj.seconds || obj.second || 0) * 1000 + (\n // seconds\n obj.milliseconds || obj.millisecond || obj.ms || 0) // ms\n };\n let weeks = obj.weeks || obj.week;\n if (weeks) {\n duration.days += weeks * 7;\n duration.specifiedWeeks = true;\n }\n return duration;\n}\n// Equality\nfunction durationsEqual(d0, d1) {\n return d0.years === d1.years && d0.months === d1.months && d0.days === d1.days && d0.milliseconds === d1.milliseconds;\n}\nfunction asCleanDays(dur) {\n if (!dur.years && !dur.months && !dur.milliseconds) {\n return dur.days;\n }\n return 0;\n}\n// Simple Math\nfunction addDurations(d0, d1) {\n return {\n years: d0.years + d1.years,\n months: d0.months + d1.months,\n days: d0.days + d1.days,\n milliseconds: d0.milliseconds + d1.milliseconds\n };\n}\nfunction subtractDurations(d1, d0) {\n return {\n years: d1.years - d0.years,\n months: d1.months - d0.months,\n days: d1.days - d0.days,\n milliseconds: d1.milliseconds - d0.milliseconds\n };\n}\nfunction multiplyDuration(d, n) {\n return {\n years: d.years * n,\n months: d.months * n,\n days: d.days * n,\n milliseconds: d.milliseconds * n\n };\n}\n// Conversions\n// \"Rough\" because they are based on average-case Gregorian months/years\nfunction asRoughYears(dur) {\n return asRoughDays(dur) / 365;\n}\nfunction asRoughMonths(dur) {\n return asRoughDays(dur) / 30;\n}\nfunction asRoughDays(dur) {\n return asRoughMs(dur) / 864e5;\n}\nfunction asRoughMinutes(dur) {\n return asRoughMs(dur) / (1000 * 60);\n}\nfunction asRoughSeconds(dur) {\n return asRoughMs(dur) / 1000;\n}\nfunction asRoughMs(dur) {\n return dur.years * (365 * 864e5) + dur.months * (30 * 864e5) + dur.days * 864e5 + dur.milliseconds;\n}\n// Advanced Math\nfunction wholeDivideDurations(numerator, denominator) {\n let res = null;\n for (let i = 0; i < INTERNAL_UNITS.length; i += 1) {\n let unit = INTERNAL_UNITS[i];\n if (denominator[unit]) {\n let localRes = numerator[unit] / denominator[unit];\n if (!isInt(localRes) || res !== null && res !== localRes) {\n return null;\n }\n res = localRes;\n } else if (numerator[unit]) {\n // needs to divide by something but can't!\n return null;\n }\n }\n return res;\n}\nfunction greatestDurationDenominator(dur) {\n let ms = dur.milliseconds;\n if (ms) {\n if (ms % 1000 !== 0) {\n return {\n unit: 'millisecond',\n value: ms\n };\n }\n if (ms % (1000 * 60) !== 0) {\n return {\n unit: 'second',\n value: ms / 1000\n };\n }\n if (ms % (1000 * 60 * 60) !== 0) {\n return {\n unit: 'minute',\n value: ms / (1000 * 60)\n };\n }\n if (ms) {\n return {\n unit: 'hour',\n value: ms / (1000 * 60 * 60)\n };\n }\n }\n if (dur.days) {\n if (dur.specifiedWeeks && dur.days % 7 === 0) {\n return {\n unit: 'week',\n value: dur.days / 7\n };\n }\n return {\n unit: 'day',\n value: dur.days\n };\n }\n if (dur.months) {\n return {\n unit: 'month',\n value: dur.months\n };\n }\n if (dur.years) {\n return {\n unit: 'year',\n value: dur.years\n };\n }\n return {\n unit: 'millisecond',\n value: 0\n };\n}\n\n// TODO: new util arrayify?\nfunction removeExact(array, exactVal) {\n let removeCnt = 0;\n let i = 0;\n while (i < array.length) {\n if (array[i] === exactVal) {\n array.splice(i, 1);\n removeCnt += 1;\n } else {\n i += 1;\n }\n }\n return removeCnt;\n}\nfunction isArraysEqual(a0, a1, equalityFunc) {\n if (a0 === a1) {\n return true;\n }\n let len = a0.length;\n let i;\n if (len !== a1.length) {\n // not array? or not same length?\n return false;\n }\n for (i = 0; i < len; i += 1) {\n if (!(equalityFunc ? equalityFunc(a0[i], a1[i]) : a0[i] === a1[i])) {\n return false;\n }\n }\n return true;\n}\nconst DAY_IDS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n// Adding\nfunction addWeeks(m, n) {\n let a = dateToUtcArray(m);\n a[2] += n * 7;\n return arrayToUtcDate(a);\n}\nfunction addDays(m, n) {\n let a = dateToUtcArray(m);\n a[2] += n;\n return arrayToUtcDate(a);\n}\nfunction addMs(m, n) {\n let a = dateToUtcArray(m);\n a[6] += n;\n return arrayToUtcDate(a);\n}\n// Diffing (all return floats)\n// TODO: why not use ranges?\nfunction diffWeeks(m0, m1) {\n return diffDays(m0, m1) / 7;\n}\nfunction diffDays(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60 * 24);\n}\nfunction diffHours(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60);\n}\nfunction diffMinutes(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60);\n}\nfunction diffSeconds(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / 1000;\n}\nfunction diffDayAndTime(m0, m1) {\n let m0day = startOfDay(m0);\n let m1day = startOfDay(m1);\n return {\n years: 0,\n months: 0,\n days: Math.round(diffDays(m0day, m1day)),\n milliseconds: m1.valueOf() - m1day.valueOf() - (m0.valueOf() - m0day.valueOf())\n };\n}\n// Diffing Whole Units\nfunction diffWholeWeeks(m0, m1) {\n let d = diffWholeDays(m0, m1);\n if (d !== null && d % 7 === 0) {\n return d / 7;\n }\n return null;\n}\nfunction diffWholeDays(m0, m1) {\n if (timeAsMs(m0) === timeAsMs(m1)) {\n return Math.round(diffDays(m0, m1));\n }\n return null;\n}\n// Start-Of\nfunction startOfDay(m) {\n return arrayToUtcDate([m.getUTCFullYear(), m.getUTCMonth(), m.getUTCDate()]);\n}\nfunction startOfHour(m) {\n return arrayToUtcDate([m.getUTCFullYear(), m.getUTCMonth(), m.getUTCDate(), m.getUTCHours()]);\n}\nfunction startOfMinute(m) {\n return arrayToUtcDate([m.getUTCFullYear(), m.getUTCMonth(), m.getUTCDate(), m.getUTCHours(), m.getUTCMinutes()]);\n}\nfunction startOfSecond(m) {\n return arrayToUtcDate([m.getUTCFullYear(), m.getUTCMonth(), m.getUTCDate(), m.getUTCHours(), m.getUTCMinutes(), m.getUTCSeconds()]);\n}\n// Week Computation\nfunction weekOfYear(marker, dow, doy) {\n let y = marker.getUTCFullYear();\n let w = weekOfGivenYear(marker, y, dow, doy);\n if (w < 1) {\n return weekOfGivenYear(marker, y - 1, dow, doy);\n }\n let nextW = weekOfGivenYear(marker, y + 1, dow, doy);\n if (nextW >= 1) {\n return Math.min(w, nextW);\n }\n return w;\n}\nfunction weekOfGivenYear(marker, year, dow, doy) {\n let firstWeekStart = arrayToUtcDate([year, 0, 1 + firstWeekOffset(year, dow, doy)]);\n let dayStart = startOfDay(marker);\n let days = Math.round(diffDays(firstWeekStart, dayStart));\n return Math.floor(days / 7) + 1; // zero-indexed\n}\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n let fwd = 7 + dow - doy;\n // first-week day local weekday -- which local weekday is fwd\n let fwdlw = (7 + arrayToUtcDate([year, 0, fwd]).getUTCDay() - dow) % 7;\n return -fwdlw + fwd - 1;\n}\n// Array Conversion\nfunction dateToLocalArray(date) {\n return [date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()];\n}\nfunction arrayToLocalDate(a) {\n return new Date(a[0], a[1] || 0, a[2] == null ? 1 : a[2],\n // day of month\n a[3] || 0, a[4] || 0, a[5] || 0);\n}\nfunction dateToUtcArray(date) {\n return [date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds()];\n}\nfunction arrayToUtcDate(a) {\n // according to web standards (and Safari), a month index is required.\n // massage if only given a year.\n if (a.length === 1) {\n a = a.concat([0]);\n }\n return new Date(Date.UTC(...a));\n}\n// Other Utils\nfunction isValidDate(m) {\n return !isNaN(m.valueOf());\n}\nfunction timeAsMs(m) {\n return m.getUTCHours() * 1000 * 60 * 60 + m.getUTCMinutes() * 1000 * 60 + m.getUTCSeconds() * 1000 + m.getUTCMilliseconds();\n}\n\n// timeZoneOffset is in minutes\nfunction buildIsoString(marker, timeZoneOffset) {\n let stripZeroTime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n let s = marker.toISOString();\n s = s.replace('.000', '');\n if (stripZeroTime) {\n s = s.replace('T00:00:00Z', '');\n }\n if (s.length > 10) {\n // time part wasn't stripped, can add timezone info\n if (timeZoneOffset == null) {\n s = s.replace('Z', '');\n } else if (timeZoneOffset !== 0) {\n s = s.replace('Z', formatTimeZoneOffset(timeZoneOffset, true));\n }\n // otherwise, its UTC-0 and we want to keep the Z\n }\n return s;\n}\n// formats the date, but with no time part\n// TODO: somehow merge with buildIsoString and stripZeroTime\n// TODO: rename. omit \"string\"\nfunction formatDayString(marker) {\n return marker.toISOString().replace(/T.*$/, '');\n}\nfunction formatIsoMonthStr(marker) {\n return marker.toISOString().match(/^\\d{4}-\\d{2}/)[0];\n}\n// TODO: use Date::toISOString and use everything after the T?\nfunction formatIsoTimeString(marker) {\n return padStart(marker.getUTCHours(), 2) + ':' + padStart(marker.getUTCMinutes(), 2) + ':' + padStart(marker.getUTCSeconds(), 2);\n}\nfunction formatTimeZoneOffset(minutes) {\n let doIso = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let sign = minutes < 0 ? '-' : '+';\n let abs = Math.abs(minutes);\n let hours = Math.floor(abs / 60);\n let mins = Math.round(abs % 60);\n if (doIso) {\n return `${sign + padStart(hours, 2)}:${padStart(mins, 2)}`;\n }\n return `GMT${sign}${hours}${mins ? `:${padStart(mins, 2)}` : ''}`;\n}\nfunction memoize(workerFunc, resEquality, teardownFunc) {\n let currentArgs;\n let currentRes;\n return function () {\n for (var _len = arguments.length, newArgs = new Array(_len), _key = 0; _key < _len; _key++) {\n newArgs[_key] = arguments[_key];\n }\n if (!currentArgs) {\n currentRes = workerFunc.apply(this, newArgs);\n } else if (!isArraysEqual(currentArgs, newArgs)) {\n if (teardownFunc) {\n teardownFunc(currentRes);\n }\n let res = workerFunc.apply(this, newArgs);\n if (!resEquality || !resEquality(res, currentRes)) {\n currentRes = res;\n }\n }\n currentArgs = newArgs;\n return currentRes;\n };\n}\nfunction memoizeObjArg(workerFunc, resEquality, teardownFunc) {\n let currentArg;\n let currentRes;\n return newArg => {\n if (!currentArg) {\n currentRes = workerFunc.call(this, newArg);\n } else if (!isPropsEqual(currentArg, newArg)) {\n if (teardownFunc) {\n teardownFunc(currentRes);\n }\n let res = workerFunc.call(this, newArg);\n if (!resEquality || !resEquality(res, currentRes)) {\n currentRes = res;\n }\n }\n currentArg = newArg;\n return currentRes;\n };\n}\nfunction memoizeArraylike(\n// used at all?\nworkerFunc, resEquality, teardownFunc) {\n let currentArgSets = [];\n let currentResults = [];\n return newArgSets => {\n let currentLen = currentArgSets.length;\n let newLen = newArgSets.length;\n let i = 0;\n for (; i < currentLen; i += 1) {\n if (!newArgSets[i]) {\n // one of the old sets no longer exists\n if (teardownFunc) {\n teardownFunc(currentResults[i]);\n }\n } else if (!isArraysEqual(currentArgSets[i], newArgSets[i])) {\n if (teardownFunc) {\n teardownFunc(currentResults[i]);\n }\n let res = workerFunc.apply(this, newArgSets[i]);\n if (!resEquality || !resEquality(res, currentResults[i])) {\n currentResults[i] = res;\n }\n }\n }\n for (; i < newLen; i += 1) {\n currentResults[i] = workerFunc.apply(this, newArgSets[i]);\n }\n currentArgSets = newArgSets;\n currentResults.splice(newLen); // remove excess\n return currentResults;\n };\n}\nfunction memoizeHashlike(workerFunc, resEquality, teardownFunc) {\n let currentArgHash = {};\n let currentResHash = {};\n return newArgHash => {\n let newResHash = {};\n for (let key in newArgHash) {\n if (!currentResHash[key]) {\n newResHash[key] = workerFunc.apply(this, newArgHash[key]);\n } else if (!isArraysEqual(currentArgHash[key], newArgHash[key])) {\n if (teardownFunc) {\n teardownFunc(currentResHash[key]);\n }\n let res = workerFunc.apply(this, newArgHash[key]);\n newResHash[key] = resEquality && resEquality(res, currentResHash[key]) ? currentResHash[key] : res;\n } else {\n newResHash[key] = currentResHash[key];\n }\n }\n currentArgHash = newArgHash;\n currentResHash = newResHash;\n return newResHash;\n };\n}\nconst EXTENDED_SETTINGS_AND_SEVERITIES = {\n week: 3,\n separator: 0,\n omitZeroMinute: 0,\n meridiem: 0,\n omitCommas: 0\n};\nconst STANDARD_DATE_PROP_SEVERITIES = {\n timeZoneName: 7,\n era: 6,\n year: 5,\n month: 4,\n day: 2,\n weekday: 2,\n hour: 1,\n minute: 1,\n second: 1\n};\nconst MERIDIEM_RE = /\\s*([ap])\\.?m\\.?/i; // eats up leading spaces too\nconst COMMA_RE = /,/g; // we need re for globalness\nconst MULTI_SPACE_RE = /\\s+/g;\nconst LTR_RE = /\\u200e/g; // control character\nconst UTC_RE = /UTC|GMT/;\nclass NativeFormatter {\n constructor(formatSettings) {\n let standardDateProps = {};\n let extendedSettings = {};\n let severity = 0;\n for (let name in formatSettings) {\n if (name in EXTENDED_SETTINGS_AND_SEVERITIES) {\n extendedSettings[name] = formatSettings[name];\n severity = Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name], severity);\n } else {\n standardDateProps[name] = formatSettings[name];\n if (name in STANDARD_DATE_PROP_SEVERITIES) {\n // TODO: what about hour12? no severity\n severity = Math.max(STANDARD_DATE_PROP_SEVERITIES[name], severity);\n }\n }\n }\n this.standardDateProps = standardDateProps;\n this.extendedSettings = extendedSettings;\n this.severity = severity;\n this.buildFormattingFunc = memoize(buildFormattingFunc);\n }\n format(date, context) {\n return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, context)(date);\n }\n formatRange(start, end, context, betterDefaultSeparator) {\n let standardDateProps = this.standardDateProps,\n extendedSettings = this.extendedSettings;\n let diffSeverity = computeMarkerDiffSeverity(start.marker, end.marker, context.calendarSystem);\n if (!diffSeverity) {\n return this.format(start, context);\n }\n let biggestUnitForPartial = diffSeverity;\n if (biggestUnitForPartial > 1 && (\n // the two dates are different in a way that's larger scale than time\n standardDateProps.year === 'numeric' || standardDateProps.year === '2-digit') && (standardDateProps.month === 'numeric' || standardDateProps.month === '2-digit') && (standardDateProps.day === 'numeric' || standardDateProps.day === '2-digit')) {\n biggestUnitForPartial = 1; // make it look like the dates are only different in terms of time\n }\n let full0 = this.format(start, context);\n let full1 = this.format(end, context);\n if (full0 === full1) {\n return full0;\n }\n let partialDateProps = computePartialFormattingOptions(standardDateProps, biggestUnitForPartial);\n let partialFormattingFunc = buildFormattingFunc(partialDateProps, extendedSettings, context);\n let partial0 = partialFormattingFunc(start);\n let partial1 = partialFormattingFunc(end);\n let insertion = findCommonInsertion(full0, partial0, full1, partial1);\n let separator = extendedSettings.separator || betterDefaultSeparator || context.defaultSeparator || '';\n if (insertion) {\n return insertion.before + partial0 + separator + partial1 + insertion.after;\n }\n return full0 + separator + full1;\n }\n getLargestUnit() {\n switch (this.severity) {\n case 7:\n case 6:\n case 5:\n return 'year';\n case 4:\n return 'month';\n case 3:\n return 'week';\n case 2:\n return 'day';\n default:\n return 'time';\n // really?\n }\n }\n}\nfunction buildFormattingFunc(standardDateProps, extendedSettings, context) {\n let standardDatePropCnt = Object.keys(standardDateProps).length;\n if (standardDatePropCnt === 1 && standardDateProps.timeZoneName === 'short') {\n return date => formatTimeZoneOffset(date.timeZoneOffset);\n }\n if (standardDatePropCnt === 0 && extendedSettings.week) {\n return date => formatWeekNumber(context.computeWeekNumber(date.marker), context.weekText, context.weekTextLong, context.locale, extendedSettings.week);\n }\n return buildNativeFormattingFunc(standardDateProps, extendedSettings, context);\n}\nfunction buildNativeFormattingFunc(standardDateProps, extendedSettings, context) {\n standardDateProps = Object.assign({}, standardDateProps); // copy\n extendedSettings = Object.assign({}, extendedSettings); // copy\n sanitizeSettings(standardDateProps, extendedSettings);\n standardDateProps.timeZone = 'UTC'; // we leverage the only guaranteed timeZone for our UTC markers\n let normalFormat = new Intl.DateTimeFormat(context.locale.codes, standardDateProps);\n let zeroFormat; // needed?\n if (extendedSettings.omitZeroMinute) {\n let zeroProps = Object.assign({}, standardDateProps);\n delete zeroProps.minute; // seconds and ms were already considered in sanitizeSettings\n zeroFormat = new Intl.DateTimeFormat(context.locale.codes, zeroProps);\n }\n return date => {\n let marker = date.marker;\n let format;\n if (zeroFormat && !marker.getUTCMinutes()) {\n format = zeroFormat;\n } else {\n format = normalFormat;\n }\n let s = format.format(marker);\n return postProcess(s, date, standardDateProps, extendedSettings, context);\n };\n}\nfunction sanitizeSettings(standardDateProps, extendedSettings) {\n // deal with a browser inconsistency where formatting the timezone\n // requires that the hour/minute be present.\n if (standardDateProps.timeZoneName) {\n if (!standardDateProps.hour) {\n standardDateProps.hour = '2-digit';\n }\n if (!standardDateProps.minute) {\n standardDateProps.minute = '2-digit';\n }\n }\n // only support short timezone names\n if (standardDateProps.timeZoneName === 'long') {\n standardDateProps.timeZoneName = 'short';\n }\n // if requesting to display seconds, MUST display minutes\n if (extendedSettings.omitZeroMinute && (standardDateProps.second || standardDateProps.millisecond)) {\n delete extendedSettings.omitZeroMinute;\n }\n}\nfunction postProcess(s, date, standardDateProps, extendedSettings, context) {\n s = s.replace(LTR_RE, ''); // remove left-to-right control chars. do first. good for other regexes\n if (standardDateProps.timeZoneName === 'short') {\n s = injectTzoStr(s, context.timeZone === 'UTC' || date.timeZoneOffset == null ? 'UTC' :\n // important to normalize for IE, which does \"GMT\"\n formatTimeZoneOffset(date.timeZoneOffset));\n }\n if (extendedSettings.omitCommas) {\n s = s.replace(COMMA_RE, '').trim();\n }\n if (extendedSettings.omitZeroMinute) {\n s = s.replace(':00', ''); // zeroFormat doesn't always achieve this\n }\n // ^ do anything that might create adjacent spaces before this point,\n // because MERIDIEM_RE likes to eat up loading spaces\n if (extendedSettings.meridiem === false) {\n s = s.replace(MERIDIEM_RE, '').trim();\n } else if (extendedSettings.meridiem === 'narrow') {\n // a/p\n s = s.replace(MERIDIEM_RE, (m0, m1) => m1.toLocaleLowerCase());\n } else if (extendedSettings.meridiem === 'short') {\n // am/pm\n s = s.replace(MERIDIEM_RE, (m0, m1) => `${m1.toLocaleLowerCase()}m`);\n } else if (extendedSettings.meridiem === 'lowercase') {\n // other meridiem transformers already converted to lowercase\n s = s.replace(MERIDIEM_RE, m0 => m0.toLocaleLowerCase());\n }\n s = s.replace(MULTI_SPACE_RE, ' ');\n s = s.trim();\n return s;\n}\nfunction injectTzoStr(s, tzoStr) {\n let replaced = false;\n s = s.replace(UTC_RE, () => {\n replaced = true;\n return tzoStr;\n });\n // IE11 doesn't include UTC/GMT in the original string, so append to end\n if (!replaced) {\n s += ` ${tzoStr}`;\n }\n return s;\n}\nfunction formatWeekNumber(num, weekText, weekTextLong, locale, display) {\n let parts = [];\n if (display === 'long') {\n parts.push(weekTextLong);\n } else if (display === 'short' || display === 'narrow') {\n parts.push(weekText);\n }\n if (display === 'long' || display === 'short') {\n parts.push(' ');\n }\n parts.push(locale.simpleNumberFormat.format(num));\n if (locale.options.direction === 'rtl') {\n // TODO: use control characters instead?\n parts.reverse();\n }\n return parts.join('');\n}\n// Range Formatting Utils\n// 0 = exactly the same\n// 1 = different by time\n// and bigger\nfunction computeMarkerDiffSeverity(d0, d1, ca) {\n if (ca.getMarkerYear(d0) !== ca.getMarkerYear(d1)) {\n return 5;\n }\n if (ca.getMarkerMonth(d0) !== ca.getMarkerMonth(d1)) {\n return 4;\n }\n if (ca.getMarkerDay(d0) !== ca.getMarkerDay(d1)) {\n return 2;\n }\n if (timeAsMs(d0) !== timeAsMs(d1)) {\n return 1;\n }\n return 0;\n}\nfunction computePartialFormattingOptions(options, biggestUnit) {\n let partialOptions = {};\n for (let name in options) {\n if (!(name in STANDARD_DATE_PROP_SEVERITIES) ||\n // not a date part prop (like timeZone)\n STANDARD_DATE_PROP_SEVERITIES[name] <= biggestUnit) {\n partialOptions[name] = options[name];\n }\n }\n return partialOptions;\n}\nfunction findCommonInsertion(full0, partial0, full1, partial1) {\n let i0 = 0;\n while (i0 < full0.length) {\n let found0 = full0.indexOf(partial0, i0);\n if (found0 === -1) {\n break;\n }\n let before0 = full0.substr(0, found0);\n i0 = found0 + partial0.length;\n let after0 = full0.substr(i0);\n let i1 = 0;\n while (i1 < full1.length) {\n let found1 = full1.indexOf(partial1, i1);\n if (found1 === -1) {\n break;\n }\n let before1 = full1.substr(0, found1);\n i1 = found1 + partial1.length;\n let after1 = full1.substr(i1);\n if (before0 === before1 && after0 === after1) {\n return {\n before: before0,\n after: after0\n };\n }\n }\n }\n return null;\n}\nfunction expandZonedMarker(dateInfo, calendarSystem) {\n let a = calendarSystem.markerToArray(dateInfo.marker);\n return {\n marker: dateInfo.marker,\n timeZoneOffset: dateInfo.timeZoneOffset,\n array: a,\n year: a[0],\n month: a[1],\n day: a[2],\n hour: a[3],\n minute: a[4],\n second: a[5],\n millisecond: a[6]\n };\n}\nfunction createVerboseFormattingArg(start, end, context, betterDefaultSeparator) {\n let startInfo = expandZonedMarker(start, context.calendarSystem);\n let endInfo = end ? expandZonedMarker(end, context.calendarSystem) : null;\n return {\n date: startInfo,\n start: startInfo,\n end: endInfo,\n timeZone: context.timeZone,\n localeCodes: context.locale.codes,\n defaultSeparator: betterDefaultSeparator || context.defaultSeparator\n };\n}\n\n/*\nTODO: fix the terminology of \"formatter\" vs \"formatting func\"\n*/\n/*\nAt the time of instantiation, this object does not know which cmd-formatting system it will use.\nIt receives this at the time of formatting, as a setting.\n*/\nclass CmdFormatter {\n constructor(cmdStr) {\n this.cmdStr = cmdStr;\n }\n format(date, context, betterDefaultSeparator) {\n return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(date, null, context, betterDefaultSeparator));\n }\n formatRange(start, end, context, betterDefaultSeparator) {\n return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(start, end, context, betterDefaultSeparator));\n }\n}\nclass FuncFormatter {\n constructor(func) {\n this.func = func;\n }\n format(date, context, betterDefaultSeparator) {\n return this.func(createVerboseFormattingArg(date, null, context, betterDefaultSeparator));\n }\n formatRange(start, end, context, betterDefaultSeparator) {\n return this.func(createVerboseFormattingArg(start, end, context, betterDefaultSeparator));\n }\n}\nfunction createFormatter(input) {\n if (typeof input === 'object' && input) {\n // non-null object\n return new NativeFormatter(input);\n }\n if (typeof input === 'string') {\n return new CmdFormatter(input);\n }\n if (typeof input === 'function') {\n return new FuncFormatter(input);\n }\n return null;\n}\n\n// base options\n// ------------\nconst BASE_OPTION_REFINERS = {\n navLinkDayClick: identity,\n navLinkWeekClick: identity,\n duration: createDuration,\n bootstrapFontAwesome: identity,\n buttonIcons: identity,\n customButtons: identity,\n defaultAllDayEventDuration: createDuration,\n defaultTimedEventDuration: createDuration,\n nextDayThreshold: createDuration,\n scrollTime: createDuration,\n scrollTimeReset: Boolean,\n slotMinTime: createDuration,\n slotMaxTime: createDuration,\n dayPopoverFormat: createFormatter,\n slotDuration: createDuration,\n snapDuration: createDuration,\n headerToolbar: identity,\n footerToolbar: identity,\n defaultRangeSeparator: String,\n titleRangeSeparator: String,\n forceEventDuration: Boolean,\n dayHeaders: Boolean,\n dayHeaderFormat: createFormatter,\n dayHeaderClassNames: identity,\n dayHeaderContent: identity,\n dayHeaderDidMount: identity,\n dayHeaderWillUnmount: identity,\n dayCellClassNames: identity,\n dayCellContent: identity,\n dayCellDidMount: identity,\n dayCellWillUnmount: identity,\n initialView: String,\n aspectRatio: Number,\n weekends: Boolean,\n weekNumberCalculation: identity,\n weekNumbers: Boolean,\n weekNumberClassNames: identity,\n weekNumberContent: identity,\n weekNumberDidMount: identity,\n weekNumberWillUnmount: identity,\n editable: Boolean,\n viewClassNames: identity,\n viewDidMount: identity,\n viewWillUnmount: identity,\n nowIndicator: Boolean,\n nowIndicatorClassNames: identity,\n nowIndicatorContent: identity,\n nowIndicatorDidMount: identity,\n nowIndicatorWillUnmount: identity,\n showNonCurrentDates: Boolean,\n lazyFetching: Boolean,\n startParam: String,\n endParam: String,\n timeZoneParam: String,\n timeZone: String,\n locales: identity,\n locale: identity,\n themeSystem: String,\n dragRevertDuration: Number,\n dragScroll: Boolean,\n allDayMaintainDuration: Boolean,\n unselectAuto: Boolean,\n dropAccept: identity,\n eventOrder: parseFieldSpecs,\n eventOrderStrict: Boolean,\n handleWindowResize: Boolean,\n windowResizeDelay: Number,\n longPressDelay: Number,\n eventDragMinDistance: Number,\n expandRows: Boolean,\n height: identity,\n contentHeight: identity,\n direction: String,\n weekNumberFormat: createFormatter,\n eventResizableFromStart: Boolean,\n displayEventTime: Boolean,\n displayEventEnd: Boolean,\n weekText: String,\n weekTextLong: String,\n progressiveEventRendering: Boolean,\n businessHours: identity,\n initialDate: identity,\n now: identity,\n eventDataTransform: identity,\n stickyHeaderDates: identity,\n stickyFooterScrollbar: identity,\n viewHeight: identity,\n defaultAllDay: Boolean,\n eventSourceFailure: identity,\n eventSourceSuccess: identity,\n eventDisplay: String,\n eventStartEditable: Boolean,\n eventDurationEditable: Boolean,\n eventOverlap: identity,\n eventConstraint: identity,\n eventAllow: identity,\n eventBackgroundColor: String,\n eventBorderColor: String,\n eventTextColor: String,\n eventColor: String,\n eventClassNames: identity,\n eventContent: identity,\n eventDidMount: identity,\n eventWillUnmount: identity,\n selectConstraint: identity,\n selectOverlap: identity,\n selectAllow: identity,\n droppable: Boolean,\n unselectCancel: String,\n slotLabelFormat: identity,\n slotLaneClassNames: identity,\n slotLaneContent: identity,\n slotLaneDidMount: identity,\n slotLaneWillUnmount: identity,\n slotLabelClassNames: identity,\n slotLabelContent: identity,\n slotLabelDidMount: identity,\n slotLabelWillUnmount: identity,\n dayMaxEvents: identity,\n dayMaxEventRows: identity,\n dayMinWidth: Number,\n slotLabelInterval: createDuration,\n allDayText: String,\n allDayClassNames: identity,\n allDayContent: identity,\n allDayDidMount: identity,\n allDayWillUnmount: identity,\n slotMinWidth: Number,\n navLinks: Boolean,\n eventTimeFormat: createFormatter,\n rerenderDelay: Number,\n moreLinkText: identity,\n moreLinkHint: identity,\n selectMinDistance: Number,\n selectable: Boolean,\n selectLongPressDelay: Number,\n eventLongPressDelay: Number,\n selectMirror: Boolean,\n eventMaxStack: Number,\n eventMinHeight: Number,\n eventMinWidth: Number,\n eventShortHeight: Number,\n slotEventOverlap: Boolean,\n plugins: identity,\n firstDay: Number,\n dayCount: Number,\n dateAlignment: String,\n dateIncrement: createDuration,\n hiddenDays: identity,\n fixedWeekCount: Boolean,\n validRange: identity,\n visibleRange: identity,\n titleFormat: identity,\n eventInteractive: Boolean,\n // only used by list-view, but languages define the value, so we need it in base options\n noEventsText: String,\n viewHint: identity,\n navLinkHint: identity,\n closeHint: String,\n timeHint: String,\n eventHint: String,\n moreLinkClick: identity,\n moreLinkClassNames: identity,\n moreLinkContent: identity,\n moreLinkDidMount: identity,\n moreLinkWillUnmount: identity,\n monthStartFormat: createFormatter,\n // for connectors\n // (can't be part of plugin system b/c must be provided at runtime)\n handleCustomRendering: identity,\n customRenderingMetaMap: identity,\n customRenderingReplaces: Boolean\n};\n// do NOT give a type here. need `typeof BASE_OPTION_DEFAULTS` to give real results.\n// raw values.\nconst BASE_OPTION_DEFAULTS = {\n eventDisplay: 'auto',\n defaultRangeSeparator: ' - ',\n titleRangeSeparator: ' \\u2013 ',\n defaultTimedEventDuration: '01:00:00',\n defaultAllDayEventDuration: {\n day: 1\n },\n forceEventDuration: false,\n nextDayThreshold: '00:00:00',\n dayHeaders: true,\n initialView: '',\n aspectRatio: 1.35,\n headerToolbar: {\n start: 'title',\n center: '',\n end: 'today prev,next'\n },\n weekends: true,\n weekNumbers: false,\n weekNumberCalculation: 'local',\n editable: false,\n nowIndicator: false,\n scrollTime: '06:00:00',\n scrollTimeReset: true,\n slotMinTime: '00:00:00',\n slotMaxTime: '24:00:00',\n showNonCurrentDates: true,\n lazyFetching: true,\n startParam: 'start',\n endParam: 'end',\n timeZoneParam: 'timeZone',\n timeZone: 'local',\n locales: [],\n locale: '',\n themeSystem: 'standard',\n dragRevertDuration: 500,\n dragScroll: true,\n allDayMaintainDuration: false,\n unselectAuto: true,\n dropAccept: '*',\n eventOrder: 'start,-duration,allDay,title',\n dayPopoverFormat: {\n month: 'long',\n day: 'numeric',\n year: 'numeric'\n },\n handleWindowResize: true,\n windowResizeDelay: 100,\n longPressDelay: 1000,\n eventDragMinDistance: 5,\n expandRows: false,\n navLinks: false,\n selectable: false,\n eventMinHeight: 15,\n eventMinWidth: 30,\n eventShortHeight: 30,\n monthStartFormat: {\n month: 'long',\n day: 'numeric'\n }\n};\n// calendar listeners\n// ------------------\nconst CALENDAR_LISTENER_REFINERS = {\n datesSet: identity,\n eventsSet: identity,\n eventAdd: identity,\n eventChange: identity,\n eventRemove: identity,\n windowResize: identity,\n eventClick: identity,\n eventMouseEnter: identity,\n eventMouseLeave: identity,\n select: identity,\n unselect: identity,\n loading: identity,\n // internal\n _unmount: identity,\n _beforeprint: identity,\n _afterprint: identity,\n _noEventDrop: identity,\n _noEventResize: identity,\n _resize: identity,\n _scrollRequest: identity\n};\n// calendar-specific options\n// -------------------------\nconst CALENDAR_OPTION_REFINERS = {\n buttonText: identity,\n buttonHints: identity,\n views: identity,\n plugins: identity,\n initialEvents: identity,\n events: identity,\n eventSources: identity\n};\nconst COMPLEX_OPTION_COMPARATORS = {\n headerToolbar: isMaybeObjectsEqual,\n footerToolbar: isMaybeObjectsEqual,\n buttonText: isMaybeObjectsEqual,\n buttonHints: isMaybeObjectsEqual,\n buttonIcons: isMaybeObjectsEqual,\n dateIncrement: isMaybeObjectsEqual,\n plugins: isMaybeArraysEqual,\n events: isMaybeArraysEqual,\n eventSources: isMaybeArraysEqual,\n ['resources']: isMaybeArraysEqual\n};\nfunction isMaybeObjectsEqual(a, b) {\n if (typeof a === 'object' && typeof b === 'object' && a && b) {\n // both non-null objects\n return isPropsEqual(a, b);\n }\n return a === b;\n}\nfunction isMaybeArraysEqual(a, b) {\n if (Array.isArray(a) && Array.isArray(b)) {\n return isArraysEqual(a, b);\n }\n return a === b;\n}\n// view-specific options\n// ---------------------\nconst VIEW_OPTION_REFINERS = {\n type: String,\n component: identity,\n buttonText: String,\n buttonTextKey: String,\n dateProfileGeneratorClass: identity,\n usesMinMaxTime: Boolean,\n classNames: identity,\n content: identity,\n didMount: identity,\n willUnmount: identity\n};\n// util funcs\n// ----------------------------------------------------------------------------------------------------\nfunction mergeRawOptions(optionSets) {\n return mergeProps(optionSets, COMPLEX_OPTION_COMPARATORS);\n}\nfunction refineProps(input, refiners) {\n let refined = {};\n let extra = {};\n for (let propName in refiners) {\n if (propName in input) {\n refined[propName] = refiners[propName](input[propName]);\n }\n }\n for (let propName in input) {\n if (!(propName in refiners)) {\n extra[propName] = input[propName];\n }\n }\n return {\n refined,\n extra\n };\n}\nfunction identity(raw) {\n return raw;\n}\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n// Merges an array of objects into a single object.\n// The second argument allows for an array of property names who's object values will be merged together.\nfunction mergeProps(propObjs, complexPropsMap) {\n let dest = {};\n if (complexPropsMap) {\n for (let name in complexPropsMap) {\n if (complexPropsMap[name] === isMaybeObjectsEqual) {\n // implies that it's object-mergeable\n let complexObjs = [];\n // collect the trailing object values, stopping when a non-object is discovered\n for (let i = propObjs.length - 1; i >= 0; i -= 1) {\n let val = propObjs[i][name];\n if (typeof val === 'object' && val) {\n // non-null object\n complexObjs.unshift(val);\n } else if (val !== undefined) {\n dest[name] = val; // if there were no objects, this value will be used\n break;\n }\n }\n // if the trailing values were objects, use the merged value\n if (complexObjs.length) {\n dest[name] = mergeProps(complexObjs);\n }\n }\n }\n }\n // copy values into the destination, going from last to first\n for (let i = propObjs.length - 1; i >= 0; i -= 1) {\n let props = propObjs[i];\n for (let name in props) {\n if (!(name in dest)) {\n // if already assigned by previous props or complex props, don't reassign\n dest[name] = props[name];\n }\n }\n }\n return dest;\n}\nfunction filterHash(hash, func) {\n let filtered = {};\n for (let key in hash) {\n if (func(hash[key], key)) {\n filtered[key] = hash[key];\n }\n }\n return filtered;\n}\nfunction mapHash(hash, func) {\n let newHash = {};\n for (let key in hash) {\n newHash[key] = func(hash[key], key);\n }\n return newHash;\n}\nfunction arrayToHash(a) {\n let hash = {};\n for (let item of a) {\n hash[item] = true;\n }\n return hash;\n}\n// TODO: reassess browser support\n// https://caniuse.com/?search=object.values\nfunction hashValuesToArray(obj) {\n let a = [];\n for (let key in obj) {\n a.push(obj[key]);\n }\n return a;\n}\nfunction isPropsEqual(obj0, obj1) {\n if (obj0 === obj1) {\n return true;\n }\n for (let key in obj0) {\n if (hasOwnProperty.call(obj0, key)) {\n if (!(key in obj1)) {\n return false;\n }\n }\n }\n for (let key in obj1) {\n if (hasOwnProperty.call(obj1, key)) {\n if (obj0[key] !== obj1[key]) {\n return false;\n }\n }\n }\n return true;\n}\nconst HANDLER_RE = /^on[A-Z]/;\nfunction isNonHandlerPropsEqual(obj0, obj1) {\n const keys = getUnequalProps(obj0, obj1);\n for (let key of keys) {\n if (!HANDLER_RE.test(key)) {\n return false;\n }\n }\n return true;\n}\nfunction getUnequalProps(obj0, obj1) {\n let keys = [];\n for (let key in obj0) {\n if (hasOwnProperty.call(obj0, key)) {\n if (!(key in obj1)) {\n keys.push(key);\n }\n }\n }\n for (let key in obj1) {\n if (hasOwnProperty.call(obj1, key)) {\n if (obj0[key] !== obj1[key]) {\n keys.push(key);\n }\n }\n }\n return keys;\n}\nfunction compareObjs(oldProps, newProps) {\n let equalityFuncs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (oldProps === newProps) {\n return true;\n }\n for (let key in newProps) {\n if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) ;else {\n return false;\n }\n }\n // check for props that were omitted in the new\n for (let key in oldProps) {\n if (!(key in newProps)) {\n return false;\n }\n }\n return true;\n}\n/*\nassumed \"true\" equality for handler names like \"onReceiveSomething\"\n*/\nfunction isObjValsEqual(val0, val1, comparator) {\n if (val0 === val1 || comparator === true) {\n return true;\n }\n if (comparator) {\n return comparator(val0, val1);\n }\n return false;\n}\nfunction collectFromHash(hash) {\n let startIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let endIndex = arguments.length > 2 ? arguments[2] : undefined;\n let step = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n let res = [];\n if (endIndex == null) {\n endIndex = Object.keys(hash).length;\n }\n for (let i = startIndex; i < endIndex; i += step) {\n let val = hash[i];\n if (val !== undefined) {\n // will disregard undefined for sparse arrays\n res.push(val);\n }\n }\n return res;\n}\nlet calendarSystemClassMap = {};\nfunction registerCalendarSystem(name, theClass) {\n calendarSystemClassMap[name] = theClass;\n}\nfunction createCalendarSystem(name) {\n return new calendarSystemClassMap[name]();\n}\nclass GregorianCalendarSystem {\n getMarkerYear(d) {\n return d.getUTCFullYear();\n }\n getMarkerMonth(d) {\n return d.getUTCMonth();\n }\n getMarkerDay(d) {\n return d.getUTCDate();\n }\n arrayToMarker(arr) {\n return arrayToUtcDate(arr);\n }\n markerToArray(marker) {\n return dateToUtcArray(marker);\n }\n}\nregisterCalendarSystem('gregory', GregorianCalendarSystem);\nconst ISO_RE = /^\\s*(\\d{4})(-?(\\d{2})(-?(\\d{2})([T ](\\d{2}):?(\\d{2})(:?(\\d{2})(\\.(\\d+))?)?(Z|(([-+])(\\d{2})(:?(\\d{2}))?))?)?)?)?$/;\nfunction parse(str) {\n let m = ISO_RE.exec(str);\n if (m) {\n let marker = new Date(Date.UTC(Number(m[1]), m[3] ? Number(m[3]) - 1 : 0, Number(m[5] || 1), Number(m[7] || 0), Number(m[8] || 0), Number(m[10] || 0), m[12] ? Number(`0.${m[12]}`) * 1000 : 0));\n if (isValidDate(marker)) {\n let timeZoneOffset = null;\n if (m[13]) {\n timeZoneOffset = (m[15] === '-' ? -1 : 1) * (Number(m[16] || 0) * 60 + Number(m[18] || 0));\n }\n return {\n marker,\n isTimeUnspecified: !m[6],\n timeZoneOffset\n };\n }\n }\n return null;\n}\nclass DateEnv {\n constructor(settings) {\n let timeZone = this.timeZone = settings.timeZone;\n let isNamedTimeZone = timeZone !== 'local' && timeZone !== 'UTC';\n if (settings.namedTimeZoneImpl && isNamedTimeZone) {\n this.namedTimeZoneImpl = new settings.namedTimeZoneImpl(timeZone);\n }\n this.canComputeOffset = Boolean(!isNamedTimeZone || this.namedTimeZoneImpl);\n this.calendarSystem = createCalendarSystem(settings.calendarSystem);\n this.locale = settings.locale;\n this.weekDow = settings.locale.week.dow;\n this.weekDoy = settings.locale.week.doy;\n if (settings.weekNumberCalculation === 'ISO') {\n this.weekDow = 1;\n this.weekDoy = 4;\n }\n if (typeof settings.firstDay === 'number') {\n this.weekDow = settings.firstDay;\n }\n if (typeof settings.weekNumberCalculation === 'function') {\n this.weekNumberFunc = settings.weekNumberCalculation;\n }\n this.weekText = settings.weekText != null ? settings.weekText : settings.locale.options.weekText;\n this.weekTextLong = (settings.weekTextLong != null ? settings.weekTextLong : settings.locale.options.weekTextLong) || this.weekText;\n this.cmdFormatter = settings.cmdFormatter;\n this.defaultSeparator = settings.defaultSeparator;\n }\n // Creating / Parsing\n createMarker(input) {\n let meta = this.createMarkerMeta(input);\n if (meta === null) {\n return null;\n }\n return meta.marker;\n }\n createNowMarker() {\n if (this.canComputeOffset) {\n return this.timestampToMarker(new Date().valueOf());\n }\n // if we can't compute the current date val for a timezone,\n // better to give the current local date vals than UTC\n return arrayToUtcDate(dateToLocalArray(new Date()));\n }\n createMarkerMeta(input) {\n if (typeof input === 'string') {\n return this.parse(input);\n }\n let marker = null;\n if (typeof input === 'number') {\n marker = this.timestampToMarker(input);\n } else if (input instanceof Date) {\n input = input.valueOf();\n if (!isNaN(input)) {\n marker = this.timestampToMarker(input);\n }\n } else if (Array.isArray(input)) {\n marker = arrayToUtcDate(input);\n }\n if (marker === null || !isValidDate(marker)) {\n return null;\n }\n return {\n marker,\n isTimeUnspecified: false,\n forcedTzo: null\n };\n }\n parse(s) {\n let parts = parse(s);\n if (parts === null) {\n return null;\n }\n let marker = parts.marker;\n let forcedTzo = null;\n if (parts.timeZoneOffset !== null) {\n if (this.canComputeOffset) {\n marker = this.timestampToMarker(marker.valueOf() - parts.timeZoneOffset * 60 * 1000);\n } else {\n forcedTzo = parts.timeZoneOffset;\n }\n }\n return {\n marker,\n isTimeUnspecified: parts.isTimeUnspecified,\n forcedTzo\n };\n }\n // Accessors\n getYear(marker) {\n return this.calendarSystem.getMarkerYear(marker);\n }\n getMonth(marker) {\n return this.calendarSystem.getMarkerMonth(marker);\n }\n getDay(marker) {\n return this.calendarSystem.getMarkerDay(marker);\n }\n // Adding / Subtracting\n add(marker, dur) {\n let a = this.calendarSystem.markerToArray(marker);\n a[0] += dur.years;\n a[1] += dur.months;\n a[2] += dur.days;\n a[6] += dur.milliseconds;\n return this.calendarSystem.arrayToMarker(a);\n }\n subtract(marker, dur) {\n let a = this.calendarSystem.markerToArray(marker);\n a[0] -= dur.years;\n a[1] -= dur.months;\n a[2] -= dur.days;\n a[6] -= dur.milliseconds;\n return this.calendarSystem.arrayToMarker(a);\n }\n addYears(marker, n) {\n let a = this.calendarSystem.markerToArray(marker);\n a[0] += n;\n return this.calendarSystem.arrayToMarker(a);\n }\n addMonths(marker, n) {\n let a = this.calendarSystem.markerToArray(marker);\n a[1] += n;\n return this.calendarSystem.arrayToMarker(a);\n }\n // Diffing Whole Units\n diffWholeYears(m0, m1) {\n let calendarSystem = this.calendarSystem;\n if (timeAsMs(m0) === timeAsMs(m1) && calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1) && calendarSystem.getMarkerMonth(m0) === calendarSystem.getMarkerMonth(m1)) {\n return calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0);\n }\n return null;\n }\n diffWholeMonths(m0, m1) {\n let calendarSystem = this.calendarSystem;\n if (timeAsMs(m0) === timeAsMs(m1) && calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1)) {\n return calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0) + (calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)) * 12;\n }\n return null;\n }\n // Range / Duration\n greatestWholeUnit(m0, m1) {\n let n = this.diffWholeYears(m0, m1);\n if (n !== null) {\n return {\n unit: 'year',\n value: n\n };\n }\n n = this.diffWholeMonths(m0, m1);\n if (n !== null) {\n return {\n unit: 'month',\n value: n\n };\n }\n n = diffWholeWeeks(m0, m1);\n if (n !== null) {\n return {\n unit: 'week',\n value: n\n };\n }\n n = diffWholeDays(m0, m1);\n if (n !== null) {\n return {\n unit: 'day',\n value: n\n };\n }\n n = diffHours(m0, m1);\n if (isInt(n)) {\n return {\n unit: 'hour',\n value: n\n };\n }\n n = diffMinutes(m0, m1);\n if (isInt(n)) {\n return {\n unit: 'minute',\n value: n\n };\n }\n n = diffSeconds(m0, m1);\n if (isInt(n)) {\n return {\n unit: 'second',\n value: n\n };\n }\n return {\n unit: 'millisecond',\n value: m1.valueOf() - m0.valueOf()\n };\n }\n countDurationsBetween(m0, m1, d) {\n // TODO: can use greatestWholeUnit\n let diff;\n if (d.years) {\n diff = this.diffWholeYears(m0, m1);\n if (diff !== null) {\n return diff / asRoughYears(d);\n }\n }\n if (d.months) {\n diff = this.diffWholeMonths(m0, m1);\n if (diff !== null) {\n return diff / asRoughMonths(d);\n }\n }\n if (d.days) {\n diff = diffWholeDays(m0, m1);\n if (diff !== null) {\n return diff / asRoughDays(d);\n }\n }\n return (m1.valueOf() - m0.valueOf()) / asRoughMs(d);\n }\n // Start-Of\n // these DON'T return zoned-dates. only UTC start-of dates\n startOf(m, unit) {\n if (unit === 'year') {\n return this.startOfYear(m);\n }\n if (unit === 'month') {\n return this.startOfMonth(m);\n }\n if (unit === 'week') {\n return this.startOfWeek(m);\n }\n if (unit === 'day') {\n return startOfDay(m);\n }\n if (unit === 'hour') {\n return startOfHour(m);\n }\n if (unit === 'minute') {\n return startOfMinute(m);\n }\n if (unit === 'second') {\n return startOfSecond(m);\n }\n return null;\n }\n startOfYear(m) {\n return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m)]);\n }\n startOfMonth(m) {\n return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m), this.calendarSystem.getMarkerMonth(m)]);\n }\n startOfWeek(m) {\n return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m), this.calendarSystem.getMarkerMonth(m), m.getUTCDate() - (m.getUTCDay() - this.weekDow + 7) % 7]);\n }\n // Week Number\n computeWeekNumber(marker) {\n if (this.weekNumberFunc) {\n return this.weekNumberFunc(this.toDate(marker));\n }\n return weekOfYear(marker, this.weekDow, this.weekDoy);\n }\n // TODO: choke on timeZoneName: long\n format(marker, formatter) {\n let dateOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return formatter.format({\n marker,\n timeZoneOffset: dateOptions.forcedTzo != null ? dateOptions.forcedTzo : this.offsetForMarker(marker)\n }, this);\n }\n formatRange(start, end, formatter) {\n let dateOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (dateOptions.isEndExclusive) {\n end = addMs(end, -1);\n }\n return formatter.formatRange({\n marker: start,\n timeZoneOffset: dateOptions.forcedStartTzo != null ? dateOptions.forcedStartTzo : this.offsetForMarker(start)\n }, {\n marker: end,\n timeZoneOffset: dateOptions.forcedEndTzo != null ? dateOptions.forcedEndTzo : this.offsetForMarker(end)\n }, this, dateOptions.defaultSeparator);\n }\n /*\n DUMB: the omitTime arg is dumb. if we omit the time, we want to omit the timezone offset. and if we do that,\n might as well use buildIsoString or some other util directly\n */\n formatIso(marker) {\n let extraOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let timeZoneOffset = null;\n if (!extraOptions.omitTimeZoneOffset) {\n if (extraOptions.forcedTzo != null) {\n timeZoneOffset = extraOptions.forcedTzo;\n } else {\n timeZoneOffset = this.offsetForMarker(marker);\n }\n }\n return buildIsoString(marker, timeZoneOffset, extraOptions.omitTime);\n }\n // TimeZone\n timestampToMarker(ms) {\n if (this.timeZone === 'local') {\n return arrayToUtcDate(dateToLocalArray(new Date(ms)));\n }\n if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) {\n return new Date(ms);\n }\n return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms));\n }\n offsetForMarker(m) {\n if (this.timeZone === 'local') {\n return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset(); // convert \"inverse\" offset to \"normal\" offset\n }\n if (this.timeZone === 'UTC') {\n return 0;\n }\n if (this.namedTimeZoneImpl) {\n return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m));\n }\n return null;\n }\n // Conversion\n toDate(m, forcedTzo) {\n if (this.timeZone === 'local') {\n return arrayToLocalDate(dateToUtcArray(m));\n }\n if (this.timeZone === 'UTC') {\n return new Date(m.valueOf()); // make sure it's a copy\n }\n if (!this.namedTimeZoneImpl) {\n return new Date(m.valueOf() - (forcedTzo || 0));\n }\n return new Date(m.valueOf() - this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60);\n }\n}\nclass Theme {\n constructor(calendarOptions) {\n if (this.iconOverrideOption) {\n this.setIconOverride(calendarOptions[this.iconOverrideOption]);\n }\n }\n setIconOverride(iconOverrideHash) {\n let iconClassesCopy;\n let buttonName;\n if (typeof iconOverrideHash === 'object' && iconOverrideHash) {\n // non-null object\n iconClassesCopy = Object.assign({}, this.iconClasses);\n for (buttonName in iconOverrideHash) {\n iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]);\n }\n this.iconClasses = iconClassesCopy;\n } else if (iconOverrideHash === false) {\n this.iconClasses = {};\n }\n }\n applyIconOverridePrefix(className) {\n let prefix = this.iconOverridePrefix;\n if (prefix && className.indexOf(prefix) !== 0) {\n // if not already present\n className = prefix + className;\n }\n return className;\n }\n getClass(key) {\n return this.classes[key] || '';\n }\n getIconClass(buttonName, isRtl) {\n let className;\n if (isRtl && this.rtlIconClasses) {\n className = this.rtlIconClasses[buttonName] || this.iconClasses[buttonName];\n } else {\n className = this.iconClasses[buttonName];\n }\n if (className) {\n return `${this.baseIconClass} ${className}`;\n }\n return '';\n }\n getCustomButtonIconClass(customButtonProps) {\n let className;\n if (this.iconOverrideCustomButtonOption) {\n className = customButtonProps[this.iconOverrideCustomButtonOption];\n if (className) {\n return `${this.baseIconClass} ${this.applyIconOverridePrefix(className)}`;\n }\n }\n return '';\n }\n}\nTheme.prototype.classes = {};\nTheme.prototype.iconClasses = {};\nTheme.prototype.baseIconClass = '';\nTheme.prototype.iconOverridePrefix = '';\n\n/*\nNOTE: this can be a public API, especially createElement for hooks.\nSee examples/typescript-scheduler/src/index.ts\n*/\nfunction flushSync(runBeforeFlush) {\n runBeforeFlush();\n let oldDebounceRendering = preact.options.debounceRendering; // orig\n let callbackQ = [];\n function execCallbackSync(callback) {\n callbackQ.push(callback);\n }\n preact.options.debounceRendering = execCallbackSync;\n preact.render(preact.createElement(FakeComponent, {}), document.createElement('div'));\n while (callbackQ.length) {\n callbackQ.shift()();\n }\n preact.options.debounceRendering = oldDebounceRendering;\n}\nclass FakeComponent extends preact.Component {\n render() {\n return preact.createElement('div', {});\n }\n componentDidMount() {\n this.setState({});\n }\n}\n// TODO: use preact/compat instead?\nfunction createContext(defaultValue) {\n let ContextType = preact.createContext(defaultValue);\n let origProvider = ContextType.Provider;\n ContextType.Provider = function () {\n let isNew = !this.getChildContext;\n let children = origProvider.apply(this, arguments); // eslint-disable-line prefer-rest-params\n if (isNew) {\n let subs = [];\n this.shouldComponentUpdate = _props => {\n if (this.props.value !== _props.value) {\n subs.forEach(c => {\n c.context = _props.value;\n c.forceUpdate();\n });\n }\n };\n this.sub = c => {\n subs.push(c);\n let old = c.componentWillUnmount;\n c.componentWillUnmount = () => {\n subs.splice(subs.indexOf(c), 1);\n old && old.call(c);\n };\n };\n }\n return children;\n };\n return ContextType;\n}\nclass ScrollResponder {\n constructor(execFunc, emitter, scrollTime, scrollTimeReset) {\n this.execFunc = execFunc;\n this.emitter = emitter;\n this.scrollTime = scrollTime;\n this.scrollTimeReset = scrollTimeReset;\n this.handleScrollRequest = request => {\n this.queuedRequest = Object.assign({}, this.queuedRequest || {}, request);\n this.drain();\n };\n emitter.on('_scrollRequest', this.handleScrollRequest);\n this.fireInitialScroll();\n }\n detach() {\n this.emitter.off('_scrollRequest', this.handleScrollRequest);\n }\n update(isDatesNew) {\n if (isDatesNew && this.scrollTimeReset) {\n this.fireInitialScroll(); // will drain\n } else {\n this.drain();\n }\n }\n fireInitialScroll() {\n this.handleScrollRequest({\n time: this.scrollTime\n });\n }\n drain() {\n if (this.queuedRequest && this.execFunc(this.queuedRequest)) {\n this.queuedRequest = null;\n }\n }\n}\nconst ViewContextType = createContext({}); // for Components\nfunction buildViewContext(viewSpec, viewApi, viewOptions, dateProfileGenerator, dateEnv, theme, pluginHooks, dispatch, getCurrentData, emitter, calendarApi, registerInteractiveComponent, unregisterInteractiveComponent) {\n return {\n dateEnv,\n options: viewOptions,\n pluginHooks,\n emitter,\n dispatch,\n getCurrentData,\n calendarApi,\n viewSpec,\n viewApi,\n dateProfileGenerator,\n theme,\n isRtl: viewOptions.direction === 'rtl',\n addResizeHandler(handler) {\n emitter.on('_resize', handler);\n },\n removeResizeHandler(handler) {\n emitter.off('_resize', handler);\n },\n createScrollResponder(execFunc) {\n return new ScrollResponder(execFunc, emitter, createDuration(viewOptions.scrollTime), viewOptions.scrollTimeReset);\n },\n registerInteractiveComponent,\n unregisterInteractiveComponent\n };\n}\n\n/* eslint max-classes-per-file: off */\nclass PureComponent extends Component {\n shouldComponentUpdate(nextProps, nextState) {\n if (this.debug) {\n // eslint-disable-next-line no-console\n console.log(getUnequalProps(nextProps, this.props), getUnequalProps(nextState, this.state));\n }\n return !compareObjs(this.props, nextProps, this.propEquality) || !compareObjs(this.state, nextState, this.stateEquality);\n }\n // HACK for freakin' React StrictMode\n safeSetState(newState) {\n if (!compareObjs(this.state, Object.assign(Object.assign({}, this.state), newState), this.stateEquality)) {\n this.setState(newState);\n }\n }\n}\nPureComponent.addPropsEquality = addPropsEquality;\nPureComponent.addStateEquality = addStateEquality;\nPureComponent.contextType = ViewContextType;\nPureComponent.prototype.propEquality = {};\nPureComponent.prototype.stateEquality = {};\nclass BaseComponent extends PureComponent {}\nBaseComponent.contextType = ViewContextType;\nfunction addPropsEquality(propEquality) {\n let hash = Object.create(this.prototype.propEquality);\n Object.assign(hash, propEquality);\n this.prototype.propEquality = hash;\n}\nfunction addStateEquality(stateEquality) {\n let hash = Object.create(this.prototype.stateEquality);\n Object.assign(hash, stateEquality);\n this.prototype.stateEquality = hash;\n}\n// use other one\nfunction setRef(ref, current) {\n if (typeof ref === 'function') {\n ref(current);\n } else if (ref) {\n // see https://github.com/facebook/react/issues/13029\n ref.current = current;\n }\n}\nclass ContentInjector extends BaseComponent {\n constructor() {\n super(...arguments);\n this.id = guid();\n this.queuedDomNodes = [];\n this.currentDomNodes = [];\n this.handleEl = el => {\n const options = this.context.options;\n const generatorName = this.props.generatorName;\n if (!options.customRenderingReplaces || !hasCustomRenderingHandler(generatorName, options)) {\n this.updateElRef(el);\n }\n };\n this.updateElRef = el => {\n if (this.props.elRef) {\n setRef(this.props.elRef, el);\n }\n };\n }\n render() {\n const props = this.props,\n context = this.context;\n const options = context.options;\n const customGenerator = props.customGenerator,\n defaultGenerator = props.defaultGenerator,\n renderProps = props.renderProps;\n const attrs = buildElAttrs(props, [], this.handleEl);\n let useDefault = false;\n let innerContent;\n let queuedDomNodes = [];\n let currentGeneratorMeta;\n if (customGenerator != null) {\n const customGeneratorRes = typeof customGenerator === 'function' ? customGenerator(renderProps, createElement) : customGenerator;\n if (customGeneratorRes === true) {\n useDefault = true;\n } else {\n const isObject = customGeneratorRes && typeof customGeneratorRes === 'object'; // non-null\n if (isObject && 'html' in customGeneratorRes) {\n attrs.dangerouslySetInnerHTML = {\n __html: customGeneratorRes.html\n };\n } else if (isObject && 'domNodes' in customGeneratorRes) {\n queuedDomNodes = Array.prototype.slice.call(customGeneratorRes.domNodes);\n } else if (isObject ? isValidElement(customGeneratorRes) // vdom node\n : typeof customGeneratorRes !== 'function' // primitive value (like string or number)\n ) {\n // use in vdom\n innerContent = customGeneratorRes;\n } else {\n // an exotic object for handleCustomRendering\n currentGeneratorMeta = customGeneratorRes;\n }\n }\n } else {\n useDefault = !hasCustomRenderingHandler(props.generatorName, options);\n }\n if (useDefault && defaultGenerator) {\n innerContent = defaultGenerator(renderProps);\n }\n this.queuedDomNodes = queuedDomNodes;\n this.currentGeneratorMeta = currentGeneratorMeta;\n return createElement(props.elTag, attrs, innerContent);\n }\n componentDidMount() {\n this.applyQueueudDomNodes();\n this.triggerCustomRendering(true);\n }\n componentDidUpdate() {\n this.applyQueueudDomNodes();\n this.triggerCustomRendering(true);\n }\n componentWillUnmount() {\n this.triggerCustomRendering(false); // TODO: different API for removal?\n }\n triggerCustomRendering(isActive) {\n var _a;\n const props = this.props,\n context = this.context;\n const _context$options = context.options,\n handleCustomRendering = _context$options.handleCustomRendering,\n customRenderingMetaMap = _context$options.customRenderingMetaMap;\n if (handleCustomRendering) {\n const generatorMeta = (_a = this.currentGeneratorMeta) !== null && _a !== void 0 ? _a : customRenderingMetaMap === null || customRenderingMetaMap === void 0 ? void 0 : customRenderingMetaMap[props.generatorName];\n if (generatorMeta) {\n handleCustomRendering(Object.assign(Object.assign({\n id: this.id,\n isActive,\n containerEl: this.base,\n reportNewContainerEl: this.updateElRef,\n // front-end framework tells us about new container els\n generatorMeta\n }, props), {\n elClasses: (props.elClasses || []).filter(isTruthy)\n }));\n }\n }\n }\n applyQueueudDomNodes() {\n const queuedDomNodes = this.queuedDomNodes,\n currentDomNodes = this.currentDomNodes;\n const el = this.base;\n if (!isArraysEqual(queuedDomNodes, currentDomNodes)) {\n currentDomNodes.forEach(removeElement);\n for (let newNode of queuedDomNodes) {\n el.appendChild(newNode);\n }\n this.currentDomNodes = queuedDomNodes;\n }\n }\n}\nContentInjector.addPropsEquality({\n elClasses: isArraysEqual,\n elStyle: isPropsEqual,\n elAttrs: isNonHandlerPropsEqual,\n renderProps: isPropsEqual\n});\n// Util\n/*\nDoes UI-framework provide custom way of rendering that does not use Preact VDOM\nAND does the calendar's options define custom rendering?\nAKA. Should we NOT render the default content?\n*/\nfunction hasCustomRenderingHandler(generatorName, options) {\n var _a;\n return Boolean(options.handleCustomRendering && generatorName && ((_a = options.customRenderingMetaMap) === null || _a === void 0 ? void 0 : _a[generatorName]));\n}\nfunction buildElAttrs(props, extraClassNames, elRef) {\n const attrs = Object.assign(Object.assign({}, props.elAttrs), {\n ref: elRef\n });\n if (props.elClasses || extraClassNames) {\n attrs.className = (props.elClasses || []).concat(extraClassNames || []).concat(attrs.className || []).filter(Boolean).join(' ');\n }\n if (props.elStyle) {\n attrs.style = props.elStyle;\n }\n return attrs;\n}\nfunction isTruthy(val) {\n return Boolean(val);\n}\nconst RenderId = createContext(0);\nclass ContentContainer extends Component {\n constructor() {\n super(...arguments);\n this.InnerContent = InnerContentInjector.bind(undefined, this);\n this.handleEl = el => {\n this.el = el;\n if (this.props.elRef) {\n setRef(this.props.elRef, el);\n if (el && this.didMountMisfire) {\n this.componentDidMount();\n }\n }\n };\n }\n render() {\n const props = this.props;\n const generatedClassNames = generateClassNames(props.classNameGenerator, props.renderProps);\n if (props.children) {\n const elAttrs = buildElAttrs(props, generatedClassNames, this.handleEl);\n const children = props.children(this.InnerContent, props.renderProps, elAttrs);\n if (props.elTag) {\n return createElement(props.elTag, elAttrs, children);\n } else {\n return children;\n }\n } else {\n return createElement(ContentInjector, Object.assign(Object.assign({}, props), {\n elRef: this.handleEl,\n elTag: props.elTag || 'div',\n elClasses: (props.elClasses || []).concat(generatedClassNames),\n renderId: this.context\n }));\n }\n }\n componentDidMount() {\n var _a, _b;\n if (this.el) {\n (_b = (_a = this.props).didMount) === null || _b === void 0 ? void 0 : _b.call(_a, Object.assign(Object.assign({}, this.props.renderProps), {\n el: this.el\n }));\n } else {\n this.didMountMisfire = true;\n }\n }\n componentWillUnmount() {\n var _a, _b;\n (_b = (_a = this.props).willUnmount) === null || _b === void 0 ? void 0 : _b.call(_a, Object.assign(Object.assign({}, this.props.renderProps), {\n el: this.el\n }));\n }\n}\nContentContainer.contextType = RenderId;\nfunction InnerContentInjector(containerComponent, props) {\n const parentProps = containerComponent.props;\n return createElement(ContentInjector, Object.assign({\n renderProps: parentProps.renderProps,\n generatorName: parentProps.generatorName,\n customGenerator: parentProps.customGenerator,\n defaultGenerator: parentProps.defaultGenerator,\n renderId: containerComponent.context\n }, props));\n}\n// Utils\nfunction generateClassNames(classNameGenerator, renderProps) {\n const classNames = typeof classNameGenerator === 'function' ? classNameGenerator(renderProps) : classNameGenerator || [];\n return typeof classNames === 'string' ? [classNames] : classNames;\n}\nclass ViewContainer extends BaseComponent {\n render() {\n let props = this.props,\n context = this.context;\n let options = context.options;\n let renderProps = {\n view: context.viewApi\n };\n return createElement(ContentContainer, Object.assign({}, props, {\n elTag: props.elTag || 'div',\n elClasses: [...buildViewClassNames(props.viewSpec), ...(props.elClasses || [])],\n renderProps: renderProps,\n classNameGenerator: options.viewClassNames,\n generatorName: undefined,\n didMount: options.viewDidMount,\n willUnmount: options.viewWillUnmount\n }), () => props.children);\n }\n}\nfunction buildViewClassNames(viewSpec) {\n return [`fc-${viewSpec.type}-view`, 'fc-view'];\n}\nfunction parseRange(input, dateEnv) {\n let start = null;\n let end = null;\n if (input.start) {\n start = dateEnv.createMarker(input.start);\n }\n if (input.end) {\n end = dateEnv.createMarker(input.end);\n }\n if (!start && !end) {\n return null;\n }\n if (start && end && end < start) {\n return null;\n }\n return {\n start,\n end\n };\n}\n// SIDE-EFFECT: will mutate ranges.\n// Will return a new array result.\nfunction invertRanges(ranges, constraintRange) {\n let invertedRanges = [];\n let start = constraintRange.start; // the end of the previous range. the start of the new range\n let i;\n let dateRange;\n // ranges need to be in order. required for our date-walking algorithm\n ranges.sort(compareRanges);\n for (i = 0; i < ranges.length; i += 1) {\n dateRange = ranges[i];\n // add the span of time before the event (if there is any)\n if (dateRange.start > start) {\n // compare millisecond time (skip any ambig logic)\n invertedRanges.push({\n start,\n end: dateRange.start\n });\n }\n if (dateRange.end > start) {\n start = dateRange.end;\n }\n }\n // add the span of time after the last event (if there is any)\n if (start < constraintRange.end) {\n // compare millisecond time (skip any ambig logic)\n invertedRanges.push({\n start,\n end: constraintRange.end\n });\n }\n return invertedRanges;\n}\nfunction compareRanges(range0, range1) {\n return range0.start.valueOf() - range1.start.valueOf(); // earlier ranges go first\n}\nfunction intersectRanges(range0, range1) {\n let start = range0.start,\n end = range0.end;\n let newRange = null;\n if (range1.start !== null) {\n if (start === null) {\n start = range1.start;\n } else {\n start = new Date(Math.max(start.valueOf(), range1.start.valueOf()));\n }\n }\n if (range1.end != null) {\n if (end === null) {\n end = range1.end;\n } else {\n end = new Date(Math.min(end.valueOf(), range1.end.valueOf()));\n }\n }\n if (start === null || end === null || start < end) {\n newRange = {\n start,\n end\n };\n }\n return newRange;\n}\nfunction rangesEqual(range0, range1) {\n return (range0.start === null ? null : range0.start.valueOf()) === (range1.start === null ? null : range1.start.valueOf()) && (range0.end === null ? null : range0.end.valueOf()) === (range1.end === null ? null : range1.end.valueOf());\n}\nfunction rangesIntersect(range0, range1) {\n return (range0.end === null || range1.start === null || range0.end > range1.start) && (range0.start === null || range1.end === null || range0.start < range1.end);\n}\nfunction rangeContainsRange(outerRange, innerRange) {\n return (outerRange.start === null || innerRange.start !== null && innerRange.start >= outerRange.start) && (outerRange.end === null || innerRange.end !== null && innerRange.end <= outerRange.end);\n}\nfunction rangeContainsMarker(range, date) {\n return (range.start === null || date >= range.start) && (range.end === null || date < range.end);\n}\n// If the given date is not within the given range, move it inside.\n// (If it's past the end, make it one millisecond before the end).\nfunction constrainMarkerToRange(date, range) {\n if (range.start != null && date < range.start) {\n return range.start;\n }\n if (range.end != null && date >= range.end) {\n return new Date(range.end.valueOf() - 1);\n }\n return date;\n}\n\n/* Date stuff that doesn't belong in datelib core\n----------------------------------------------------------------------------------------------------------------------*/\n// given a timed range, computes an all-day range that has the same exact duration,\n// but whose start time is aligned with the start of the day.\nfunction computeAlignedDayRange(timedRange) {\n let dayCnt = Math.floor(diffDays(timedRange.start, timedRange.end)) || 1;\n let start = startOfDay(timedRange.start);\n let end = addDays(start, dayCnt);\n return {\n start,\n end\n };\n}\n// given a timed range, computes an all-day range based on how for the end date bleeds into the next day\n// TODO: give nextDayThreshold a default arg\nfunction computeVisibleDayRange(timedRange) {\n let nextDayThreshold = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createDuration(0);\n let startDay = null;\n let endDay = null;\n if (timedRange.end) {\n endDay = startOfDay(timedRange.end);\n let endTimeMS = timedRange.end.valueOf() - endDay.valueOf(); // # of milliseconds into `endDay`\n // If the end time is actually inclusively part of the next day and is equal to or\n // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.\n // Otherwise, leaving it as inclusive will cause it to exclude `endDay`.\n if (endTimeMS && endTimeMS >= asRoughMs(nextDayThreshold)) {\n endDay = addDays(endDay, 1);\n }\n }\n if (timedRange.start) {\n startDay = startOfDay(timedRange.start); // the beginning of the day the range starts\n // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day.\n if (endDay && endDay <= startDay) {\n endDay = addDays(startDay, 1);\n }\n }\n return {\n start: startDay,\n end: endDay\n };\n}\n// spans from one day into another?\nfunction isMultiDayRange(range) {\n let visibleRange = computeVisibleDayRange(range);\n return diffDays(visibleRange.start, visibleRange.end) > 1;\n}\nfunction diffDates(date0, date1, dateEnv, largeUnit) {\n if (largeUnit === 'year') {\n return createDuration(dateEnv.diffWholeYears(date0, date1), 'year');\n }\n if (largeUnit === 'month') {\n return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month');\n }\n return diffDayAndTime(date0, date1); // returns a duration\n}\nfunction reduceCurrentDate(currentDate, action) {\n switch (action.type) {\n case 'CHANGE_DATE':\n return action.dateMarker;\n default:\n return currentDate;\n }\n}\nfunction getInitialDate(options, dateEnv) {\n let initialDateInput = options.initialDate;\n // compute the initial ambig-timezone date\n if (initialDateInput != null) {\n return dateEnv.createMarker(initialDateInput);\n }\n return getNow(options.now, dateEnv); // getNow already returns unzoned\n}\nfunction getNow(nowInput, dateEnv) {\n if (typeof nowInput === 'function') {\n nowInput = nowInput();\n }\n if (nowInput == null) {\n return dateEnv.createNowMarker();\n }\n return dateEnv.createMarker(nowInput);\n}\nclass DateProfileGenerator {\n constructor(props) {\n this.props = props;\n this.nowDate = getNow(props.nowInput, props.dateEnv);\n this.initHiddenDays();\n }\n /* Date Range Computation\n ------------------------------------------------------------------------------------------------------------------*/\n // Builds a structure with info about what the dates/ranges will be for the \"prev\" view.\n buildPrev(currentDateProfile, currentDate, forceToValid) {\n let dateEnv = this.props.dateEnv;\n let prevDate = dateEnv.subtract(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit),\n // important for start-of-month\n currentDateProfile.dateIncrement);\n return this.build(prevDate, -1, forceToValid);\n }\n // Builds a structure with info about what the dates/ranges will be for the \"next\" view.\n buildNext(currentDateProfile, currentDate, forceToValid) {\n let dateEnv = this.props.dateEnv;\n let nextDate = dateEnv.add(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit),\n // important for start-of-month\n currentDateProfile.dateIncrement);\n return this.build(nextDate, 1, forceToValid);\n }\n // Builds a structure holding dates/ranges for rendering around the given date.\n // Optional direction param indicates whether the date is being incremented/decremented\n // from its previous value. decremented = -1, incremented = 1 (default).\n build(currentDate, direction) {\n let forceToValid = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n let props = this.props;\n let validRange;\n let currentInfo;\n let isRangeAllDay;\n let renderRange;\n let activeRange;\n let isValid;\n validRange = this.buildValidRange();\n validRange = this.trimHiddenDays(validRange);\n if (forceToValid) {\n currentDate = constrainMarkerToRange(currentDate, validRange);\n }\n currentInfo = this.buildCurrentRangeInfo(currentDate, direction);\n isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit);\n renderRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.range), currentInfo.unit, isRangeAllDay);\n renderRange = this.trimHiddenDays(renderRange);\n activeRange = renderRange;\n if (!props.showNonCurrentDates) {\n activeRange = intersectRanges(activeRange, currentInfo.range);\n }\n activeRange = this.adjustActiveRange(activeRange);\n activeRange = intersectRanges(activeRange, validRange); // might return null\n // it's invalid if the originally requested date is not contained,\n // or if the range is completely outside of the valid range.\n isValid = rangesIntersect(currentInfo.range, validRange);\n // HACK: constrain to render-range so `currentDate` is more useful to view rendering\n if (!rangeContainsMarker(renderRange, currentDate)) {\n currentDate = renderRange.start;\n }\n return {\n currentDate,\n // constraint for where prev/next operations can go and where events can be dragged/resized to.\n // an object with optional start and end properties.\n validRange,\n // range the view is formally responsible for.\n // for example, a month view might have 1st-31st, excluding padded dates\n currentRange: currentInfo.range,\n // name of largest unit being displayed, like \"month\" or \"week\"\n currentRangeUnit: currentInfo.unit,\n isRangeAllDay,\n // dates that display events and accept drag-n-drop\n // will be `null` if no dates accept events\n activeRange,\n // date range with a rendered skeleton\n // includes not-active days that need some sort of DOM\n renderRange,\n // Duration object that denotes the first visible time of any given day\n slotMinTime: props.slotMinTime,\n // Duration object that denotes the exclusive visible end time of any given day\n slotMaxTime: props.slotMaxTime,\n isValid,\n // how far the current date will move for a prev/next operation\n dateIncrement: this.buildDateIncrement(currentInfo.duration)\n // pass a fallback (might be null) ^\n };\n }\n // Builds an object with optional start/end properties.\n // Indicates the minimum/maximum dates to display.\n // not responsible for trimming hidden days.\n buildValidRange() {\n let input = this.props.validRangeInput;\n let simpleInput = typeof input === 'function' ? input.call(this.props.calendarApi, this.nowDate) : input;\n return this.refineRange(simpleInput) || {\n start: null,\n end: null\n }; // completely open-ended\n }\n // Builds a structure with info about the \"current\" range, the range that is\n // highlighted as being the current month for example.\n // See build() for a description of `direction`.\n // Guaranteed to have `range` and `unit` properties. `duration` is optional.\n buildCurrentRangeInfo(date, direction) {\n let props = this.props;\n let duration = null;\n let unit = null;\n let range = null;\n let dayCount;\n if (props.duration) {\n duration = props.duration;\n unit = props.durationUnit;\n range = this.buildRangeFromDuration(date, direction, duration, unit);\n } else if (dayCount = this.props.dayCount) {\n unit = 'day';\n range = this.buildRangeFromDayCount(date, direction, dayCount);\n } else if (range = this.buildCustomVisibleRange(date)) {\n unit = props.dateEnv.greatestWholeUnit(range.start, range.end).unit;\n } else {\n duration = this.getFallbackDuration();\n unit = greatestDurationDenominator(duration).unit;\n range = this.buildRangeFromDuration(date, direction, duration, unit);\n }\n return {\n duration,\n unit,\n range\n };\n }\n getFallbackDuration() {\n return createDuration({\n day: 1\n });\n }\n // Returns a new activeRange to have time values (un-ambiguate)\n // slotMinTime or slotMaxTime causes the range to expand.\n adjustActiveRange(range) {\n let _this$props = this.props,\n dateEnv = _this$props.dateEnv,\n usesMinMaxTime = _this$props.usesMinMaxTime,\n slotMinTime = _this$props.slotMinTime,\n slotMaxTime = _this$props.slotMaxTime;\n let start = range.start,\n end = range.end;\n if (usesMinMaxTime) {\n // expand active range if slotMinTime is negative (why not when positive?)\n if (asRoughDays(slotMinTime) < 0) {\n start = startOfDay(start); // necessary?\n start = dateEnv.add(start, slotMinTime);\n }\n // expand active range if slotMaxTime is beyond one day (why not when negative?)\n if (asRoughDays(slotMaxTime) > 1) {\n end = startOfDay(end); // necessary?\n end = addDays(end, -1);\n end = dateEnv.add(end, slotMaxTime);\n }\n }\n return {\n start,\n end\n };\n }\n // Builds the \"current\" range when it is specified as an explicit duration.\n // `unit` is the already-computed greatestDurationDenominator unit of duration.\n buildRangeFromDuration(date, direction, duration, unit) {\n let _this$props2 = this.props,\n dateEnv = _this$props2.dateEnv,\n dateAlignment = _this$props2.dateAlignment;\n let start;\n let end;\n let res;\n // compute what the alignment should be\n if (!dateAlignment) {\n let dateIncrement = this.props.dateIncrement;\n if (dateIncrement) {\n // use the smaller of the two units\n if (asRoughMs(dateIncrement) < asRoughMs(duration)) {\n dateAlignment = greatestDurationDenominator(dateIncrement).unit;\n } else {\n dateAlignment = unit;\n }\n } else {\n dateAlignment = unit;\n }\n }\n // if the view displays a single day or smaller\n if (asRoughDays(duration) <= 1) {\n if (this.isHiddenDay(start)) {\n start = this.skipHiddenDays(start, direction);\n start = startOfDay(start);\n }\n }\n function computeRes() {\n start = dateEnv.startOf(date, dateAlignment);\n end = dateEnv.add(start, duration);\n res = {\n start,\n end\n };\n }\n computeRes();\n // if range is completely enveloped by hidden days, go past the hidden days\n if (!this.trimHiddenDays(res)) {\n date = this.skipHiddenDays(date, direction);\n computeRes();\n }\n return res;\n }\n // Builds the \"current\" range when a dayCount is specified.\n buildRangeFromDayCount(date, direction, dayCount) {\n let _this$props3 = this.props,\n dateEnv = _this$props3.dateEnv,\n dateAlignment = _this$props3.dateAlignment;\n let runningCount = 0;\n let start = date;\n let end;\n if (dateAlignment) {\n start = dateEnv.startOf(start, dateAlignment);\n }\n start = startOfDay(start);\n start = this.skipHiddenDays(start, direction);\n end = start;\n do {\n end = addDays(end, 1);\n if (!this.isHiddenDay(end)) {\n runningCount += 1;\n }\n } while (runningCount < dayCount);\n return {\n start,\n end\n };\n }\n // Builds a normalized range object for the \"visible\" range,\n // which is a way to define the currentRange and activeRange at the same time.\n buildCustomVisibleRange(date) {\n let props = this.props;\n let input = props.visibleRangeInput;\n let simpleInput = typeof input === 'function' ? input.call(props.calendarApi, props.dateEnv.toDate(date)) : input;\n let range = this.refineRange(simpleInput);\n if (range && (range.start == null || range.end == null)) {\n return null;\n }\n return range;\n }\n // Computes the range that will represent the element/cells for *rendering*,\n // but which may have voided days/times.\n // not responsible for trimming hidden days.\n buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay) {\n return currentRange;\n }\n // Compute the duration value that should be added/substracted to the current date\n // when a prev/next operation happens.\n buildDateIncrement(fallback) {\n let dateIncrement = this.props.dateIncrement;\n let customAlignment;\n if (dateIncrement) {\n return dateIncrement;\n }\n if (customAlignment = this.props.dateAlignment) {\n return createDuration(1, customAlignment);\n }\n if (fallback) {\n return fallback;\n }\n return createDuration({\n days: 1\n });\n }\n refineRange(rangeInput) {\n if (rangeInput) {\n let range = parseRange(rangeInput, this.props.dateEnv);\n if (range) {\n range = computeVisibleDayRange(range);\n }\n return range;\n }\n return null;\n }\n /* Hidden Days\n ------------------------------------------------------------------------------------------------------------------*/\n // Initializes internal variables related to calculating hidden days-of-week\n initHiddenDays() {\n let hiddenDays = this.props.hiddenDays || []; // array of day-of-week indices that are hidden\n let isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool)\n let dayCnt = 0;\n let i;\n if (this.props.weekends === false) {\n hiddenDays.push(0, 6); // 0=sunday, 6=saturday\n }\n for (i = 0; i < 7; i += 1) {\n if (!(isHiddenDayHash[i] = hiddenDays.indexOf(i) !== -1)) {\n dayCnt += 1;\n }\n }\n if (!dayCnt) {\n throw new Error('invalid hiddenDays'); // all days were hidden? bad.\n }\n this.isHiddenDayHash = isHiddenDayHash;\n }\n // Remove days from the beginning and end of the range that are computed as hidden.\n // If the whole range is trimmed off, returns null\n trimHiddenDays(range) {\n let start = range.start,\n end = range.end;\n if (start) {\n start = this.skipHiddenDays(start);\n }\n if (end) {\n end = this.skipHiddenDays(end, -1, true);\n }\n if (start == null || end == null || start < end) {\n return {\n start,\n end\n };\n }\n return null;\n }\n // Is the current day hidden?\n // `day` is a day-of-week index (0-6), or a Date (used for UTC)\n isHiddenDay(day) {\n if (day instanceof Date) {\n day = day.getUTCDay();\n }\n return this.isHiddenDayHash[day];\n }\n // Incrementing the current day until it is no longer a hidden day, returning a copy.\n // DOES NOT CONSIDER validRange!\n // If the initial value of `date` is not a hidden day, don't do anything.\n // Pass `isExclusive` as `true` if you are dealing with an end date.\n // `inc` defaults to `1` (increment one day forward each time)\n skipHiddenDays(date) {\n let inc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n let isExclusive = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n while (this.isHiddenDayHash[(date.getUTCDay() + (isExclusive ? inc : 0) + 7) % 7]) {\n date = addDays(date, inc);\n }\n return date;\n }\n}\nfunction createEventInstance(defId, range, forcedStartTzo, forcedEndTzo) {\n return {\n instanceId: guid(),\n defId,\n range,\n forcedStartTzo: forcedStartTzo == null ? null : forcedStartTzo,\n forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo\n };\n}\nfunction parseRecurring(refined, defaultAllDay, dateEnv, recurringTypes) {\n for (let i = 0; i < recurringTypes.length; i += 1) {\n let parsed = recurringTypes[i].parse(refined, dateEnv);\n if (parsed) {\n let allDay = refined.allDay;\n if (allDay == null) {\n allDay = defaultAllDay;\n if (allDay == null) {\n allDay = parsed.allDayGuess;\n if (allDay == null) {\n allDay = false;\n }\n }\n }\n return {\n allDay,\n duration: parsed.duration,\n typeData: parsed.typeData,\n typeId: i\n };\n }\n }\n return null;\n}\nfunction expandRecurring(eventStore, framingRange, context) {\n let dateEnv = context.dateEnv,\n pluginHooks = context.pluginHooks,\n options = context.options;\n let defs = eventStore.defs,\n instances = eventStore.instances;\n // remove existing recurring instances\n // TODO: bad. always expand events as a second step\n instances = filterHash(instances, instance => !defs[instance.defId].recurringDef);\n for (let defId in defs) {\n let def = defs[defId];\n if (def.recurringDef) {\n let duration = def.recurringDef.duration;\n if (!duration) {\n duration = def.allDay ? options.defaultAllDayEventDuration : options.defaultTimedEventDuration;\n }\n let starts = expandRecurringRanges(def, duration, framingRange, dateEnv, pluginHooks.recurringTypes);\n for (let start of starts) {\n let instance = createEventInstance(defId, {\n start,\n end: dateEnv.add(start, duration)\n });\n instances[instance.instanceId] = instance;\n }\n }\n }\n return {\n defs,\n instances\n };\n}\n/*\nEvent MUST have a recurringDef\n*/\nfunction expandRecurringRanges(eventDef, duration, framingRange, dateEnv, recurringTypes) {\n let typeDef = recurringTypes[eventDef.recurringDef.typeId];\n let markers = typeDef.expand(eventDef.recurringDef.typeData, {\n start: dateEnv.subtract(framingRange.start, duration),\n end: framingRange.end\n }, dateEnv);\n // the recurrence plugins don't guarantee that all-day events are start-of-day, so we have to\n if (eventDef.allDay) {\n markers = markers.map(startOfDay);\n }\n return markers;\n}\nconst EVENT_NON_DATE_REFINERS = {\n id: String,\n groupId: String,\n title: String,\n url: String,\n interactive: Boolean\n};\nconst EVENT_DATE_REFINERS = {\n start: identity,\n end: identity,\n date: identity,\n allDay: Boolean\n};\nconst EVENT_REFINERS = Object.assign(Object.assign(Object.assign({}, EVENT_NON_DATE_REFINERS), EVENT_DATE_REFINERS), {\n extendedProps: identity\n});\nfunction parseEvent(raw, eventSource, context, allowOpenRange) {\n let refiners = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : buildEventRefiners(context);\n let defIdMap = arguments.length > 5 ? arguments[5] : undefined;\n let instanceIdMap = arguments.length > 6 ? arguments[6] : undefined;\n let _refineEventDef = refineEventDef(raw, context, refiners),\n refined = _refineEventDef.refined,\n extra = _refineEventDef.extra;\n let defaultAllDay = computeIsDefaultAllDay(eventSource, context);\n let recurringRes = parseRecurring(refined, defaultAllDay, context.dateEnv, context.pluginHooks.recurringTypes);\n if (recurringRes) {\n let def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', recurringRes.allDay, Boolean(recurringRes.duration), context, defIdMap);\n def.recurringDef = {\n typeId: recurringRes.typeId,\n typeData: recurringRes.typeData,\n duration: recurringRes.duration\n };\n return {\n def,\n instance: null\n };\n }\n let singleRes = parseSingle(refined, defaultAllDay, context, allowOpenRange);\n if (singleRes) {\n let def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', singleRes.allDay, singleRes.hasEnd, context, defIdMap);\n let instance = createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo);\n if (instanceIdMap && def.publicId && instanceIdMap[def.publicId]) {\n instance.instanceId = instanceIdMap[def.publicId];\n }\n return {\n def,\n instance\n };\n }\n return null;\n}\nfunction refineEventDef(raw, context) {\n let refiners = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : buildEventRefiners(context);\n return refineProps(raw, refiners);\n}\nfunction buildEventRefiners(context) {\n return Object.assign(Object.assign(Object.assign({}, EVENT_UI_REFINERS), EVENT_REFINERS), context.pluginHooks.eventRefiners);\n}\n/*\nWill NOT populate extendedProps with the leftover properties.\nWill NOT populate date-related props.\n*/\nfunction parseEventDef(refined, extra, sourceId, allDay, hasEnd, context, defIdMap) {\n let def = {\n title: refined.title || '',\n groupId: refined.groupId || '',\n publicId: refined.id || '',\n url: refined.url || '',\n recurringDef: null,\n defId: (defIdMap && refined.id ? defIdMap[refined.id] : '') || guid(),\n sourceId,\n allDay,\n hasEnd,\n interactive: refined.interactive,\n ui: createEventUi(refined, context),\n extendedProps: Object.assign(Object.assign({}, refined.extendedProps || {}), extra)\n };\n for (let memberAdder of context.pluginHooks.eventDefMemberAdders) {\n Object.assign(def, memberAdder(refined));\n }\n // help out EventImpl from having user modify props\n Object.freeze(def.ui.classNames);\n Object.freeze(def.extendedProps);\n return def;\n}\nfunction parseSingle(refined, defaultAllDay, context, allowOpenRange) {\n let allDay = refined.allDay;\n let startMeta;\n let startMarker = null;\n let hasEnd = false;\n let endMeta;\n let endMarker = null;\n let startInput = refined.start != null ? refined.start : refined.date;\n startMeta = context.dateEnv.createMarkerMeta(startInput);\n if (startMeta) {\n startMarker = startMeta.marker;\n } else if (!allowOpenRange) {\n return null;\n }\n if (refined.end != null) {\n endMeta = context.dateEnv.createMarkerMeta(refined.end);\n }\n if (allDay == null) {\n if (defaultAllDay != null) {\n allDay = defaultAllDay;\n } else {\n // fall back to the date props LAST\n allDay = (!startMeta || startMeta.isTimeUnspecified) && (!endMeta || endMeta.isTimeUnspecified);\n }\n }\n if (allDay && startMarker) {\n startMarker = startOfDay(startMarker);\n }\n if (endMeta) {\n endMarker = endMeta.marker;\n if (allDay) {\n endMarker = startOfDay(endMarker);\n }\n if (startMarker && endMarker <= startMarker) {\n endMarker = null;\n }\n }\n if (endMarker) {\n hasEnd = true;\n } else if (!allowOpenRange) {\n hasEnd = context.options.forceEventDuration || false;\n endMarker = context.dateEnv.add(startMarker, allDay ? context.options.defaultAllDayEventDuration : context.options.defaultTimedEventDuration);\n }\n return {\n allDay,\n hasEnd,\n range: {\n start: startMarker,\n end: endMarker\n },\n forcedStartTzo: startMeta ? startMeta.forcedTzo : null,\n forcedEndTzo: endMeta ? endMeta.forcedTzo : null\n };\n}\nfunction computeIsDefaultAllDay(eventSource, context) {\n let res = null;\n if (eventSource) {\n res = eventSource.defaultAllDay;\n }\n if (res == null) {\n res = context.options.defaultAllDay;\n }\n return res;\n}\nfunction parseEvents(rawEvents, eventSource, context, allowOpenRange, defIdMap, instanceIdMap) {\n let eventStore = createEmptyEventStore();\n let eventRefiners = buildEventRefiners(context);\n for (let rawEvent of rawEvents) {\n let tuple = parseEvent(rawEvent, eventSource, context, allowOpenRange, eventRefiners, defIdMap, instanceIdMap);\n if (tuple) {\n eventTupleToStore(tuple, eventStore);\n }\n }\n return eventStore;\n}\nfunction eventTupleToStore(tuple) {\n let eventStore = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createEmptyEventStore();\n eventStore.defs[tuple.def.defId] = tuple.def;\n if (tuple.instance) {\n eventStore.instances[tuple.instance.instanceId] = tuple.instance;\n }\n return eventStore;\n}\n// retrieves events that have the same groupId as the instance specified by `instanceId`\n// or they are the same as the instance.\n// why might instanceId not be in the store? an event from another calendar?\nfunction getRelevantEvents(eventStore, instanceId) {\n let instance = eventStore.instances[instanceId];\n if (instance) {\n let def = eventStore.defs[instance.defId];\n // get events/instances with same group\n let newStore = filterEventStoreDefs(eventStore, lookDef => isEventDefsGrouped(def, lookDef));\n // add the original\n // TODO: wish we could use eventTupleToStore or something like it\n newStore.defs[def.defId] = def;\n newStore.instances[instance.instanceId] = instance;\n return newStore;\n }\n return createEmptyEventStore();\n}\nfunction isEventDefsGrouped(def0, def1) {\n return Boolean(def0.groupId && def0.groupId === def1.groupId);\n}\nfunction createEmptyEventStore() {\n return {\n defs: {},\n instances: {}\n };\n}\nfunction mergeEventStores(store0, store1) {\n return {\n defs: Object.assign(Object.assign({}, store0.defs), store1.defs),\n instances: Object.assign(Object.assign({}, store0.instances), store1.instances)\n };\n}\nfunction filterEventStoreDefs(eventStore, filterFunc) {\n let defs = filterHash(eventStore.defs, filterFunc);\n let instances = filterHash(eventStore.instances, instance => defs[instance.defId] // still exists?\n );\n return {\n defs,\n instances\n };\n}\nfunction excludeSubEventStore(master, sub) {\n let defs = master.defs,\n instances = master.instances;\n let filteredDefs = {};\n let filteredInstances = {};\n for (let defId in defs) {\n if (!sub.defs[defId]) {\n // not explicitly excluded\n filteredDefs[defId] = defs[defId];\n }\n }\n for (let instanceId in instances) {\n if (!sub.instances[instanceId] &&\n // not explicitly excluded\n filteredDefs[instances[instanceId].defId] // def wasn't filtered away\n ) {\n filteredInstances[instanceId] = instances[instanceId];\n }\n }\n return {\n defs: filteredDefs,\n instances: filteredInstances\n };\n}\nfunction normalizeConstraint(input, context) {\n if (Array.isArray(input)) {\n return parseEvents(input, null, context, true); // allowOpenRange=true\n }\n if (typeof input === 'object' && input) {\n // non-null object\n return parseEvents([input], null, context, true); // allowOpenRange=true\n }\n if (input != null) {\n return String(input);\n }\n return null;\n}\nfunction parseClassNames(raw) {\n if (Array.isArray(raw)) {\n return raw;\n }\n if (typeof raw === 'string') {\n return raw.split(/\\s+/);\n }\n return [];\n}\n\n// TODO: better called \"EventSettings\" or \"EventConfig\"\n// TODO: move this file into structs\n// TODO: separate constraint/overlap/allow, because selection uses only that, not other props\nconst EVENT_UI_REFINERS = {\n display: String,\n editable: Boolean,\n startEditable: Boolean,\n durationEditable: Boolean,\n constraint: identity,\n overlap: identity,\n allow: identity,\n className: parseClassNames,\n classNames: parseClassNames,\n color: String,\n backgroundColor: String,\n borderColor: String,\n textColor: String\n};\nconst EMPTY_EVENT_UI = {\n display: null,\n startEditable: null,\n durationEditable: null,\n constraints: [],\n overlap: null,\n allows: [],\n backgroundColor: '',\n borderColor: '',\n textColor: '',\n classNames: []\n};\nfunction createEventUi(refined, context) {\n let constraint = normalizeConstraint(refined.constraint, context);\n return {\n display: refined.display || null,\n startEditable: refined.startEditable != null ? refined.startEditable : refined.editable,\n durationEditable: refined.durationEditable != null ? refined.durationEditable : refined.editable,\n constraints: constraint != null ? [constraint] : [],\n overlap: refined.overlap != null ? refined.overlap : null,\n allows: refined.allow != null ? [refined.allow] : [],\n backgroundColor: refined.backgroundColor || refined.color || '',\n borderColor: refined.borderColor || refined.color || '',\n textColor: refined.textColor || '',\n classNames: (refined.className || []).concat(refined.classNames || []) // join singular and plural\n };\n}\n// TODO: prevent against problems with <2 args!\nfunction combineEventUis(uis) {\n return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI);\n}\nfunction combineTwoEventUis(item0, item1) {\n return {\n display: item1.display != null ? item1.display : item0.display,\n startEditable: item1.startEditable != null ? item1.startEditable : item0.startEditable,\n durationEditable: item1.durationEditable != null ? item1.durationEditable : item0.durationEditable,\n constraints: item0.constraints.concat(item1.constraints),\n overlap: typeof item1.overlap === 'boolean' ? item1.overlap : item0.overlap,\n allows: item0.allows.concat(item1.allows),\n backgroundColor: item1.backgroundColor || item0.backgroundColor,\n borderColor: item1.borderColor || item0.borderColor,\n textColor: item1.textColor || item0.textColor,\n classNames: item0.classNames.concat(item1.classNames)\n };\n}\nconst EVENT_SOURCE_REFINERS = {\n id: String,\n defaultAllDay: Boolean,\n url: String,\n format: String,\n events: identity,\n eventDataTransform: identity,\n // for any network-related sources\n success: identity,\n failure: identity\n};\nfunction parseEventSource(raw, context) {\n let refiners = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : buildEventSourceRefiners(context);\n let rawObj;\n if (typeof raw === 'string') {\n rawObj = {\n url: raw\n };\n } else if (typeof raw === 'function' || Array.isArray(raw)) {\n rawObj = {\n events: raw\n };\n } else if (typeof raw === 'object' && raw) {\n // not null\n rawObj = raw;\n }\n if (rawObj) {\n let _refineProps = refineProps(rawObj, refiners),\n refined = _refineProps.refined,\n extra = _refineProps.extra;\n let metaRes = buildEventSourceMeta(refined, context);\n if (metaRes) {\n return {\n _raw: raw,\n isFetching: false,\n latestFetchId: '',\n fetchRange: null,\n defaultAllDay: refined.defaultAllDay,\n eventDataTransform: refined.eventDataTransform,\n success: refined.success,\n failure: refined.failure,\n publicId: refined.id || '',\n sourceId: guid(),\n sourceDefId: metaRes.sourceDefId,\n meta: metaRes.meta,\n ui: createEventUi(refined, context),\n extendedProps: extra\n };\n }\n }\n return null;\n}\nfunction buildEventSourceRefiners(context) {\n return Object.assign(Object.assign(Object.assign({}, EVENT_UI_REFINERS), EVENT_SOURCE_REFINERS), context.pluginHooks.eventSourceRefiners);\n}\nfunction buildEventSourceMeta(raw, context) {\n let defs = context.pluginHooks.eventSourceDefs;\n for (let i = defs.length - 1; i >= 0; i -= 1) {\n // later-added plugins take precedence\n let def = defs[i];\n let meta = def.parseMeta(raw);\n if (meta) {\n return {\n sourceDefId: i,\n meta\n };\n }\n }\n return null;\n}\nfunction reduceEventStore(eventStore, action, eventSources, dateProfile, context) {\n switch (action.type) {\n case 'RECEIVE_EVENTS':\n // raw\n return receiveRawEvents(eventStore, eventSources[action.sourceId], action.fetchId, action.fetchRange, action.rawEvents, context);\n case 'RESET_RAW_EVENTS':\n return resetRawEvents(eventStore, eventSources[action.sourceId], action.rawEvents, dateProfile.activeRange, context);\n case 'ADD_EVENTS':\n // already parsed, but not expanded\n return addEvent(eventStore, action.eventStore,\n // new ones\n dateProfile ? dateProfile.activeRange : null, context);\n case 'RESET_EVENTS':\n return action.eventStore;\n case 'MERGE_EVENTS':\n // already parsed and expanded\n return mergeEventStores(eventStore, action.eventStore);\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n if (dateProfile) {\n return expandRecurring(eventStore, dateProfile.activeRange, context);\n }\n return eventStore;\n case 'REMOVE_EVENTS':\n return excludeSubEventStore(eventStore, action.eventStore);\n case 'REMOVE_EVENT_SOURCE':\n return excludeEventsBySourceId(eventStore, action.sourceId);\n case 'REMOVE_ALL_EVENT_SOURCES':\n return filterEventStoreDefs(eventStore, eventDef => !eventDef.sourceId // only keep events with no source id\n );\n case 'REMOVE_ALL_EVENTS':\n return createEmptyEventStore();\n default:\n return eventStore;\n }\n}\nfunction receiveRawEvents(eventStore, eventSource, fetchId, fetchRange, rawEvents, context) {\n if (eventSource &&\n // not already removed\n fetchId === eventSource.latestFetchId // TODO: wish this logic was always in event-sources\n ) {\n let subset = parseEvents(transformRawEvents(rawEvents, eventSource, context), eventSource, context);\n if (fetchRange) {\n subset = expandRecurring(subset, fetchRange, context);\n }\n return mergeEventStores(excludeEventsBySourceId(eventStore, eventSource.sourceId), subset);\n }\n return eventStore;\n}\nfunction resetRawEvents(existingEventStore, eventSource, rawEvents, activeRange, context) {\n const _buildPublicIdMaps = buildPublicIdMaps(existingEventStore),\n defIdMap = _buildPublicIdMaps.defIdMap,\n instanceIdMap = _buildPublicIdMaps.instanceIdMap;\n let newEventStore = parseEvents(transformRawEvents(rawEvents, eventSource, context), eventSource, context, false, defIdMap, instanceIdMap);\n return expandRecurring(newEventStore, activeRange, context);\n}\nfunction transformRawEvents(rawEvents, eventSource, context) {\n let calEachTransform = context.options.eventDataTransform;\n let sourceEachTransform = eventSource ? eventSource.eventDataTransform : null;\n if (sourceEachTransform) {\n rawEvents = transformEachRawEvent(rawEvents, sourceEachTransform);\n }\n if (calEachTransform) {\n rawEvents = transformEachRawEvent(rawEvents, calEachTransform);\n }\n return rawEvents;\n}\nfunction transformEachRawEvent(rawEvents, func) {\n let refinedEvents;\n if (!func) {\n refinedEvents = rawEvents;\n } else {\n refinedEvents = [];\n for (let rawEvent of rawEvents) {\n let refinedEvent = func(rawEvent);\n if (refinedEvent) {\n refinedEvents.push(refinedEvent);\n } else if (refinedEvent == null) {\n refinedEvents.push(rawEvent);\n } // if a different falsy value, do nothing\n }\n }\n return refinedEvents;\n}\nfunction addEvent(eventStore, subset, expandRange, context) {\n if (expandRange) {\n subset = expandRecurring(subset, expandRange, context);\n }\n return mergeEventStores(eventStore, subset);\n}\nfunction rezoneEventStoreDates(eventStore, oldDateEnv, newDateEnv) {\n let defs = eventStore.defs;\n let instances = mapHash(eventStore.instances, instance => {\n let def = defs[instance.defId];\n if (def.allDay) {\n return instance; // isn't dependent on timezone\n }\n return Object.assign(Object.assign({}, instance), {\n range: {\n start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)),\n end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo))\n },\n forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo,\n forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo\n });\n });\n return {\n defs,\n instances\n };\n}\nfunction excludeEventsBySourceId(eventStore, sourceId) {\n return filterEventStoreDefs(eventStore, eventDef => eventDef.sourceId !== sourceId);\n}\n// QUESTION: why not just return instances? do a general object-property-exclusion util\nfunction excludeInstances(eventStore, removals) {\n return {\n defs: eventStore.defs,\n instances: filterHash(eventStore.instances, instance => !removals[instance.instanceId])\n };\n}\nfunction buildPublicIdMaps(eventStore) {\n const defs = eventStore.defs,\n instances = eventStore.instances;\n const defIdMap = {};\n const instanceIdMap = {};\n for (let defId in defs) {\n const def = defs[defId];\n const publicId = def.publicId;\n if (publicId) {\n defIdMap[publicId] = defId;\n }\n }\n for (let instanceId in instances) {\n const instance = instances[instanceId];\n const def = defs[instance.defId];\n const publicId = def.publicId;\n if (publicId) {\n instanceIdMap[publicId] = instanceId;\n }\n }\n return {\n defIdMap,\n instanceIdMap\n };\n}\nclass Emitter {\n constructor() {\n this.handlers = {};\n this.thisContext = null;\n }\n setThisContext(thisContext) {\n this.thisContext = thisContext;\n }\n setOptions(options) {\n this.options = options;\n }\n on(type, handler) {\n addToHash(this.handlers, type, handler);\n }\n off(type, handler) {\n removeFromHash(this.handlers, type, handler);\n }\n trigger(type) {\n let attachedHandlers = this.handlers[type] || [];\n let optionHandler = this.options && this.options[type];\n let handlers = [].concat(optionHandler || [], attachedHandlers);\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n for (let handler of handlers) {\n handler.apply(this.thisContext, args);\n }\n }\n hasHandlers(type) {\n return Boolean(this.handlers[type] && this.handlers[type].length || this.options && this.options[type]);\n }\n}\nfunction addToHash(hash, type, handler) {\n (hash[type] || (hash[type] = [])).push(handler);\n}\nfunction removeFromHash(hash, type, handler) {\n if (handler) {\n if (hash[type]) {\n hash[type] = hash[type].filter(func => func !== handler);\n }\n } else {\n delete hash[type]; // remove all handler funcs for this type\n }\n}\nconst DEF_DEFAULTS = {\n startTime: '09:00',\n endTime: '17:00',\n daysOfWeek: [1, 2, 3, 4, 5],\n display: 'inverse-background',\n classNames: 'fc-non-business',\n groupId: '_businessHours' // so multiple defs get grouped\n};\n/*\nTODO: pass around as EventDefHash!!!\n*/\nfunction parseBusinessHours(input, context) {\n return parseEvents(refineInputs(input), null, context);\n}\nfunction refineInputs(input) {\n let rawDefs;\n if (input === true) {\n rawDefs = [{}]; // will get DEF_DEFAULTS verbatim\n } else if (Array.isArray(input)) {\n // if specifying an array, every sub-definition NEEDS a day-of-week\n rawDefs = input.filter(rawDef => rawDef.daysOfWeek);\n } else if (typeof input === 'object' && input) {\n // non-null object\n rawDefs = [input];\n } else {\n // is probably false\n rawDefs = [];\n }\n rawDefs = rawDefs.map(rawDef => Object.assign(Object.assign({}, DEF_DEFAULTS), rawDef));\n return rawDefs;\n}\nfunction triggerDateSelect(selection, pev, context) {\n context.emitter.trigger('select', Object.assign(Object.assign({}, buildDateSpanApiWithContext(selection, context)), {\n jsEvent: pev ? pev.origEvent : null,\n view: context.viewApi || context.calendarApi.view\n }));\n}\nfunction triggerDateUnselect(pev, context) {\n context.emitter.trigger('unselect', {\n jsEvent: pev ? pev.origEvent : null,\n view: context.viewApi || context.calendarApi.view\n });\n}\nfunction buildDateSpanApiWithContext(dateSpan, context) {\n let props = {};\n for (let transform of context.pluginHooks.dateSpanTransforms) {\n Object.assign(props, transform(dateSpan, context));\n }\n Object.assign(props, buildDateSpanApi(dateSpan, context.dateEnv));\n return props;\n}\n// Given an event's allDay status and start date, return what its fallback end date should be.\n// TODO: rename to computeDefaultEventEnd\nfunction getDefaultEventEnd(allDay, marker, context) {\n let dateEnv = context.dateEnv,\n options = context.options;\n let end = marker;\n if (allDay) {\n end = startOfDay(end);\n end = dateEnv.add(end, options.defaultAllDayEventDuration);\n } else {\n end = dateEnv.add(end, options.defaultTimedEventDuration);\n }\n return end;\n}\n\n// applies the mutation to ALL defs/instances within the event store\nfunction applyMutationToEventStore(eventStore, eventConfigBase, mutation, context) {\n let eventConfigs = compileEventUis(eventStore.defs, eventConfigBase);\n let dest = createEmptyEventStore();\n for (let defId in eventStore.defs) {\n let def = eventStore.defs[defId];\n dest.defs[defId] = applyMutationToEventDef(def, eventConfigs[defId], mutation, context);\n }\n for (let instanceId in eventStore.instances) {\n let instance = eventStore.instances[instanceId];\n let def = dest.defs[instance.defId]; // important to grab the newly modified def\n dest.instances[instanceId] = applyMutationToEventInstance(instance, def, eventConfigs[instance.defId], mutation, context);\n }\n return dest;\n}\nfunction applyMutationToEventDef(eventDef, eventConfig, mutation, context) {\n let standardProps = mutation.standardProps || {};\n // if hasEnd has not been specified, guess a good value based on deltas.\n // if duration will change, there's no way the default duration will persist,\n // and thus, we need to mark the event as having a real end\n if (standardProps.hasEnd == null && eventConfig.durationEditable && (mutation.startDelta || mutation.endDelta)) {\n standardProps.hasEnd = true; // TODO: is this mutation okay?\n }\n let copy = Object.assign(Object.assign(Object.assign({}, eventDef), standardProps), {\n ui: Object.assign(Object.assign({}, eventDef.ui), standardProps.ui)\n });\n if (mutation.extendedProps) {\n copy.extendedProps = Object.assign(Object.assign({}, copy.extendedProps), mutation.extendedProps);\n }\n for (let applier of context.pluginHooks.eventDefMutationAppliers) {\n applier(copy, mutation, context);\n }\n if (!copy.hasEnd && context.options.forceEventDuration) {\n copy.hasEnd = true;\n }\n return copy;\n}\nfunction applyMutationToEventInstance(eventInstance, eventDef,\n// must first be modified by applyMutationToEventDef\neventConfig, mutation, context) {\n let dateEnv = context.dateEnv;\n let forceAllDay = mutation.standardProps && mutation.standardProps.allDay === true;\n let clearEnd = mutation.standardProps && mutation.standardProps.hasEnd === false;\n let copy = Object.assign({}, eventInstance);\n if (forceAllDay) {\n copy.range = computeAlignedDayRange(copy.range);\n }\n if (mutation.datesDelta && eventConfig.startEditable) {\n copy.range = {\n start: dateEnv.add(copy.range.start, mutation.datesDelta),\n end: dateEnv.add(copy.range.end, mutation.datesDelta)\n };\n }\n if (mutation.startDelta && eventConfig.durationEditable) {\n copy.range = {\n start: dateEnv.add(copy.range.start, mutation.startDelta),\n end: copy.range.end\n };\n }\n if (mutation.endDelta && eventConfig.durationEditable) {\n copy.range = {\n start: copy.range.start,\n end: dateEnv.add(copy.range.end, mutation.endDelta)\n };\n }\n if (clearEnd) {\n copy.range = {\n start: copy.range.start,\n end: getDefaultEventEnd(eventDef.allDay, copy.range.start, context)\n };\n }\n // in case event was all-day but the supplied deltas were not\n // better util for this?\n if (eventDef.allDay) {\n copy.range = {\n start: startOfDay(copy.range.start),\n end: startOfDay(copy.range.end)\n };\n }\n // handle invalid durations\n if (copy.range.end < copy.range.start) {\n copy.range.end = getDefaultEventEnd(eventDef.allDay, copy.range.start, context);\n }\n return copy;\n}\nclass EventSourceImpl {\n constructor(context, internalEventSource) {\n this.context = context;\n this.internalEventSource = internalEventSource;\n }\n remove() {\n this.context.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: this.internalEventSource.sourceId\n });\n }\n refetch() {\n this.context.dispatch({\n type: 'FETCH_EVENT_SOURCES',\n sourceIds: [this.internalEventSource.sourceId],\n isRefetch: true\n });\n }\n get id() {\n return this.internalEventSource.publicId;\n }\n get url() {\n return this.internalEventSource.meta.url;\n }\n get format() {\n return this.internalEventSource.meta.format; // TODO: bad. not guaranteed\n }\n}\nclass EventImpl {\n // instance will be null if expressing a recurring event that has no current instances,\n // OR if trying to validate an incoming external event that has no dates assigned\n constructor(context, def, instance) {\n this._context = context;\n this._def = def;\n this._instance = instance || null;\n }\n /*\n TODO: make event struct more responsible for this\n */\n setProp(name, val) {\n if (name in EVENT_DATE_REFINERS) {\n console.warn('Could not set date-related prop \\'name\\'. Use one of the date-related methods instead.');\n // TODO: make proper aliasing system?\n } else if (name === 'id') {\n val = EVENT_NON_DATE_REFINERS[name](val);\n this.mutate({\n standardProps: {\n publicId: val\n } // hardcoded internal name\n });\n } else if (name in EVENT_NON_DATE_REFINERS) {\n val = EVENT_NON_DATE_REFINERS[name](val);\n this.mutate({\n standardProps: {\n [name]: val\n }\n });\n } else if (name in EVENT_UI_REFINERS) {\n let ui = EVENT_UI_REFINERS[name](val);\n if (name === 'color') {\n ui = {\n backgroundColor: val,\n borderColor: val\n };\n } else if (name === 'editable') {\n ui = {\n startEditable: val,\n durationEditable: val\n };\n } else {\n ui = {\n [name]: val\n };\n }\n this.mutate({\n standardProps: {\n ui\n }\n });\n } else {\n console.warn(`Could not set prop '${name}'. Use setExtendedProp instead.`);\n }\n }\n setExtendedProp(name, val) {\n this.mutate({\n extendedProps: {\n [name]: val\n }\n });\n }\n setStart(startInput) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let dateEnv = this._context.dateEnv;\n let start = dateEnv.createMarker(startInput);\n if (start && this._instance) {\n // TODO: warning if parsed bad\n let instanceRange = this._instance.range;\n let startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity); // what if parsed bad!?\n if (options.maintainDuration) {\n this.mutate({\n datesDelta: startDelta\n });\n } else {\n this.mutate({\n startDelta\n });\n }\n }\n }\n setEnd(endInput) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let dateEnv = this._context.dateEnv;\n let end;\n if (endInput != null) {\n end = dateEnv.createMarker(endInput);\n if (!end) {\n return; // TODO: warning if parsed bad\n }\n }\n if (this._instance) {\n if (end) {\n let endDelta = diffDates(this._instance.range.end, end, dateEnv, options.granularity);\n this.mutate({\n endDelta\n });\n } else {\n this.mutate({\n standardProps: {\n hasEnd: false\n }\n });\n }\n }\n }\n setDates(startInput, endInput) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let dateEnv = this._context.dateEnv;\n let standardProps = {\n allDay: options.allDay\n };\n let start = dateEnv.createMarker(startInput);\n let end;\n if (!start) {\n return; // TODO: warning if parsed bad\n }\n if (endInput != null) {\n end = dateEnv.createMarker(endInput);\n if (!end) {\n // TODO: warning if parsed bad\n return;\n }\n }\n if (this._instance) {\n let instanceRange = this._instance.range;\n // when computing the diff for an event being converted to all-day,\n // compute diff off of the all-day values the way event-mutation does.\n if (options.allDay === true) {\n instanceRange = computeAlignedDayRange(instanceRange);\n }\n let startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity);\n if (end) {\n let endDelta = diffDates(instanceRange.end, end, dateEnv, options.granularity);\n if (durationsEqual(startDelta, endDelta)) {\n this.mutate({\n datesDelta: startDelta,\n standardProps\n });\n } else {\n this.mutate({\n startDelta,\n endDelta,\n standardProps\n });\n }\n } else {\n // means \"clear the end\"\n standardProps.hasEnd = false;\n this.mutate({\n datesDelta: startDelta,\n standardProps\n });\n }\n }\n }\n moveStart(deltaInput) {\n let delta = createDuration(deltaInput);\n if (delta) {\n // TODO: warning if parsed bad\n this.mutate({\n startDelta: delta\n });\n }\n }\n moveEnd(deltaInput) {\n let delta = createDuration(deltaInput);\n if (delta) {\n // TODO: warning if parsed bad\n this.mutate({\n endDelta: delta\n });\n }\n }\n moveDates(deltaInput) {\n let delta = createDuration(deltaInput);\n if (delta) {\n // TODO: warning if parsed bad\n this.mutate({\n datesDelta: delta\n });\n }\n }\n setAllDay(allDay) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let standardProps = {\n allDay\n };\n let maintainDuration = options.maintainDuration;\n if (maintainDuration == null) {\n maintainDuration = this._context.options.allDayMaintainDuration;\n }\n if (this._def.allDay !== allDay) {\n standardProps.hasEnd = maintainDuration;\n }\n this.mutate({\n standardProps\n });\n }\n formatRange(formatInput) {\n let dateEnv = this._context.dateEnv;\n let instance = this._instance;\n let formatter = createFormatter(formatInput);\n if (this._def.hasEnd) {\n return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, {\n forcedStartTzo: instance.forcedStartTzo,\n forcedEndTzo: instance.forcedEndTzo\n });\n }\n return dateEnv.format(instance.range.start, formatter, {\n forcedTzo: instance.forcedStartTzo\n });\n }\n mutate(mutation) {\n let instance = this._instance;\n if (instance) {\n let def = this._def;\n let context = this._context;\n let _context$getCurrentDa = context.getCurrentData(),\n eventStore = _context$getCurrentDa.eventStore;\n let relevantEvents = getRelevantEvents(eventStore, instance.instanceId);\n let eventConfigBase = {\n '': {\n display: '',\n startEditable: true,\n durationEditable: true,\n constraints: [],\n overlap: null,\n allows: [],\n backgroundColor: '',\n borderColor: '',\n textColor: '',\n classNames: []\n }\n };\n relevantEvents = applyMutationToEventStore(relevantEvents, eventConfigBase, mutation, context);\n let oldEvent = new EventImpl(context, def, instance); // snapshot\n this._def = relevantEvents.defs[def.defId];\n this._instance = relevantEvents.instances[instance.instanceId];\n context.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: relevantEvents\n });\n context.emitter.trigger('eventChange', {\n oldEvent,\n event: this,\n relatedEvents: buildEventApis(relevantEvents, context, instance),\n revert() {\n context.dispatch({\n type: 'RESET_EVENTS',\n eventStore // the ORIGINAL store\n });\n }\n });\n }\n }\n remove() {\n let context = this._context;\n let asStore = eventApiToStore(this);\n context.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: asStore\n });\n context.emitter.trigger('eventRemove', {\n event: this,\n relatedEvents: [],\n revert() {\n context.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: asStore\n });\n }\n });\n }\n get source() {\n let sourceId = this._def.sourceId;\n if (sourceId) {\n return new EventSourceImpl(this._context, this._context.getCurrentData().eventSources[sourceId]);\n }\n return null;\n }\n get start() {\n return this._instance ? this._context.dateEnv.toDate(this._instance.range.start) : null;\n }\n get end() {\n return this._instance && this._def.hasEnd ? this._context.dateEnv.toDate(this._instance.range.end) : null;\n }\n get startStr() {\n let instance = this._instance;\n if (instance) {\n return this._context.dateEnv.formatIso(instance.range.start, {\n omitTime: this._def.allDay,\n forcedTzo: instance.forcedStartTzo\n });\n }\n return '';\n }\n get endStr() {\n let instance = this._instance;\n if (instance && this._def.hasEnd) {\n return this._context.dateEnv.formatIso(instance.range.end, {\n omitTime: this._def.allDay,\n forcedTzo: instance.forcedEndTzo\n });\n }\n return '';\n }\n // computable props that all access the def\n // TODO: find a TypeScript-compatible way to do this at scale\n get id() {\n return this._def.publicId;\n }\n get groupId() {\n return this._def.groupId;\n }\n get allDay() {\n return this._def.allDay;\n }\n get title() {\n return this._def.title;\n }\n get url() {\n return this._def.url;\n }\n get display() {\n return this._def.ui.display || 'auto';\n } // bad. just normalize the type earlier\n get startEditable() {\n return this._def.ui.startEditable;\n }\n get durationEditable() {\n return this._def.ui.durationEditable;\n }\n get constraint() {\n return this._def.ui.constraints[0] || null;\n }\n get overlap() {\n return this._def.ui.overlap;\n }\n get allow() {\n return this._def.ui.allows[0] || null;\n }\n get backgroundColor() {\n return this._def.ui.backgroundColor;\n }\n get borderColor() {\n return this._def.ui.borderColor;\n }\n get textColor() {\n return this._def.ui.textColor;\n }\n // NOTE: user can't modify these because Object.freeze was called in event-def parsing\n get classNames() {\n return this._def.ui.classNames;\n }\n get extendedProps() {\n return this._def.extendedProps;\n }\n toPlainObject() {\n let settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let def = this._def;\n let ui = def.ui;\n let startStr = this.startStr,\n endStr = this.endStr;\n let res = {\n allDay: def.allDay\n };\n if (def.title) {\n res.title = def.title;\n }\n if (startStr) {\n res.start = startStr;\n }\n if (endStr) {\n res.end = endStr;\n }\n if (def.publicId) {\n res.id = def.publicId;\n }\n if (def.groupId) {\n res.groupId = def.groupId;\n }\n if (def.url) {\n res.url = def.url;\n }\n if (ui.display && ui.display !== 'auto') {\n res.display = ui.display;\n }\n // TODO: what about recurring-event properties???\n // TODO: include startEditable/durationEditable/constraint/overlap/allow\n if (settings.collapseColor && ui.backgroundColor && ui.backgroundColor === ui.borderColor) {\n res.color = ui.backgroundColor;\n } else {\n if (ui.backgroundColor) {\n res.backgroundColor = ui.backgroundColor;\n }\n if (ui.borderColor) {\n res.borderColor = ui.borderColor;\n }\n }\n if (ui.textColor) {\n res.textColor = ui.textColor;\n }\n if (ui.classNames.length) {\n res.classNames = ui.classNames;\n }\n if (Object.keys(def.extendedProps).length) {\n if (settings.collapseExtendedProps) {\n Object.assign(res, def.extendedProps);\n } else {\n res.extendedProps = def.extendedProps;\n }\n }\n return res;\n }\n toJSON() {\n return this.toPlainObject();\n }\n}\nfunction eventApiToStore(eventApi) {\n let def = eventApi._def;\n let instance = eventApi._instance;\n return {\n defs: {\n [def.defId]: def\n },\n instances: instance ? {\n [instance.instanceId]: instance\n } : {}\n };\n}\nfunction buildEventApis(eventStore, context, excludeInstance) {\n let defs = eventStore.defs,\n instances = eventStore.instances;\n let eventApis = [];\n let excludeInstanceId = excludeInstance ? excludeInstance.instanceId : '';\n for (let id in instances) {\n let instance = instances[id];\n let def = defs[instance.defId];\n if (instance.instanceId !== excludeInstanceId) {\n eventApis.push(new EventImpl(context, def, instance));\n }\n }\n return eventApis;\n}\n\n/*\nSpecifying nextDayThreshold signals that all-day ranges should be sliced.\n*/\nfunction sliceEventStore(eventStore, eventUiBases, framingRange, nextDayThreshold) {\n let inverseBgByGroupId = {};\n let inverseBgByDefId = {};\n let defByGroupId = {};\n let bgRanges = [];\n let fgRanges = [];\n let eventUis = compileEventUis(eventStore.defs, eventUiBases);\n for (let defId in eventStore.defs) {\n let def = eventStore.defs[defId];\n let ui = eventUis[def.defId];\n if (ui.display === 'inverse-background') {\n if (def.groupId) {\n inverseBgByGroupId[def.groupId] = [];\n if (!defByGroupId[def.groupId]) {\n defByGroupId[def.groupId] = def;\n }\n } else {\n inverseBgByDefId[defId] = [];\n }\n }\n }\n for (let instanceId in eventStore.instances) {\n let instance = eventStore.instances[instanceId];\n let def = eventStore.defs[instance.defId];\n let ui = eventUis[def.defId];\n let origRange = instance.range;\n let normalRange = !def.allDay && nextDayThreshold ? computeVisibleDayRange(origRange, nextDayThreshold) : origRange;\n let slicedRange = intersectRanges(normalRange, framingRange);\n if (slicedRange) {\n if (ui.display === 'inverse-background') {\n if (def.groupId) {\n inverseBgByGroupId[def.groupId].push(slicedRange);\n } else {\n inverseBgByDefId[instance.defId].push(slicedRange);\n }\n } else if (ui.display !== 'none') {\n (ui.display === 'background' ? bgRanges : fgRanges).push({\n def,\n ui,\n instance,\n range: slicedRange,\n isStart: normalRange.start && normalRange.start.valueOf() === slicedRange.start.valueOf(),\n isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf()\n });\n }\n }\n }\n for (let groupId in inverseBgByGroupId) {\n // BY GROUP\n let ranges = inverseBgByGroupId[groupId];\n let invertedRanges = invertRanges(ranges, framingRange);\n for (let invertedRange of invertedRanges) {\n let def = defByGroupId[groupId];\n let ui = eventUis[def.defId];\n bgRanges.push({\n def,\n ui,\n instance: null,\n range: invertedRange,\n isStart: false,\n isEnd: false\n });\n }\n }\n for (let defId in inverseBgByDefId) {\n let ranges = inverseBgByDefId[defId];\n let invertedRanges = invertRanges(ranges, framingRange);\n for (let invertedRange of invertedRanges) {\n bgRanges.push({\n def: eventStore.defs[defId],\n ui: eventUis[defId],\n instance: null,\n range: invertedRange,\n isStart: false,\n isEnd: false\n });\n }\n }\n return {\n bg: bgRanges,\n fg: fgRanges\n };\n}\nfunction hasBgRendering(def) {\n return def.ui.display === 'background' || def.ui.display === 'inverse-background';\n}\nfunction setElSeg(el, seg) {\n el.fcSeg = seg;\n}\nfunction getElSeg(el) {\n return el.fcSeg || el.parentNode.fcSeg ||\n // for the harness\n null;\n}\n// event ui computation\nfunction compileEventUis(eventDefs, eventUiBases) {\n return mapHash(eventDefs, eventDef => compileEventUi(eventDef, eventUiBases));\n}\nfunction compileEventUi(eventDef, eventUiBases) {\n let uis = [];\n if (eventUiBases['']) {\n uis.push(eventUiBases['']);\n }\n if (eventUiBases[eventDef.defId]) {\n uis.push(eventUiBases[eventDef.defId]);\n }\n uis.push(eventDef.ui);\n return combineEventUis(uis);\n}\nfunction sortEventSegs(segs, eventOrderSpecs) {\n let objs = segs.map(buildSegCompareObj);\n objs.sort((obj0, obj1) => compareByFieldSpecs(obj0, obj1, eventOrderSpecs));\n return objs.map(c => c._seg);\n}\n// returns a object with all primitive props that can be compared\nfunction buildSegCompareObj(seg) {\n let eventRange = seg.eventRange;\n let eventDef = eventRange.def;\n let range = eventRange.instance ? eventRange.instance.range : eventRange.range;\n let start = range.start ? range.start.valueOf() : 0; // TODO: better support for open-range events\n let end = range.end ? range.end.valueOf() : 0; // \"\n return Object.assign(Object.assign(Object.assign({}, eventDef.extendedProps), eventDef), {\n id: eventDef.publicId,\n start,\n end,\n duration: end - start,\n allDay: Number(eventDef.allDay),\n _seg: seg\n });\n}\nfunction computeSegDraggable(seg, context) {\n let pluginHooks = context.pluginHooks;\n let transformers = pluginHooks.isDraggableTransformers;\n let _seg$eventRange = seg.eventRange,\n def = _seg$eventRange.def,\n ui = _seg$eventRange.ui;\n let val = ui.startEditable;\n for (let transformer of transformers) {\n val = transformer(val, def, ui, context);\n }\n return val;\n}\nfunction computeSegStartResizable(seg, context) {\n return seg.isStart && seg.eventRange.ui.durationEditable && context.options.eventResizableFromStart;\n}\nfunction computeSegEndResizable(seg, context) {\n return seg.isEnd && seg.eventRange.ui.durationEditable;\n}\nfunction buildSegTimeText(seg, timeFormat, context, defaultDisplayEventTime,\n// defaults to true\ndefaultDisplayEventEnd,\n// defaults to true\nstartOverride, endOverride) {\n let dateEnv = context.dateEnv,\n options = context.options;\n let displayEventTime = options.displayEventTime,\n displayEventEnd = options.displayEventEnd;\n let eventDef = seg.eventRange.def;\n let eventInstance = seg.eventRange.instance;\n if (displayEventTime == null) {\n displayEventTime = defaultDisplayEventTime !== false;\n }\n if (displayEventEnd == null) {\n displayEventEnd = defaultDisplayEventEnd !== false;\n }\n let wholeEventStart = eventInstance.range.start;\n let wholeEventEnd = eventInstance.range.end;\n let segStart = startOverride || seg.start || seg.eventRange.range.start;\n let segEnd = endOverride || seg.end || seg.eventRange.range.end;\n let isStartDay = startOfDay(wholeEventStart).valueOf() === startOfDay(segStart).valueOf();\n let isEndDay = startOfDay(addMs(wholeEventEnd, -1)).valueOf() === startOfDay(addMs(segEnd, -1)).valueOf();\n if (displayEventTime && !eventDef.allDay && (isStartDay || isEndDay)) {\n segStart = isStartDay ? wholeEventStart : segStart;\n segEnd = isEndDay ? wholeEventEnd : segEnd;\n if (displayEventEnd && eventDef.hasEnd) {\n return dateEnv.formatRange(segStart, segEnd, timeFormat, {\n forcedStartTzo: startOverride ? null : eventInstance.forcedStartTzo,\n forcedEndTzo: endOverride ? null : eventInstance.forcedEndTzo\n });\n }\n return dateEnv.format(segStart, timeFormat, {\n forcedTzo: startOverride ? null : eventInstance.forcedStartTzo // nooooo, same\n });\n }\n return '';\n}\nfunction getSegMeta(seg, todayRange, nowDate) {\n let segRange = seg.eventRange.range;\n return {\n isPast: segRange.end <= (nowDate || todayRange.start),\n isFuture: segRange.start >= (nowDate || todayRange.end),\n isToday: todayRange && rangeContainsMarker(todayRange, segRange.start)\n };\n}\nfunction getEventClassNames(props) {\n let classNames = ['fc-event'];\n if (props.isMirror) {\n classNames.push('fc-event-mirror');\n }\n if (props.isDraggable) {\n classNames.push('fc-event-draggable');\n }\n if (props.isStartResizable || props.isEndResizable) {\n classNames.push('fc-event-resizable');\n }\n if (props.isDragging) {\n classNames.push('fc-event-dragging');\n }\n if (props.isResizing) {\n classNames.push('fc-event-resizing');\n }\n if (props.isSelected) {\n classNames.push('fc-event-selected');\n }\n if (props.isStart) {\n classNames.push('fc-event-start');\n }\n if (props.isEnd) {\n classNames.push('fc-event-end');\n }\n if (props.isPast) {\n classNames.push('fc-event-past');\n }\n if (props.isToday) {\n classNames.push('fc-event-today');\n }\n if (props.isFuture) {\n classNames.push('fc-event-future');\n }\n return classNames;\n}\nfunction buildEventRangeKey(eventRange) {\n return eventRange.instance ? eventRange.instance.instanceId : `${eventRange.def.defId}:${eventRange.range.start.toISOString()}`;\n // inverse-background events don't have specific instances. TODO: better solution\n}\nfunction getSegAnchorAttrs(seg, context) {\n let _seg$eventRange2 = seg.eventRange,\n def = _seg$eventRange2.def,\n instance = _seg$eventRange2.instance;\n let url = def.url;\n if (url) {\n return {\n href: url\n };\n }\n let emitter = context.emitter,\n options = context.options;\n let eventInteractive = options.eventInteractive;\n if (eventInteractive == null) {\n eventInteractive = def.interactive;\n if (eventInteractive == null) {\n eventInteractive = Boolean(emitter.hasHandlers('eventClick'));\n }\n }\n // mock what happens in EventClicking\n if (eventInteractive) {\n // only attach keyboard-related handlers because click handler is already done in EventClicking\n return createAriaKeyboardAttrs(ev => {\n emitter.trigger('eventClick', {\n el: ev.target,\n event: new EventImpl(context, def, instance),\n jsEvent: ev,\n view: context.viewApi\n });\n });\n }\n return {};\n}\nconst STANDARD_PROPS = {\n start: identity,\n end: identity,\n allDay: Boolean\n};\nfunction parseDateSpan(raw, dateEnv, defaultDuration) {\n let span = parseOpenDateSpan(raw, dateEnv);\n let range = span.range;\n if (!range.start) {\n return null;\n }\n if (!range.end) {\n if (defaultDuration == null) {\n return null;\n }\n range.end = dateEnv.add(range.start, defaultDuration);\n }\n return span;\n}\n/*\nTODO: somehow combine with parseRange?\nWill return null if the start/end props were present but parsed invalidly.\n*/\nfunction parseOpenDateSpan(raw, dateEnv) {\n let _refineProps2 = refineProps(raw, STANDARD_PROPS),\n standardProps = _refineProps2.refined,\n extra = _refineProps2.extra;\n let startMeta = standardProps.start ? dateEnv.createMarkerMeta(standardProps.start) : null;\n let endMeta = standardProps.end ? dateEnv.createMarkerMeta(standardProps.end) : null;\n let allDay = standardProps.allDay;\n if (allDay == null) {\n allDay = startMeta && startMeta.isTimeUnspecified && (!endMeta || endMeta.isTimeUnspecified);\n }\n return Object.assign({\n range: {\n start: startMeta ? startMeta.marker : null,\n end: endMeta ? endMeta.marker : null\n },\n allDay\n }, extra);\n}\nfunction isDateSpansEqual(span0, span1) {\n return rangesEqual(span0.range, span1.range) && span0.allDay === span1.allDay && isSpanPropsEqual(span0, span1);\n}\n// the NON-DATE-RELATED props\nfunction isSpanPropsEqual(span0, span1) {\n for (let propName in span1) {\n if (propName !== 'range' && propName !== 'allDay') {\n if (span0[propName] !== span1[propName]) {\n return false;\n }\n }\n }\n // are there any props that span0 has that span1 DOESN'T have?\n // both have range/allDay, so no need to special-case.\n for (let propName in span0) {\n if (!(propName in span1)) {\n return false;\n }\n }\n return true;\n}\nfunction buildDateSpanApi(span, dateEnv) {\n return Object.assign(Object.assign({}, buildRangeApi(span.range, dateEnv, span.allDay)), {\n allDay: span.allDay\n });\n}\nfunction buildRangeApiWithTimeZone(range, dateEnv, omitTime) {\n return Object.assign(Object.assign({}, buildRangeApi(range, dateEnv, omitTime)), {\n timeZone: dateEnv.timeZone\n });\n}\nfunction buildRangeApi(range, dateEnv, omitTime) {\n return {\n start: dateEnv.toDate(range.start),\n end: dateEnv.toDate(range.end),\n startStr: dateEnv.formatIso(range.start, {\n omitTime\n }),\n endStr: dateEnv.formatIso(range.end, {\n omitTime\n })\n };\n}\nfunction fabricateEventRange(dateSpan, eventUiBases, context) {\n let res = refineEventDef({\n editable: false\n }, context);\n let def = parseEventDef(res.refined, res.extra, '',\n // sourceId\n dateSpan.allDay, true,\n // hasEnd\n context);\n return {\n def,\n ui: compileEventUi(def, eventUiBases),\n instance: createEventInstance(def.defId, dateSpan.range),\n range: dateSpan.range,\n isStart: true,\n isEnd: true\n };\n}\n\n/*\ngiven a function that resolves a result asynchronously.\nthe function can either call passed-in success and failure callbacks,\nor it can return a promise.\nif you need to pass additional params to func, bind them first.\n*/\nfunction unpromisify(func, normalizedSuccessCallback, normalizedFailureCallback) {\n // guard against success/failure callbacks being called more than once\n // and guard against a promise AND callback being used together.\n let isResolved = false;\n let wrappedSuccess = function (res) {\n if (!isResolved) {\n isResolved = true;\n normalizedSuccessCallback(res);\n }\n };\n let wrappedFailure = function (error) {\n if (!isResolved) {\n isResolved = true;\n normalizedFailureCallback(error);\n }\n };\n let res = func(wrappedSuccess, wrappedFailure);\n if (res && typeof res.then === 'function') {\n res.then(wrappedSuccess, wrappedFailure);\n }\n}\nclass JsonRequestError extends Error {\n constructor(message, response) {\n super(message);\n this.response = response;\n }\n}\nfunction requestJson(method, url, params) {\n method = method.toUpperCase();\n const fetchOptions = {\n method\n };\n if (method === 'GET') {\n url += (url.indexOf('?') === -1 ? '?' : '&') + new URLSearchParams(params);\n } else {\n fetchOptions.body = new URLSearchParams(params);\n fetchOptions.headers = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n };\n }\n return fetch(url, fetchOptions).then(fetchRes => {\n if (fetchRes.ok) {\n return fetchRes.json().then(parsedResponse => {\n return [parsedResponse, fetchRes];\n }, () => {\n throw new JsonRequestError('Failure parsing JSON', fetchRes);\n });\n } else {\n throw new JsonRequestError('Request failed', fetchRes);\n }\n });\n}\nlet canVGrowWithinCell;\nfunction getCanVGrowWithinCell() {\n if (canVGrowWithinCell == null) {\n canVGrowWithinCell = computeCanVGrowWithinCell();\n }\n return canVGrowWithinCell;\n}\nfunction computeCanVGrowWithinCell() {\n // for SSR, because this function is call immediately at top-level\n // TODO: just make this logic execute top-level, immediately, instead of doing lazily\n if (typeof document === 'undefined') {\n return true;\n }\n let el = document.createElement('div');\n el.style.position = 'absolute';\n el.style.top = '0px';\n el.style.left = '0px';\n el.innerHTML = '<table><tr><td><div></div></td></tr></table>';\n el.querySelector('table').style.height = '100px';\n el.querySelector('div').style.height = '100%';\n document.body.appendChild(el);\n let div = el.querySelector('div');\n let possible = div.offsetHeight > 0;\n document.body.removeChild(el);\n return possible;\n}\nclass CalendarRoot extends BaseComponent {\n constructor() {\n super(...arguments);\n this.state = {\n forPrint: false\n };\n this.handleBeforePrint = () => {\n flushSync(() => {\n this.setState({\n forPrint: true\n });\n });\n };\n this.handleAfterPrint = () => {\n flushSync(() => {\n this.setState({\n forPrint: false\n });\n });\n };\n }\n render() {\n let props = this.props;\n let options = props.options;\n let forPrint = this.state.forPrint;\n let isHeightAuto = forPrint || options.height === 'auto' || options.contentHeight === 'auto';\n let height = !isHeightAuto && options.height != null ? options.height : '';\n let classNames = ['fc', forPrint ? 'fc-media-print' : 'fc-media-screen', `fc-direction-${options.direction}`, props.theme.getClass('root')];\n if (!getCanVGrowWithinCell()) {\n classNames.push('fc-liquid-hack');\n }\n return props.children(classNames, height, isHeightAuto, forPrint);\n }\n componentDidMount() {\n let emitter = this.props.emitter;\n emitter.on('_beforeprint', this.handleBeforePrint);\n emitter.on('_afterprint', this.handleAfterPrint);\n }\n componentWillUnmount() {\n let emitter = this.props.emitter;\n emitter.off('_beforeprint', this.handleBeforePrint);\n emitter.off('_afterprint', this.handleAfterPrint);\n }\n}\nclass Interaction {\n constructor(settings) {\n this.component = settings.component;\n this.isHitComboAllowed = settings.isHitComboAllowed || null;\n }\n destroy() {}\n}\nfunction parseInteractionSettings(component, input) {\n return {\n component,\n el: input.el,\n useEventCenter: input.useEventCenter != null ? input.useEventCenter : true,\n isHitComboAllowed: input.isHitComboAllowed || null\n };\n}\nfunction interactionSettingsToStore(settings) {\n return {\n [settings.component.uid]: settings\n };\n}\n// global state\nconst interactionSettingsStore = {};\nclass CalendarImpl {\n getCurrentData() {\n return this.currentDataManager.getCurrentData();\n }\n dispatch(action) {\n this.currentDataManager.dispatch(action);\n }\n get view() {\n return this.getCurrentData().viewApi;\n }\n batchRendering(callback) {\n callback();\n }\n updateSize() {\n this.trigger('_resize', true);\n }\n // Options\n // -----------------------------------------------------------------------------------------------------------------\n setOption(name, val) {\n this.dispatch({\n type: 'SET_OPTION',\n optionName: name,\n rawOptionValue: val\n });\n }\n getOption(name) {\n return this.currentDataManager.currentCalendarOptionsInput[name];\n }\n getAvailableLocaleCodes() {\n return Object.keys(this.getCurrentData().availableRawLocales);\n }\n // Trigger\n // -----------------------------------------------------------------------------------------------------------------\n on(handlerName, handler) {\n let currentDataManager = this.currentDataManager;\n if (currentDataManager.currentCalendarOptionsRefiners[handlerName]) {\n currentDataManager.emitter.on(handlerName, handler);\n } else {\n console.warn(`Unknown listener name '${handlerName}'`);\n }\n }\n off(handlerName, handler) {\n this.currentDataManager.emitter.off(handlerName, handler);\n }\n // not meant for public use\n trigger(handlerName) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n this.currentDataManager.emitter.trigger(handlerName, ...args);\n }\n // View\n // -----------------------------------------------------------------------------------------------------------------\n changeView(viewType, dateOrRange) {\n this.batchRendering(() => {\n this.unselect();\n if (dateOrRange) {\n if (dateOrRange.start && dateOrRange.end) {\n // a range\n this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType\n });\n this.dispatch({\n type: 'SET_OPTION',\n optionName: 'visibleRange',\n rawOptionValue: dateOrRange\n });\n } else {\n let _this$getCurrentData = this.getCurrentData(),\n dateEnv = _this$getCurrentData.dateEnv;\n this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType,\n dateMarker: dateEnv.createMarker(dateOrRange)\n });\n }\n } else {\n this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType\n });\n }\n });\n }\n // Forces navigation to a view for the given date.\n // `viewType` can be a specific view name or a generic one like \"week\" or \"day\".\n // needs to change\n zoomTo(dateMarker, viewType) {\n let state = this.getCurrentData();\n let spec;\n viewType = viewType || 'day'; // day is default zoom\n spec = state.viewSpecs[viewType] || this.getUnitViewSpec(viewType);\n this.unselect();\n if (spec) {\n this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: spec.type,\n dateMarker\n });\n } else {\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker\n });\n }\n }\n // Given a duration singular unit, like \"week\" or \"day\", finds a matching view spec.\n // Preference is given to views that have corresponding buttons.\n getUnitViewSpec(unit) {\n let _this$getCurrentData2 = this.getCurrentData(),\n viewSpecs = _this$getCurrentData2.viewSpecs,\n toolbarConfig = _this$getCurrentData2.toolbarConfig;\n let viewTypes = [].concat(toolbarConfig.header ? toolbarConfig.header.viewsWithButtons : [], toolbarConfig.footer ? toolbarConfig.footer.viewsWithButtons : []);\n let i;\n let spec;\n for (let viewType in viewSpecs) {\n viewTypes.push(viewType);\n }\n for (i = 0; i < viewTypes.length; i += 1) {\n spec = viewSpecs[viewTypes[i]];\n if (spec) {\n if (spec.singleUnit === unit) {\n return spec;\n }\n }\n }\n return null;\n }\n // Current Date\n // -----------------------------------------------------------------------------------------------------------------\n prev() {\n this.unselect();\n this.dispatch({\n type: 'PREV'\n });\n }\n next() {\n this.unselect();\n this.dispatch({\n type: 'NEXT'\n });\n }\n prevYear() {\n let state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.addYears(state.currentDate, -1)\n });\n }\n nextYear() {\n let state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.addYears(state.currentDate, 1)\n });\n }\n today() {\n let state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: getNow(state.calendarOptions.now, state.dateEnv)\n });\n }\n gotoDate(zonedDateInput) {\n let state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.createMarker(zonedDateInput)\n });\n }\n incrementDate(deltaInput) {\n let state = this.getCurrentData();\n let delta = createDuration(deltaInput);\n if (delta) {\n // else, warn about invalid input?\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.add(state.currentDate, delta)\n });\n }\n }\n getDate() {\n let state = this.getCurrentData();\n return state.dateEnv.toDate(state.currentDate);\n }\n // Date Formatting Utils\n // -----------------------------------------------------------------------------------------------------------------\n formatDate(d, formatter) {\n let _this$getCurrentData3 = this.getCurrentData(),\n dateEnv = _this$getCurrentData3.dateEnv;\n return dateEnv.format(dateEnv.createMarker(d), createFormatter(formatter));\n }\n // `settings` is for formatter AND isEndExclusive\n formatRange(d0, d1, settings) {\n let _this$getCurrentData4 = this.getCurrentData(),\n dateEnv = _this$getCurrentData4.dateEnv;\n return dateEnv.formatRange(dateEnv.createMarker(d0), dateEnv.createMarker(d1), createFormatter(settings), settings);\n }\n formatIso(d, omitTime) {\n let _this$getCurrentData5 = this.getCurrentData(),\n dateEnv = _this$getCurrentData5.dateEnv;\n return dateEnv.formatIso(dateEnv.createMarker(d), {\n omitTime\n });\n }\n // Date Selection / Event Selection / DayClick\n // -----------------------------------------------------------------------------------------------------------------\n select(dateOrObj, endDate) {\n let selectionInput;\n if (endDate == null) {\n if (dateOrObj.start != null) {\n selectionInput = dateOrObj;\n } else {\n selectionInput = {\n start: dateOrObj,\n end: null\n };\n }\n } else {\n selectionInput = {\n start: dateOrObj,\n end: endDate\n };\n }\n let state = this.getCurrentData();\n let selection = parseDateSpan(selectionInput, state.dateEnv, createDuration({\n days: 1\n }));\n if (selection) {\n // throw parse error otherwise?\n this.dispatch({\n type: 'SELECT_DATES',\n selection\n });\n triggerDateSelect(selection, null, state);\n }\n }\n unselect(pev) {\n let state = this.getCurrentData();\n if (state.dateSelection) {\n this.dispatch({\n type: 'UNSELECT_DATES'\n });\n triggerDateUnselect(pev, state);\n }\n }\n // Public Events API\n // -----------------------------------------------------------------------------------------------------------------\n addEvent(eventInput, sourceInput) {\n if (eventInput instanceof EventImpl) {\n let def = eventInput._def;\n let instance = eventInput._instance;\n let currentData = this.getCurrentData();\n // not already present? don't want to add an old snapshot\n if (!currentData.eventStore.defs[def.defId]) {\n this.dispatch({\n type: 'ADD_EVENTS',\n eventStore: eventTupleToStore({\n def,\n instance\n }) // TODO: better util for two args?\n });\n this.triggerEventAdd(eventInput);\n }\n return eventInput;\n }\n let state = this.getCurrentData();\n let eventSource;\n if (sourceInput instanceof EventSourceImpl) {\n eventSource = sourceInput.internalEventSource;\n } else if (typeof sourceInput === 'boolean') {\n if (sourceInput) {\n // true. part of the first event source\n var _hashValuesToArray = hashValuesToArray(state.eventSources);\n var _hashValuesToArray2 = _slicedToArray(_hashValuesToArray, 1);\n eventSource = _hashValuesToArray2[0];\n }\n } else if (sourceInput != null) {\n // an ID. accepts a number too\n let sourceApi = this.getEventSourceById(sourceInput); // TODO: use an internal function\n if (!sourceApi) {\n console.warn(`Could not find an event source with ID \"${sourceInput}\"`); // TODO: test\n return null;\n }\n eventSource = sourceApi.internalEventSource;\n }\n let tuple = parseEvent(eventInput, eventSource, state, false);\n if (tuple) {\n let newEventApi = new EventImpl(state, tuple.def, tuple.def.recurringDef ? null : tuple.instance);\n this.dispatch({\n type: 'ADD_EVENTS',\n eventStore: eventTupleToStore(tuple)\n });\n this.triggerEventAdd(newEventApi);\n return newEventApi;\n }\n return null;\n }\n triggerEventAdd(eventApi) {\n let _this$getCurrentData6 = this.getCurrentData(),\n emitter = _this$getCurrentData6.emitter;\n emitter.trigger('eventAdd', {\n event: eventApi,\n relatedEvents: [],\n revert: () => {\n this.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: eventApiToStore(eventApi)\n });\n }\n });\n }\n // TODO: optimize\n getEventById(id) {\n let state = this.getCurrentData();\n let _state$eventStore = state.eventStore,\n defs = _state$eventStore.defs,\n instances = _state$eventStore.instances;\n id = String(id);\n for (let defId in defs) {\n let def = defs[defId];\n if (def.publicId === id) {\n if (def.recurringDef) {\n return new EventImpl(state, def, null);\n }\n for (let instanceId in instances) {\n let instance = instances[instanceId];\n if (instance.defId === def.defId) {\n return new EventImpl(state, def, instance);\n }\n }\n }\n }\n return null;\n }\n getEvents() {\n let currentData = this.getCurrentData();\n return buildEventApis(currentData.eventStore, currentData);\n }\n removeAllEvents() {\n this.dispatch({\n type: 'REMOVE_ALL_EVENTS'\n });\n }\n // Public Event Sources API\n // -----------------------------------------------------------------------------------------------------------------\n getEventSources() {\n let state = this.getCurrentData();\n let sourceHash = state.eventSources;\n let sourceApis = [];\n for (let internalId in sourceHash) {\n sourceApis.push(new EventSourceImpl(state, sourceHash[internalId]));\n }\n return sourceApis;\n }\n getEventSourceById(id) {\n let state = this.getCurrentData();\n let sourceHash = state.eventSources;\n id = String(id);\n for (let sourceId in sourceHash) {\n if (sourceHash[sourceId].publicId === id) {\n return new EventSourceImpl(state, sourceHash[sourceId]);\n }\n }\n return null;\n }\n addEventSource(sourceInput) {\n let state = this.getCurrentData();\n if (sourceInput instanceof EventSourceImpl) {\n // not already present? don't want to add an old snapshot\n if (!state.eventSources[sourceInput.internalEventSource.sourceId]) {\n this.dispatch({\n type: 'ADD_EVENT_SOURCES',\n sources: [sourceInput.internalEventSource]\n });\n }\n return sourceInput;\n }\n let eventSource = parseEventSource(sourceInput, state);\n if (eventSource) {\n // TODO: error otherwise?\n this.dispatch({\n type: 'ADD_EVENT_SOURCES',\n sources: [eventSource]\n });\n return new EventSourceImpl(state, eventSource);\n }\n return null;\n }\n removeAllEventSources() {\n this.dispatch({\n type: 'REMOVE_ALL_EVENT_SOURCES'\n });\n }\n refetchEvents() {\n this.dispatch({\n type: 'FETCH_EVENT_SOURCES',\n isRefetch: true\n });\n }\n // Scroll\n // -----------------------------------------------------------------------------------------------------------------\n scrollToTime(timeInput) {\n let time = createDuration(timeInput);\n if (time) {\n this.trigger('_scrollRequest', {\n time\n });\n }\n }\n}\nfunction pointInsideRect(point, rect) {\n return point.left >= rect.left && point.left < rect.right && point.top >= rect.top && point.top < rect.bottom;\n}\n// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false\nfunction intersectRects(rect1, rect2) {\n let res = {\n left: Math.max(rect1.left, rect2.left),\n right: Math.min(rect1.right, rect2.right),\n top: Math.max(rect1.top, rect2.top),\n bottom: Math.min(rect1.bottom, rect2.bottom)\n };\n if (res.left < res.right && res.top < res.bottom) {\n return res;\n }\n return false;\n}\nfunction translateRect(rect, deltaX, deltaY) {\n return {\n left: rect.left + deltaX,\n right: rect.right + deltaX,\n top: rect.top + deltaY,\n bottom: rect.bottom + deltaY\n };\n}\n// Returns a new point that will have been moved to reside within the given rectangle\nfunction constrainPoint(point, rect) {\n return {\n left: Math.min(Math.max(point.left, rect.left), rect.right),\n top: Math.min(Math.max(point.top, rect.top), rect.bottom)\n };\n}\n// Returns a point that is the center of the given rectangle\nfunction getRectCenter(rect) {\n return {\n left: (rect.left + rect.right) / 2,\n top: (rect.top + rect.bottom) / 2\n };\n}\n// Subtracts point2's coordinates from point1's coordinates, returning a delta\nfunction diffPoints(point1, point2) {\n return {\n left: point1.left - point2.left,\n top: point1.top - point2.top\n };\n}\nconst EMPTY_EVENT_STORE = createEmptyEventStore(); // for purecomponents. TODO: keep elsewhere\nclass Splitter {\n constructor() {\n this.getKeysForEventDefs = memoize(this._getKeysForEventDefs);\n this.splitDateSelection = memoize(this._splitDateSpan);\n this.splitEventStore = memoize(this._splitEventStore);\n this.splitIndividualUi = memoize(this._splitIndividualUi);\n this.splitEventDrag = memoize(this._splitInteraction);\n this.splitEventResize = memoize(this._splitInteraction);\n this.eventUiBuilders = {}; // TODO: typescript protection\n }\n splitProps(props) {\n let keyInfos = this.getKeyInfo(props);\n let defKeys = this.getKeysForEventDefs(props.eventStore);\n let dateSelections = this.splitDateSelection(props.dateSelection);\n let individualUi = this.splitIndividualUi(props.eventUiBases, defKeys); // the individual *bases*\n let eventStores = this.splitEventStore(props.eventStore, defKeys);\n let eventDrags = this.splitEventDrag(props.eventDrag);\n let eventResizes = this.splitEventResize(props.eventResize);\n let splitProps = {};\n this.eventUiBuilders = mapHash(keyInfos, (info, key) => this.eventUiBuilders[key] || memoize(buildEventUiForKey));\n for (let key in keyInfos) {\n let keyInfo = keyInfos[key];\n let eventStore = eventStores[key] || EMPTY_EVENT_STORE;\n let buildEventUi = this.eventUiBuilders[key];\n splitProps[key] = {\n businessHours: keyInfo.businessHours || props.businessHours,\n dateSelection: dateSelections[key] || null,\n eventStore,\n eventUiBases: buildEventUi(props.eventUiBases[''], keyInfo.ui, individualUi[key]),\n eventSelection: eventStore.instances[props.eventSelection] ? props.eventSelection : '',\n eventDrag: eventDrags[key] || null,\n eventResize: eventResizes[key] || null\n };\n }\n return splitProps;\n }\n _splitDateSpan(dateSpan) {\n let dateSpans = {};\n if (dateSpan) {\n let keys = this.getKeysForDateSpan(dateSpan);\n for (let key of keys) {\n dateSpans[key] = dateSpan;\n }\n }\n return dateSpans;\n }\n _getKeysForEventDefs(eventStore) {\n return mapHash(eventStore.defs, eventDef => this.getKeysForEventDef(eventDef));\n }\n _splitEventStore(eventStore, defKeys) {\n let defs = eventStore.defs,\n instances = eventStore.instances;\n let splitStores = {};\n for (let defId in defs) {\n for (let key of defKeys[defId]) {\n if (!splitStores[key]) {\n splitStores[key] = createEmptyEventStore();\n }\n splitStores[key].defs[defId] = defs[defId];\n }\n }\n for (let instanceId in instances) {\n let instance = instances[instanceId];\n for (let key of defKeys[instance.defId]) {\n if (splitStores[key]) {\n // must have already been created\n splitStores[key].instances[instanceId] = instance;\n }\n }\n }\n return splitStores;\n }\n _splitIndividualUi(eventUiBases, defKeys) {\n let splitHashes = {};\n for (let defId in eventUiBases) {\n if (defId) {\n // not the '' key\n for (let key of defKeys[defId]) {\n if (!splitHashes[key]) {\n splitHashes[key] = {};\n }\n splitHashes[key][defId] = eventUiBases[defId];\n }\n }\n }\n return splitHashes;\n }\n _splitInteraction(interaction) {\n let splitStates = {};\n if (interaction) {\n let affectedStores = this._splitEventStore(interaction.affectedEvents, this._getKeysForEventDefs(interaction.affectedEvents));\n // can't rely on defKeys because event data is mutated\n let mutatedKeysByDefId = this._getKeysForEventDefs(interaction.mutatedEvents);\n let mutatedStores = this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId);\n let populate = key => {\n if (!splitStates[key]) {\n splitStates[key] = {\n affectedEvents: affectedStores[key] || EMPTY_EVENT_STORE,\n mutatedEvents: mutatedStores[key] || EMPTY_EVENT_STORE,\n isEvent: interaction.isEvent\n };\n }\n };\n for (let key in affectedStores) {\n populate(key);\n }\n for (let key in mutatedStores) {\n populate(key);\n }\n }\n return splitStates;\n }\n}\nfunction buildEventUiForKey(allUi, eventUiForKey, individualUi) {\n let baseParts = [];\n if (allUi) {\n baseParts.push(allUi);\n }\n if (eventUiForKey) {\n baseParts.push(eventUiForKey);\n }\n let stuff = {\n '': combineEventUis(baseParts)\n };\n if (individualUi) {\n Object.assign(stuff, individualUi);\n }\n return stuff;\n}\nfunction getDateMeta(date, todayRange, nowDate, dateProfile) {\n return {\n dow: date.getUTCDay(),\n isDisabled: Boolean(dateProfile && !rangeContainsMarker(dateProfile.activeRange, date)),\n isOther: Boolean(dateProfile && !rangeContainsMarker(dateProfile.currentRange, date)),\n isToday: Boolean(todayRange && rangeContainsMarker(todayRange, date)),\n isPast: Boolean(nowDate ? date < nowDate : todayRange ? date < todayRange.start : false),\n isFuture: Boolean(nowDate ? date > nowDate : todayRange ? date >= todayRange.end : false)\n };\n}\nfunction getDayClassNames(meta, theme) {\n let classNames = ['fc-day', `fc-day-${DAY_IDS[meta.dow]}`];\n if (meta.isDisabled) {\n classNames.push('fc-day-disabled');\n } else {\n if (meta.isToday) {\n classNames.push('fc-day-today');\n classNames.push(theme.getClass('today'));\n }\n if (meta.isPast) {\n classNames.push('fc-day-past');\n }\n if (meta.isFuture) {\n classNames.push('fc-day-future');\n }\n if (meta.isOther) {\n classNames.push('fc-day-other');\n }\n }\n return classNames;\n}\nfunction getSlotClassNames(meta, theme) {\n let classNames = ['fc-slot', `fc-slot-${DAY_IDS[meta.dow]}`];\n if (meta.isDisabled) {\n classNames.push('fc-slot-disabled');\n } else {\n if (meta.isToday) {\n classNames.push('fc-slot-today');\n classNames.push(theme.getClass('today'));\n }\n if (meta.isPast) {\n classNames.push('fc-slot-past');\n }\n if (meta.isFuture) {\n classNames.push('fc-slot-future');\n }\n }\n return classNames;\n}\nconst DAY_FORMAT = createFormatter({\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n});\nconst WEEK_FORMAT = createFormatter({\n week: 'long'\n});\nfunction buildNavLinkAttrs(context, dateMarker) {\n let viewType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'day';\n let isTabbable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n const dateEnv = context.dateEnv,\n options = context.options,\n calendarApi = context.calendarApi;\n let dateStr = dateEnv.format(dateMarker, viewType === 'week' ? WEEK_FORMAT : DAY_FORMAT);\n if (options.navLinks) {\n let zonedDate = dateEnv.toDate(dateMarker);\n const handleInteraction = ev => {\n let customAction = viewType === 'day' ? options.navLinkDayClick : viewType === 'week' ? options.navLinkWeekClick : null;\n if (typeof customAction === 'function') {\n customAction.call(calendarApi, dateEnv.toDate(dateMarker), ev);\n } else {\n if (typeof customAction === 'string') {\n viewType = customAction;\n }\n calendarApi.zoomTo(dateMarker, viewType);\n }\n };\n return Object.assign({\n title: formatWithOrdinals(options.navLinkHint, [dateStr, zonedDate], dateStr),\n 'data-navlink': ''\n }, isTabbable ? createAriaClickAttrs(handleInteraction) : {\n onClick: handleInteraction\n });\n }\n return {\n 'aria-label': dateStr\n };\n}\nlet _isRtlScrollbarOnLeft = null;\nfunction getIsRtlScrollbarOnLeft() {\n if (_isRtlScrollbarOnLeft === null) {\n _isRtlScrollbarOnLeft = computeIsRtlScrollbarOnLeft();\n }\n return _isRtlScrollbarOnLeft;\n}\nfunction computeIsRtlScrollbarOnLeft() {\n let outerEl = document.createElement('div');\n applyStyle(outerEl, {\n position: 'absolute',\n top: -1000,\n left: 0,\n border: 0,\n padding: 0,\n overflow: 'scroll',\n direction: 'rtl'\n });\n outerEl.innerHTML = '<div></div>';\n document.body.appendChild(outerEl);\n let innerEl = outerEl.firstChild;\n let res = innerEl.getBoundingClientRect().left > outerEl.getBoundingClientRect().left;\n removeElement(outerEl);\n return res;\n}\nlet _scrollbarWidths;\nfunction getScrollbarWidths() {\n if (!_scrollbarWidths) {\n _scrollbarWidths = computeScrollbarWidths();\n }\n return _scrollbarWidths;\n}\nfunction computeScrollbarWidths() {\n let el = document.createElement('div');\n el.style.overflow = 'scroll';\n el.style.position = 'absolute';\n el.style.top = '-9999px';\n el.style.left = '-9999px';\n document.body.appendChild(el);\n let res = computeScrollbarWidthsForEl(el);\n document.body.removeChild(el);\n return res;\n}\n// WARNING: will include border\nfunction computeScrollbarWidthsForEl(el) {\n return {\n x: el.offsetHeight - el.clientHeight,\n y: el.offsetWidth - el.clientWidth\n };\n}\nfunction computeEdges(el) {\n let getPadding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let computedStyle = window.getComputedStyle(el);\n let borderLeft = parseInt(computedStyle.borderLeftWidth, 10) || 0;\n let borderRight = parseInt(computedStyle.borderRightWidth, 10) || 0;\n let borderTop = parseInt(computedStyle.borderTopWidth, 10) || 0;\n let borderBottom = parseInt(computedStyle.borderBottomWidth, 10) || 0;\n let badScrollbarWidths = computeScrollbarWidthsForEl(el); // includes border!\n let scrollbarLeftRight = badScrollbarWidths.y - borderLeft - borderRight;\n let scrollbarBottom = badScrollbarWidths.x - borderTop - borderBottom;\n let res = {\n borderLeft,\n borderRight,\n borderTop,\n borderBottom,\n scrollbarBottom,\n scrollbarLeft: 0,\n scrollbarRight: 0\n };\n if (getIsRtlScrollbarOnLeft() && computedStyle.direction === 'rtl') {\n // is the scrollbar on the left side?\n res.scrollbarLeft = scrollbarLeftRight;\n } else {\n res.scrollbarRight = scrollbarLeftRight;\n }\n if (getPadding) {\n res.paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;\n res.paddingRight = parseInt(computedStyle.paddingRight, 10) || 0;\n res.paddingTop = parseInt(computedStyle.paddingTop, 10) || 0;\n res.paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0;\n }\n return res;\n}\nfunction computeInnerRect(el) {\n let goWithinPadding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let doFromWindowViewport = arguments.length > 2 ? arguments[2] : undefined;\n let outerRect = doFromWindowViewport ? el.getBoundingClientRect() : computeRect(el);\n let edges = computeEdges(el, goWithinPadding);\n let res = {\n left: outerRect.left + edges.borderLeft + edges.scrollbarLeft,\n right: outerRect.right - edges.borderRight - edges.scrollbarRight,\n top: outerRect.top + edges.borderTop,\n bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom\n };\n if (goWithinPadding) {\n res.left += edges.paddingLeft;\n res.right -= edges.paddingRight;\n res.top += edges.paddingTop;\n res.bottom -= edges.paddingBottom;\n }\n return res;\n}\nfunction computeRect(el) {\n let rect = el.getBoundingClientRect();\n return {\n left: rect.left + window.scrollX,\n top: rect.top + window.scrollY,\n right: rect.right + window.scrollX,\n bottom: rect.bottom + window.scrollY\n };\n}\nfunction computeClippedClientRect(el) {\n let clippingParents = getClippingParents(el);\n let rect = el.getBoundingClientRect();\n for (let clippingParent of clippingParents) {\n let intersection = intersectRects(rect, clippingParent.getBoundingClientRect());\n if (intersection) {\n rect = intersection;\n } else {\n return null;\n }\n }\n return rect;\n}\n// does not return window\nfunction getClippingParents(el) {\n let parents = [];\n while (el instanceof HTMLElement) {\n // will stop when gets to document or null\n let computedStyle = window.getComputedStyle(el);\n if (computedStyle.position === 'fixed') {\n break;\n }\n if (/(auto|scroll)/.test(computedStyle.overflow + computedStyle.overflowY + computedStyle.overflowX)) {\n parents.push(el);\n }\n el = el.parentNode;\n }\n return parents;\n}\n\n/*\nRecords offset information for a set of elements, relative to an origin element.\nCan record the left/right OR the top/bottom OR both.\nProvides methods for querying the cache by position.\n*/\nclass PositionCache {\n constructor(originEl, els, isHorizontal, isVertical) {\n this.els = els;\n let originClientRect = this.originClientRect = originEl.getBoundingClientRect(); // relative to viewport top-left\n if (isHorizontal) {\n this.buildElHorizontals(originClientRect.left);\n }\n if (isVertical) {\n this.buildElVerticals(originClientRect.top);\n }\n }\n // Populates the left/right internal coordinate arrays\n buildElHorizontals(originClientLeft) {\n let lefts = [];\n let rights = [];\n for (let el of this.els) {\n let rect = el.getBoundingClientRect();\n lefts.push(rect.left - originClientLeft);\n rights.push(rect.right - originClientLeft);\n }\n this.lefts = lefts;\n this.rights = rights;\n }\n // Populates the top/bottom internal coordinate arrays\n buildElVerticals(originClientTop) {\n let tops = [];\n let bottoms = [];\n for (let el of this.els) {\n let rect = el.getBoundingClientRect();\n tops.push(rect.top - originClientTop);\n bottoms.push(rect.bottom - originClientTop);\n }\n this.tops = tops;\n this.bottoms = bottoms;\n }\n // Given a left offset (from document left), returns the index of the el that it horizontally intersects.\n // If no intersection is made, returns undefined.\n leftToIndex(leftPosition) {\n let lefts = this.lefts,\n rights = this.rights;\n let len = lefts.length;\n let i;\n for (i = 0; i < len; i += 1) {\n if (leftPosition >= lefts[i] && leftPosition < rights[i]) {\n return i;\n }\n }\n return undefined; // TODO: better\n }\n // Given a top offset (from document top), returns the index of the el that it vertically intersects.\n // If no intersection is made, returns undefined.\n topToIndex(topPosition) {\n let tops = this.tops,\n bottoms = this.bottoms;\n let len = tops.length;\n let i;\n for (i = 0; i < len; i += 1) {\n if (topPosition >= tops[i] && topPosition < bottoms[i]) {\n return i;\n }\n }\n return undefined; // TODO: better\n }\n // Gets the width of the element at the given index\n getWidth(leftIndex) {\n return this.rights[leftIndex] - this.lefts[leftIndex];\n }\n // Gets the height of the element at the given index\n getHeight(topIndex) {\n return this.bottoms[topIndex] - this.tops[topIndex];\n }\n similarTo(otherCache) {\n return similarNumArrays(this.tops || [], otherCache.tops || []) && similarNumArrays(this.bottoms || [], otherCache.bottoms || []) && similarNumArrays(this.lefts || [], otherCache.lefts || []) && similarNumArrays(this.rights || [], otherCache.rights || []);\n }\n}\nfunction similarNumArrays(a, b) {\n const len = a.length;\n if (len !== b.length) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (Math.round(a[i]) !== Math.round(b[i])) {\n return false;\n }\n }\n return true;\n}\n\n/* eslint max-classes-per-file: \"off\" */\n/*\nAn object for getting/setting scroll-related information for an element.\nInternally, this is done very differently for window versus DOM element,\nso this object serves as a common interface.\n*/\nclass ScrollController {\n getMaxScrollTop() {\n return this.getScrollHeight() - this.getClientHeight();\n }\n getMaxScrollLeft() {\n return this.getScrollWidth() - this.getClientWidth();\n }\n canScrollVertically() {\n return this.getMaxScrollTop() > 0;\n }\n canScrollHorizontally() {\n return this.getMaxScrollLeft() > 0;\n }\n canScrollUp() {\n return this.getScrollTop() > 0;\n }\n canScrollDown() {\n return this.getScrollTop() < this.getMaxScrollTop();\n }\n canScrollLeft() {\n return this.getScrollLeft() > 0;\n }\n canScrollRight() {\n return this.getScrollLeft() < this.getMaxScrollLeft();\n }\n}\nclass ElementScrollController extends ScrollController {\n constructor(el) {\n super();\n this.el = el;\n }\n getScrollTop() {\n return this.el.scrollTop;\n }\n getScrollLeft() {\n return this.el.scrollLeft;\n }\n setScrollTop(top) {\n this.el.scrollTop = top;\n }\n setScrollLeft(left) {\n this.el.scrollLeft = left;\n }\n getScrollWidth() {\n return this.el.scrollWidth;\n }\n getScrollHeight() {\n return this.el.scrollHeight;\n }\n getClientHeight() {\n return this.el.clientHeight;\n }\n getClientWidth() {\n return this.el.clientWidth;\n }\n}\nclass WindowScrollController extends ScrollController {\n getScrollTop() {\n return window.scrollY;\n }\n getScrollLeft() {\n return window.scrollX;\n }\n setScrollTop(n) {\n window.scroll(window.scrollX, n);\n }\n setScrollLeft(n) {\n window.scroll(n, window.scrollY);\n }\n getScrollWidth() {\n return document.documentElement.scrollWidth;\n }\n getScrollHeight() {\n return document.documentElement.scrollHeight;\n }\n getClientHeight() {\n return document.documentElement.clientHeight;\n }\n getClientWidth() {\n return document.documentElement.clientWidth;\n }\n}\n\n/*\nan INTERACTABLE date component\n\nPURPOSES:\n- hook up to fg, fill, and mirror renderers\n- interface for dragging and hits\n*/\nclass DateComponent extends BaseComponent {\n constructor() {\n super(...arguments);\n this.uid = guid();\n }\n // Hit System\n // -----------------------------------------------------------------------------------------------------------------\n prepareHits() {}\n queryHit(positionLeft, positionTop, elWidth, elHeight) {\n return null; // this should be abstract\n }\n // Pointer Interaction Utils\n // -----------------------------------------------------------------------------------------------------------------\n isValidSegDownEl(el) {\n return !this.props.eventDrag &&\n // HACK\n !this.props.eventResize &&\n // HACK\n !elementClosest(el, '.fc-event-mirror');\n }\n isValidDateDownEl(el) {\n return !elementClosest(el, '.fc-event:not(.fc-bg-event)') && !elementClosest(el, '.fc-more-link') &&\n // a \"more..\" link\n !elementClosest(el, 'a[data-navlink]') &&\n // a clickable nav link\n !elementClosest(el, '.fc-popover'); // hack\n }\n}\nclass NamedTimeZoneImpl {\n constructor(timeZoneName) {\n this.timeZoneName = timeZoneName;\n }\n}\nclass SegHierarchy {\n constructor() {\n let getEntryThickness = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : entry => {\n // if no thickness known, assume 1 (if 0, so small it always fits)\n return entry.thickness || 1;\n };\n this.getEntryThickness = getEntryThickness;\n // settings\n this.strictOrder = false;\n this.allowReslicing = false;\n this.maxCoord = -1; // -1 means no max\n this.maxStackCnt = -1; // -1 means no max\n this.levelCoords = []; // ordered\n this.entriesByLevel = []; // parallel with levelCoords\n this.stackCnts = {}; // TODO: use better technique!?\n }\n addSegs(inputs) {\n let hiddenEntries = [];\n for (let input of inputs) {\n this.insertEntry(input, hiddenEntries);\n }\n return hiddenEntries;\n }\n insertEntry(entry, hiddenEntries) {\n let insertion = this.findInsertion(entry);\n if (this.isInsertionValid(insertion, entry)) {\n this.insertEntryAt(entry, insertion);\n } else {\n this.handleInvalidInsertion(insertion, entry, hiddenEntries);\n }\n }\n isInsertionValid(insertion, entry) {\n return (this.maxCoord === -1 || insertion.levelCoord + this.getEntryThickness(entry) <= this.maxCoord) && (this.maxStackCnt === -1 || insertion.stackCnt < this.maxStackCnt);\n }\n handleInvalidInsertion(insertion, entry, hiddenEntries) {\n if (this.allowReslicing && insertion.touchingEntry) {\n const hiddenEntry = Object.assign(Object.assign({}, entry), {\n span: intersectSpans(entry.span, insertion.touchingEntry.span)\n });\n hiddenEntries.push(hiddenEntry);\n this.splitEntry(entry, insertion.touchingEntry, hiddenEntries);\n } else {\n hiddenEntries.push(entry);\n }\n }\n /*\n Does NOT add what hit the `barrier` into hiddenEntries. Should already be done.\n */\n splitEntry(entry, barrier, hiddenEntries) {\n let entrySpan = entry.span;\n let barrierSpan = barrier.span;\n if (entrySpan.start < barrierSpan.start) {\n this.insertEntry({\n index: entry.index,\n thickness: entry.thickness,\n span: {\n start: entrySpan.start,\n end: barrierSpan.start\n }\n }, hiddenEntries);\n }\n if (entrySpan.end > barrierSpan.end) {\n this.insertEntry({\n index: entry.index,\n thickness: entry.thickness,\n span: {\n start: barrierSpan.end,\n end: entrySpan.end\n }\n }, hiddenEntries);\n }\n }\n insertEntryAt(entry, insertion) {\n let entriesByLevel = this.entriesByLevel,\n levelCoords = this.levelCoords;\n if (insertion.lateral === -1) {\n // create a new level\n insertAt(levelCoords, insertion.level, insertion.levelCoord);\n insertAt(entriesByLevel, insertion.level, [entry]);\n } else {\n // insert into existing level\n insertAt(entriesByLevel[insertion.level], insertion.lateral, entry);\n }\n this.stackCnts[buildEntryKey(entry)] = insertion.stackCnt;\n }\n /*\n does not care about limits\n */\n findInsertion(newEntry) {\n let levelCoords = this.levelCoords,\n entriesByLevel = this.entriesByLevel,\n strictOrder = this.strictOrder,\n stackCnts = this.stackCnts;\n let levelCnt = levelCoords.length;\n let candidateCoord = 0;\n let touchingLevel = -1;\n let touchingLateral = -1;\n let touchingEntry = null;\n let stackCnt = 0;\n for (let trackingLevel = 0; trackingLevel < levelCnt; trackingLevel += 1) {\n const trackingCoord = levelCoords[trackingLevel];\n // if the current level is past the placed entry, we have found a good empty space and can stop.\n // if strictOrder, keep finding more lateral intersections.\n if (!strictOrder && trackingCoord >= candidateCoord + this.getEntryThickness(newEntry)) {\n break;\n }\n let trackingEntries = entriesByLevel[trackingLevel];\n let trackingEntry;\n let searchRes = binarySearch(trackingEntries, newEntry.span.start, getEntrySpanEnd); // find first entry after newEntry's end\n let lateralIndex = searchRes[0] + searchRes[1]; // if exact match (which doesn't collide), go to next one\n while (\n // loop through entries that horizontally intersect\n (trackingEntry = trackingEntries[lateralIndex]) &&\n // but not past the whole entry list\n trackingEntry.span.start < newEntry.span.end // and not entirely past newEntry\n ) {\n let trackingEntryBottom = trackingCoord + this.getEntryThickness(trackingEntry);\n // intersects into the top of the candidate?\n if (trackingEntryBottom > candidateCoord) {\n candidateCoord = trackingEntryBottom;\n touchingEntry = trackingEntry;\n touchingLevel = trackingLevel;\n touchingLateral = lateralIndex;\n }\n // butts up against top of candidate? (will happen if just intersected as well)\n if (trackingEntryBottom === candidateCoord) {\n // accumulate the highest possible stackCnt of the trackingEntries that butt up\n stackCnt = Math.max(stackCnt, stackCnts[buildEntryKey(trackingEntry)] + 1);\n }\n lateralIndex += 1;\n }\n }\n // the destination level will be after touchingEntry's level. find it\n let destLevel = 0;\n if (touchingEntry) {\n destLevel = touchingLevel + 1;\n while (destLevel < levelCnt && levelCoords[destLevel] < candidateCoord) {\n destLevel += 1;\n }\n }\n // if adding to an existing level, find where to insert\n let destLateral = -1;\n if (destLevel < levelCnt && levelCoords[destLevel] === candidateCoord) {\n destLateral = binarySearch(entriesByLevel[destLevel], newEntry.span.end, getEntrySpanEnd)[0];\n }\n return {\n touchingLevel,\n touchingLateral,\n touchingEntry,\n stackCnt,\n levelCoord: candidateCoord,\n level: destLevel,\n lateral: destLateral\n };\n }\n // sorted by levelCoord (lowest to highest)\n toRects() {\n let entriesByLevel = this.entriesByLevel,\n levelCoords = this.levelCoords;\n let levelCnt = entriesByLevel.length;\n let rects = [];\n for (let level = 0; level < levelCnt; level += 1) {\n let entries = entriesByLevel[level];\n let levelCoord = levelCoords[level];\n for (let entry of entries) {\n rects.push(Object.assign(Object.assign({}, entry), {\n thickness: this.getEntryThickness(entry),\n levelCoord\n }));\n }\n }\n return rects;\n }\n}\nfunction getEntrySpanEnd(entry) {\n return entry.span.end;\n}\nfunction buildEntryKey(entry) {\n return entry.index + ':' + entry.span.start;\n}\n// returns groups with entries sorted by input order\nfunction groupIntersectingEntries(entries) {\n let merges = [];\n for (let entry of entries) {\n let filteredMerges = [];\n let hungryMerge = {\n span: entry.span,\n entries: [entry]\n };\n for (let merge of merges) {\n if (intersectSpans(merge.span, hungryMerge.span)) {\n hungryMerge = {\n entries: merge.entries.concat(hungryMerge.entries),\n span: joinSpans(merge.span, hungryMerge.span)\n };\n } else {\n filteredMerges.push(merge);\n }\n }\n filteredMerges.push(hungryMerge);\n merges = filteredMerges;\n }\n return merges;\n}\nfunction joinSpans(span0, span1) {\n return {\n start: Math.min(span0.start, span1.start),\n end: Math.max(span0.end, span1.end)\n };\n}\nfunction intersectSpans(span0, span1) {\n let start = Math.max(span0.start, span1.start);\n let end = Math.min(span0.end, span1.end);\n if (start < end) {\n return {\n start,\n end\n };\n }\n return null;\n}\n// general util\n// ---------------------------------------------------------------------------------------------------------------------\nfunction insertAt(arr, index, item) {\n arr.splice(index, 0, item);\n}\nfunction binarySearch(a, searchVal, getItemVal) {\n let startIndex = 0;\n let endIndex = a.length; // exclusive\n if (!endIndex || searchVal < getItemVal(a[startIndex])) {\n // no items OR before first item\n return [0, 0];\n }\n if (searchVal > getItemVal(a[endIndex - 1])) {\n // after last item\n return [endIndex, 0];\n }\n while (startIndex < endIndex) {\n let middleIndex = Math.floor(startIndex + (endIndex - startIndex) / 2);\n let middleVal = getItemVal(a[middleIndex]);\n if (searchVal < middleVal) {\n endIndex = middleIndex;\n } else if (searchVal > middleVal) {\n startIndex = middleIndex + 1;\n } else {\n // equal!\n return [middleIndex, 1];\n }\n }\n return [startIndex, 0];\n}\n\n/*\nAn abstraction for a dragging interaction originating on an event.\nDoes higher-level things than PointerDragger, such as possibly:\n- a \"mirror\" that moves with the pointer\n- a minimum number of pixels or other criteria for a true drag to begin\n\nsubclasses must emit:\n- pointerdown\n- dragstart\n- dragmove\n- pointerup\n- dragend\n*/\nclass ElementDragging {\n constructor(el, selector) {\n this.emitter = new Emitter();\n }\n destroy() {}\n setMirrorIsVisible(bool) {\n // optional if subclass doesn't want to support a mirror\n }\n setMirrorNeedsRevert(bool) {\n // optional if subclass doesn't want to support a mirror\n }\n setAutoScrollEnabled(bool) {\n // optional\n }\n}\n\n// TODO: get rid of this in favor of options system,\n// tho it's really easy to access this globally rather than pass thru options.\nconst config = {};\n\n/*\nInformation about what will happen when an external element is dragged-and-dropped\nonto a calendar. Contains information for creating an event.\n*/\nconst DRAG_META_REFINERS = {\n startTime: createDuration,\n duration: createDuration,\n create: Boolean,\n sourceId: String\n};\nfunction parseDragMeta(raw) {\n let _refineProps3 = refineProps(raw, DRAG_META_REFINERS),\n refined = _refineProps3.refined,\n extra = _refineProps3.extra;\n return {\n startTime: refined.startTime || null,\n duration: refined.duration || null,\n create: refined.create != null ? refined.create : true,\n sourceId: refined.sourceId,\n leftoverProps: extra\n };\n}\n\n// Computes a default column header formatting string if `colFormat` is not explicitly defined\nfunction computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt) {\n // if more than one week row, or if there are a lot of columns with not much space,\n // put just the day numbers will be in each cell\n if (!datesRepDistinctDays || dayCnt > 10) {\n return createFormatter({\n weekday: 'short'\n }); // \"Sat\"\n }\n if (dayCnt > 1) {\n return createFormatter({\n weekday: 'short',\n month: 'numeric',\n day: 'numeric',\n omitCommas: true\n }); // \"Sat 11/12\"\n }\n return createFormatter({\n weekday: 'long'\n }); // \"Saturday\"\n}\nconst CLASS_NAME = 'fc-col-header-cell'; // do the cushion too? no\nfunction renderInner$1(renderProps) {\n return renderProps.text;\n}\n\n// BAD name for this class now. used in the Header\nclass TableDateCell extends BaseComponent {\n render() {\n let _this$context = this.context,\n dateEnv = _this$context.dateEnv,\n options = _this$context.options,\n theme = _this$context.theme,\n viewApi = _this$context.viewApi;\n let props = this.props;\n let date = props.date,\n dateProfile = props.dateProfile;\n let dayMeta = getDateMeta(date, props.todayRange, null, dateProfile);\n let classNames = [CLASS_NAME].concat(getDayClassNames(dayMeta, theme));\n let text = dateEnv.format(date, props.dayHeaderFormat);\n // if colCnt is 1, we are already in a day-view and don't need a navlink\n let navLinkAttrs = !dayMeta.isDisabled && props.colCnt > 1 ? buildNavLinkAttrs(this.context, date) : {};\n let renderProps = Object.assign(Object.assign(Object.assign({\n date: dateEnv.toDate(date),\n view: viewApi\n }, props.extraRenderProps), {\n text\n }), dayMeta);\n return createElement(ContentContainer, {\n elTag: \"th\",\n elClasses: classNames,\n elAttrs: Object.assign({\n role: 'columnheader',\n colSpan: props.colSpan,\n 'data-date': !dayMeta.isDisabled ? formatDayString(date) : undefined\n }, props.extraDataAttrs),\n renderProps: renderProps,\n generatorName: \"dayHeaderContent\",\n customGenerator: options.dayHeaderContent,\n defaultGenerator: renderInner$1,\n classNameGenerator: options.dayHeaderClassNames,\n didMount: options.dayHeaderDidMount,\n willUnmount: options.dayHeaderWillUnmount\n }, InnerContainer => createElement(\"div\", {\n className: \"fc-scrollgrid-sync-inner\"\n }, !dayMeta.isDisabled && createElement(InnerContainer, {\n elTag: \"a\",\n elAttrs: navLinkAttrs,\n elClasses: ['fc-col-header-cell-cushion', props.isSticky && 'fc-sticky']\n })));\n }\n}\nconst WEEKDAY_FORMAT = createFormatter({\n weekday: 'long'\n});\nclass TableDowCell extends BaseComponent {\n render() {\n let props = this.props;\n let _this$context2 = this.context,\n dateEnv = _this$context2.dateEnv,\n theme = _this$context2.theme,\n viewApi = _this$context2.viewApi,\n options = _this$context2.options;\n let date = addDays(new Date(259200000), props.dow); // start with Sun, 04 Jan 1970 00:00:00 GMT\n let dateMeta = {\n dow: props.dow,\n isDisabled: false,\n isFuture: false,\n isPast: false,\n isToday: false,\n isOther: false\n };\n let text = dateEnv.format(date, props.dayHeaderFormat);\n let renderProps = Object.assign(Object.assign(Object.assign(Object.assign({\n // TODO: make this public?\n date\n }, dateMeta), {\n view: viewApi\n }), props.extraRenderProps), {\n text\n });\n return createElement(ContentContainer, {\n elTag: \"th\",\n elClasses: [CLASS_NAME, ...getDayClassNames(dateMeta, theme), ...(props.extraClassNames || [])],\n elAttrs: Object.assign({\n role: 'columnheader',\n colSpan: props.colSpan\n }, props.extraDataAttrs),\n renderProps: renderProps,\n generatorName: \"dayHeaderContent\",\n customGenerator: options.dayHeaderContent,\n defaultGenerator: renderInner$1,\n classNameGenerator: options.dayHeaderClassNames,\n didMount: options.dayHeaderDidMount,\n willUnmount: options.dayHeaderWillUnmount\n }, InnerContent => createElement(\"div\", {\n className: \"fc-scrollgrid-sync-inner\"\n }, createElement(InnerContent, {\n elTag: \"a\",\n elClasses: ['fc-col-header-cell-cushion', props.isSticky && 'fc-sticky'],\n elAttrs: {\n 'aria-label': dateEnv.format(date, WEEKDAY_FORMAT)\n }\n })));\n }\n}\nclass NowTimer extends Component {\n constructor(props, context) {\n super(props, context);\n this.initialNowDate = getNow(context.options.now, context.dateEnv);\n this.initialNowQueriedMs = new Date().valueOf();\n this.state = this.computeTiming().currentState;\n }\n render() {\n let props = this.props,\n state = this.state;\n return props.children(state.nowDate, state.todayRange);\n }\n componentDidMount() {\n this.setTimeout();\n }\n componentDidUpdate(prevProps) {\n if (prevProps.unit !== this.props.unit) {\n this.clearTimeout();\n this.setTimeout();\n }\n }\n componentWillUnmount() {\n this.clearTimeout();\n }\n computeTiming() {\n let props = this.props,\n context = this.context;\n let unroundedNow = addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs);\n let currentUnitStart = context.dateEnv.startOf(unroundedNow, props.unit);\n let nextUnitStart = context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));\n let waitMs = nextUnitStart.valueOf() - unroundedNow.valueOf();\n // there is a max setTimeout ms value (https://stackoverflow.com/a/3468650/96342)\n // ensure no longer than a day\n waitMs = Math.min(1000 * 60 * 60 * 24, waitMs);\n return {\n currentState: {\n nowDate: currentUnitStart,\n todayRange: buildDayRange(currentUnitStart)\n },\n nextState: {\n nowDate: nextUnitStart,\n todayRange: buildDayRange(nextUnitStart)\n },\n waitMs\n };\n }\n setTimeout() {\n let _this$computeTiming = this.computeTiming(),\n nextState = _this$computeTiming.nextState,\n waitMs = _this$computeTiming.waitMs;\n this.timeoutId = setTimeout(() => {\n this.setState(nextState, () => {\n this.setTimeout();\n });\n }, waitMs);\n }\n clearTimeout() {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n }\n }\n}\nNowTimer.contextType = ViewContextType;\nfunction buildDayRange(date) {\n let start = startOfDay(date);\n let end = addDays(start, 1);\n return {\n start,\n end\n };\n}\nclass DayHeader extends BaseComponent {\n constructor() {\n super(...arguments);\n this.createDayHeaderFormatter = memoize(createDayHeaderFormatter);\n }\n render() {\n let context = this.context;\n let _this$props4 = this.props,\n dates = _this$props4.dates,\n dateProfile = _this$props4.dateProfile,\n datesRepDistinctDays = _this$props4.datesRepDistinctDays,\n renderIntro = _this$props4.renderIntro;\n let dayHeaderFormat = this.createDayHeaderFormatter(context.options.dayHeaderFormat, datesRepDistinctDays, dates.length);\n return createElement(NowTimer, {\n unit: \"day\"\n }, (nowDate, todayRange) => createElement(\"tr\", {\n role: \"row\"\n }, renderIntro && renderIntro('day'), dates.map(date => datesRepDistinctDays ? createElement(TableDateCell, {\n key: date.toISOString(),\n date: date,\n dateProfile: dateProfile,\n todayRange: todayRange,\n colCnt: dates.length,\n dayHeaderFormat: dayHeaderFormat\n }) : createElement(TableDowCell, {\n key: date.getUTCDay(),\n dow: date.getUTCDay(),\n dayHeaderFormat: dayHeaderFormat\n }))));\n }\n}\nfunction createDayHeaderFormatter(explicitFormat, datesRepDistinctDays, dateCnt) {\n return explicitFormat || computeFallbackHeaderFormat(datesRepDistinctDays, dateCnt);\n}\nclass DaySeriesModel {\n constructor(range, dateProfileGenerator) {\n let date = range.start;\n let end = range.end;\n let indices = [];\n let dates = [];\n let dayIndex = -1;\n while (date < end) {\n // loop each day from start to end\n if (dateProfileGenerator.isHiddenDay(date)) {\n indices.push(dayIndex + 0.5); // mark that it's between indices\n } else {\n dayIndex += 1;\n indices.push(dayIndex);\n dates.push(date);\n }\n date = addDays(date, 1);\n }\n this.dates = dates;\n this.indices = indices;\n this.cnt = dates.length;\n }\n sliceRange(range) {\n let firstIndex = this.getDateDayIndex(range.start); // inclusive first index\n let lastIndex = this.getDateDayIndex(addDays(range.end, -1)); // inclusive last index\n let clippedFirstIndex = Math.max(0, firstIndex);\n let clippedLastIndex = Math.min(this.cnt - 1, lastIndex);\n // deal with in-between indices\n clippedFirstIndex = Math.ceil(clippedFirstIndex); // in-between starts round to next cell\n clippedLastIndex = Math.floor(clippedLastIndex); // in-between ends round to prev cell\n if (clippedFirstIndex <= clippedLastIndex) {\n return {\n firstIndex: clippedFirstIndex,\n lastIndex: clippedLastIndex,\n isStart: firstIndex === clippedFirstIndex,\n isEnd: lastIndex === clippedLastIndex\n };\n }\n return null;\n }\n // Given a date, returns its chronolocial cell-index from the first cell of the grid.\n // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.\n // If before the first offset, returns a negative number.\n // If after the last offset, returns an offset past the last cell offset.\n // Only works for *start* dates of cells. Will not work for exclusive end dates for cells.\n getDateDayIndex(date) {\n let indices = this.indices;\n let dayOffset = Math.floor(diffDays(this.dates[0], date));\n if (dayOffset < 0) {\n return indices[0] - 1;\n }\n if (dayOffset >= indices.length) {\n return indices[indices.length - 1] + 1;\n }\n return indices[dayOffset];\n }\n}\nclass DayTableModel {\n constructor(daySeries, breakOnWeeks) {\n let dates = daySeries.dates;\n let daysPerRow;\n let firstDay;\n let rowCnt;\n if (breakOnWeeks) {\n // count columns until the day-of-week repeats\n firstDay = dates[0].getUTCDay();\n for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow += 1) {\n if (dates[daysPerRow].getUTCDay() === firstDay) {\n break;\n }\n }\n rowCnt = Math.ceil(dates.length / daysPerRow);\n } else {\n rowCnt = 1;\n daysPerRow = dates.length;\n }\n this.rowCnt = rowCnt;\n this.colCnt = daysPerRow;\n this.daySeries = daySeries;\n this.cells = this.buildCells();\n this.headerDates = this.buildHeaderDates();\n }\n buildCells() {\n let rows = [];\n for (let row = 0; row < this.rowCnt; row += 1) {\n let cells = [];\n for (let col = 0; col < this.colCnt; col += 1) {\n cells.push(this.buildCell(row, col));\n }\n rows.push(cells);\n }\n return rows;\n }\n buildCell(row, col) {\n let date = this.daySeries.dates[row * this.colCnt + col];\n return {\n key: date.toISOString(),\n date\n };\n }\n buildHeaderDates() {\n let dates = [];\n for (let col = 0; col < this.colCnt; col += 1) {\n dates.push(this.cells[0][col].date);\n }\n return dates;\n }\n sliceRange(range) {\n let colCnt = this.colCnt;\n let seriesSeg = this.daySeries.sliceRange(range);\n let segs = [];\n if (seriesSeg) {\n let firstIndex = seriesSeg.firstIndex,\n lastIndex = seriesSeg.lastIndex;\n let index = firstIndex;\n while (index <= lastIndex) {\n let row = Math.floor(index / colCnt);\n let nextIndex = Math.min((row + 1) * colCnt, lastIndex + 1);\n segs.push({\n row,\n firstCol: index % colCnt,\n lastCol: (nextIndex - 1) % colCnt,\n isStart: seriesSeg.isStart && index === firstIndex,\n isEnd: seriesSeg.isEnd && nextIndex - 1 === lastIndex\n });\n index = nextIndex;\n }\n }\n return segs;\n }\n}\nclass Slicer {\n constructor() {\n this.sliceBusinessHours = memoize(this._sliceBusinessHours);\n this.sliceDateSelection = memoize(this._sliceDateSpan);\n this.sliceEventStore = memoize(this._sliceEventStore);\n this.sliceEventDrag = memoize(this._sliceInteraction);\n this.sliceEventResize = memoize(this._sliceInteraction);\n this.forceDayIfListItem = false; // hack\n }\n sliceProps(props, dateProfile, nextDayThreshold, context) {\n let eventUiBases = props.eventUiBases;\n for (var _len4 = arguments.length, extraArgs = new Array(_len4 > 4 ? _len4 - 4 : 0), _key4 = 4; _key4 < _len4; _key4++) {\n extraArgs[_key4 - 4] = arguments[_key4];\n }\n let eventSegs = this.sliceEventStore(props.eventStore, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs);\n return {\n dateSelectionSegs: this.sliceDateSelection(props.dateSelection, dateProfile, nextDayThreshold, eventUiBases, context, ...extraArgs),\n businessHourSegs: this.sliceBusinessHours(props.businessHours, dateProfile, nextDayThreshold, context, ...extraArgs),\n fgEventSegs: eventSegs.fg,\n bgEventSegs: eventSegs.bg,\n eventDrag: this.sliceEventDrag(props.eventDrag, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs),\n eventResize: this.sliceEventResize(props.eventResize, eventUiBases, dateProfile, nextDayThreshold, ...extraArgs),\n eventSelection: props.eventSelection\n }; // TODO: give interactionSegs?\n }\n sliceNowDate(\n // does not memoize\n date, dateProfile, nextDayThreshold, context) {\n for (var _len5 = arguments.length, extraArgs = new Array(_len5 > 4 ? _len5 - 4 : 0), _key5 = 4; _key5 < _len5; _key5++) {\n extraArgs[_key5 - 4] = arguments[_key5];\n }\n return this._sliceDateSpan({\n range: {\n start: date,\n end: addMs(date, 1)\n },\n allDay: false\n },\n // add 1 ms, protect against null range\n dateProfile, nextDayThreshold, {}, context, ...extraArgs);\n }\n _sliceBusinessHours(businessHours, dateProfile, nextDayThreshold, context) {\n if (!businessHours) {\n return [];\n }\n for (var _len6 = arguments.length, extraArgs = new Array(_len6 > 4 ? _len6 - 4 : 0), _key6 = 4; _key6 < _len6; _key6++) {\n extraArgs[_key6 - 4] = arguments[_key6];\n }\n return this._sliceEventStore(expandRecurring(businessHours, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), context), {}, dateProfile, nextDayThreshold, ...extraArgs).bg;\n }\n _sliceEventStore(eventStore, eventUiBases, dateProfile, nextDayThreshold) {\n if (eventStore) {\n let rangeRes = sliceEventStore(eventStore, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n for (var _len7 = arguments.length, extraArgs = new Array(_len7 > 4 ? _len7 - 4 : 0), _key7 = 4; _key7 < _len7; _key7++) {\n extraArgs[_key7 - 4] = arguments[_key7];\n }\n return {\n bg: this.sliceEventRanges(rangeRes.bg, extraArgs),\n fg: this.sliceEventRanges(rangeRes.fg, extraArgs)\n };\n }\n return {\n bg: [],\n fg: []\n };\n }\n _sliceInteraction(interaction, eventUiBases, dateProfile, nextDayThreshold) {\n if (!interaction) {\n return null;\n }\n let rangeRes = sliceEventStore(interaction.mutatedEvents, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n for (var _len8 = arguments.length, extraArgs = new Array(_len8 > 4 ? _len8 - 4 : 0), _key8 = 4; _key8 < _len8; _key8++) {\n extraArgs[_key8 - 4] = arguments[_key8];\n }\n return {\n segs: this.sliceEventRanges(rangeRes.fg, extraArgs),\n affectedInstances: interaction.affectedEvents.instances,\n isEvent: interaction.isEvent\n };\n }\n _sliceDateSpan(dateSpan, dateProfile, nextDayThreshold, eventUiBases, context) {\n if (!dateSpan) {\n return [];\n }\n let activeRange = computeActiveRange(dateProfile, Boolean(nextDayThreshold));\n let activeDateSpanRange = intersectRanges(dateSpan.range, activeRange);\n if (activeDateSpanRange) {\n dateSpan = Object.assign(Object.assign({}, dateSpan), {\n range: activeDateSpanRange\n });\n let eventRange = fabricateEventRange(dateSpan, eventUiBases, context);\n for (var _len9 = arguments.length, extraArgs = new Array(_len9 > 5 ? _len9 - 5 : 0), _key9 = 5; _key9 < _len9; _key9++) {\n extraArgs[_key9 - 5] = arguments[_key9];\n }\n let segs = this.sliceRange(dateSpan.range, ...extraArgs);\n for (let seg of segs) {\n seg.eventRange = eventRange;\n }\n return segs;\n }\n return [];\n }\n /*\n \"complete\" seg means it has component and eventRange\n */\n sliceEventRanges(eventRanges, extraArgs) {\n let segs = [];\n for (let eventRange of eventRanges) {\n segs.push(...this.sliceEventRange(eventRange, extraArgs));\n }\n return segs;\n }\n /*\n \"complete\" seg means it has component and eventRange\n */\n sliceEventRange(eventRange, extraArgs) {\n let dateRange = eventRange.range;\n // hack to make multi-day events that are being force-displayed as list-items to take up only one day\n if (this.forceDayIfListItem && eventRange.ui.display === 'list-item') {\n dateRange = {\n start: dateRange.start,\n end: addDays(dateRange.start, 1)\n };\n }\n let segs = this.sliceRange(dateRange, ...extraArgs);\n for (let seg of segs) {\n seg.eventRange = eventRange;\n seg.isStart = eventRange.isStart && seg.isStart;\n seg.isEnd = eventRange.isEnd && seg.isEnd;\n }\n return segs;\n }\n}\n/*\nfor incorporating slotMinTime/slotMaxTime if appropriate\nTODO: should be part of DateProfile!\nTimelineDateProfile already does this btw\n*/\nfunction computeActiveRange(dateProfile, isComponentAllDay) {\n let range = dateProfile.activeRange;\n if (isComponentAllDay) {\n return range;\n }\n return {\n start: addMs(range.start, dateProfile.slotMinTime.milliseconds),\n end: addMs(range.end, dateProfile.slotMaxTime.milliseconds - 864e5) // 864e5 = ms in a day\n };\n}\n\n// high-level segmenting-aware tester functions\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isInteractionValid(interaction, dateProfile, context) {\n let instances = interaction.mutatedEvents.instances;\n for (let instanceId in instances) {\n if (!rangeContainsRange(dateProfile.validRange, instances[instanceId].range)) {\n return false;\n }\n }\n return isNewPropsValid({\n eventDrag: interaction\n }, context); // HACK: the eventDrag props is used for ALL interactions\n}\nfunction isDateSelectionValid(dateSelection, dateProfile, context) {\n if (!rangeContainsRange(dateProfile.validRange, dateSelection.range)) {\n return false;\n }\n return isNewPropsValid({\n dateSelection\n }, context);\n}\nfunction isNewPropsValid(newProps, context) {\n let calendarState = context.getCurrentData();\n let props = Object.assign({\n businessHours: calendarState.businessHours,\n dateSelection: '',\n eventStore: calendarState.eventStore,\n eventUiBases: calendarState.eventUiBases,\n eventSelection: '',\n eventDrag: null,\n eventResize: null\n }, newProps);\n return (context.pluginHooks.isPropsValid || isPropsValid)(props, context);\n}\nfunction isPropsValid(state, context) {\n let dateSpanMeta = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let filterConfig = arguments.length > 3 ? arguments[3] : undefined;\n if (state.eventDrag && !isInteractionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n return false;\n }\n if (state.dateSelection && !isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig)) {\n return false;\n }\n return true;\n}\n// Moving Event Validation\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isInteractionPropsValid(state, context, dateSpanMeta, filterConfig) {\n let currentState = context.getCurrentData();\n let interaction = state.eventDrag; // HACK: the eventDrag props is used for ALL interactions\n let subjectEventStore = interaction.mutatedEvents;\n let subjectDefs = subjectEventStore.defs;\n let subjectInstances = subjectEventStore.instances;\n let subjectConfigs = compileEventUis(subjectDefs, interaction.isEvent ? state.eventUiBases : {\n '': currentState.selectionConfig\n });\n if (filterConfig) {\n subjectConfigs = mapHash(subjectConfigs, filterConfig);\n }\n // exclude the subject events. TODO: exclude defs too?\n let otherEventStore = excludeInstances(state.eventStore, interaction.affectedEvents.instances);\n let otherDefs = otherEventStore.defs;\n let otherInstances = otherEventStore.instances;\n let otherConfigs = compileEventUis(otherDefs, state.eventUiBases);\n for (let subjectInstanceId in subjectInstances) {\n let subjectInstance = subjectInstances[subjectInstanceId];\n let subjectRange = subjectInstance.range;\n let subjectConfig = subjectConfigs[subjectInstance.defId];\n let subjectDef = subjectDefs[subjectInstance.defId];\n // constraint\n if (!allConstraintsPass(subjectConfig.constraints, subjectRange, otherEventStore, state.businessHours, context)) {\n return false;\n }\n // overlap\n let eventOverlap = context.options.eventOverlap;\n let eventOverlapFunc = typeof eventOverlap === 'function' ? eventOverlap : null;\n for (let otherInstanceId in otherInstances) {\n let otherInstance = otherInstances[otherInstanceId];\n // intersect! evaluate\n if (rangesIntersect(subjectRange, otherInstance.range)) {\n let otherOverlap = otherConfigs[otherInstance.defId].overlap;\n // consider the other event's overlap. only do this if the subject event is a \"real\" event\n if (otherOverlap === false && interaction.isEvent) {\n return false;\n }\n if (subjectConfig.overlap === false) {\n return false;\n }\n if (eventOverlapFunc && !eventOverlapFunc(new EventImpl(context, otherDefs[otherInstance.defId], otherInstance),\n // still event\n new EventImpl(context, subjectDef, subjectInstance))) {\n return false;\n }\n }\n }\n // allow (a function)\n let calendarEventStore = currentState.eventStore; // need global-to-calendar, not local to component (splittable)state\n for (let subjectAllow of subjectConfig.allows) {\n let subjectDateSpan = Object.assign(Object.assign({}, dateSpanMeta), {\n range: subjectInstance.range,\n allDay: subjectDef.allDay\n });\n let origDef = calendarEventStore.defs[subjectDef.defId];\n let origInstance = calendarEventStore.instances[subjectInstanceId];\n let eventApi;\n if (origDef) {\n // was previously in the calendar\n eventApi = new EventImpl(context, origDef, origInstance);\n } else {\n // was an external event\n eventApi = new EventImpl(context, subjectDef); // no instance, because had no dates\n }\n if (!subjectAllow(buildDateSpanApiWithContext(subjectDateSpan, context), eventApi)) {\n return false;\n }\n }\n }\n return true;\n}\n// Date Selection Validation\n// ------------------------------------------------------------------------------------------------------------------------\nfunction isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig) {\n let relevantEventStore = state.eventStore;\n let relevantDefs = relevantEventStore.defs;\n let relevantInstances = relevantEventStore.instances;\n let selection = state.dateSelection;\n let selectionRange = selection.range;\n let _context$getCurrentDa2 = context.getCurrentData(),\n selectionConfig = _context$getCurrentDa2.selectionConfig;\n if (filterConfig) {\n selectionConfig = filterConfig(selectionConfig);\n }\n // constraint\n if (!allConstraintsPass(selectionConfig.constraints, selectionRange, relevantEventStore, state.businessHours, context)) {\n return false;\n }\n // overlap\n let selectOverlap = context.options.selectOverlap;\n let selectOverlapFunc = typeof selectOverlap === 'function' ? selectOverlap : null;\n for (let relevantInstanceId in relevantInstances) {\n let relevantInstance = relevantInstances[relevantInstanceId];\n // intersect! evaluate\n if (rangesIntersect(selectionRange, relevantInstance.range)) {\n if (selectionConfig.overlap === false) {\n return false;\n }\n if (selectOverlapFunc && !selectOverlapFunc(new EventImpl(context, relevantDefs[relevantInstance.defId], relevantInstance), null)) {\n return false;\n }\n }\n }\n // allow (a function)\n for (let selectionAllow of selectionConfig.allows) {\n let fullDateSpan = Object.assign(Object.assign({}, dateSpanMeta), selection);\n if (!selectionAllow(buildDateSpanApiWithContext(fullDateSpan, context), null)) {\n return false;\n }\n }\n return true;\n}\n// Constraint Utils\n// ------------------------------------------------------------------------------------------------------------------------\nfunction allConstraintsPass(constraints, subjectRange, otherEventStore, businessHoursUnexpanded, context) {\n for (let constraint of constraints) {\n if (!anyRangesContainRange(constraintToRanges(constraint, subjectRange, otherEventStore, businessHoursUnexpanded, context), subjectRange)) {\n return false;\n }\n }\n return true;\n}\nfunction constraintToRanges(constraint, subjectRange,\n// for expanding a recurring constraint, or expanding business hours\notherEventStore,\n// for if constraint is an even group ID\nbusinessHoursUnexpanded,\n// for if constraint is 'businessHours'\ncontext) {\n if (constraint === 'businessHours') {\n return eventStoreToRanges(expandRecurring(businessHoursUnexpanded, subjectRange, context));\n }\n if (typeof constraint === 'string') {\n // an group ID\n return eventStoreToRanges(filterEventStoreDefs(otherEventStore, eventDef => eventDef.groupId === constraint));\n }\n if (typeof constraint === 'object' && constraint) {\n // non-null object\n return eventStoreToRanges(expandRecurring(constraint, subjectRange, context));\n }\n return []; // if it's false\n}\n// TODO: move to event-store file?\nfunction eventStoreToRanges(eventStore) {\n let instances = eventStore.instances;\n let ranges = [];\n for (let instanceId in instances) {\n ranges.push(instances[instanceId].range);\n }\n return ranges;\n}\n// TODO: move to geom file?\nfunction anyRangesContainRange(outerRanges, innerRange) {\n for (let outerRange of outerRanges) {\n if (rangeContainsRange(outerRange, innerRange)) {\n return true;\n }\n }\n return false;\n}\nconst VISIBLE_HIDDEN_RE = /^(visible|hidden)$/;\nclass Scroller extends BaseComponent {\n constructor() {\n super(...arguments);\n this.handleEl = el => {\n this.el = el;\n setRef(this.props.elRef, el);\n };\n }\n render() {\n let props = this.props;\n let liquid = props.liquid,\n liquidIsAbsolute = props.liquidIsAbsolute;\n let isAbsolute = liquid && liquidIsAbsolute;\n let className = ['fc-scroller'];\n if (liquid) {\n if (liquidIsAbsolute) {\n className.push('fc-scroller-liquid-absolute');\n } else {\n className.push('fc-scroller-liquid');\n }\n }\n return createElement(\"div\", {\n ref: this.handleEl,\n className: className.join(' '),\n style: {\n overflowX: props.overflowX,\n overflowY: props.overflowY,\n left: isAbsolute && -(props.overcomeLeft || 0) || '',\n right: isAbsolute && -(props.overcomeRight || 0) || '',\n bottom: isAbsolute && -(props.overcomeBottom || 0) || '',\n marginLeft: !isAbsolute && -(props.overcomeLeft || 0) || '',\n marginRight: !isAbsolute && -(props.overcomeRight || 0) || '',\n marginBottom: !isAbsolute && -(props.overcomeBottom || 0) || '',\n maxHeight: props.maxHeight || ''\n }\n }, props.children);\n }\n needsXScrolling() {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n return false;\n }\n // testing scrollWidth>clientWidth is unreliable cross-browser when pixel heights aren't integers.\n // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n // inner-child margins and absolute positioning\n let el = this.el;\n let realClientWidth = this.el.getBoundingClientRect().width - this.getYScrollbarWidth();\n let children = el.children;\n for (let i = 0; i < children.length; i += 1) {\n let childEl = children[i];\n if (childEl.getBoundingClientRect().width > realClientWidth) {\n return true;\n }\n }\n return false;\n }\n needsYScrolling() {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n return false;\n }\n // testing scrollHeight>clientHeight is unreliable cross-browser when pixel heights aren't integers.\n // much more reliable to see if children are taller than the scroller, even tho doesn't account for\n // inner-child margins and absolute positioning\n let el = this.el;\n let realClientHeight = this.el.getBoundingClientRect().height - this.getXScrollbarWidth();\n let children = el.children;\n for (let i = 0; i < children.length; i += 1) {\n let childEl = children[i];\n if (childEl.getBoundingClientRect().height > realClientHeight) {\n return true;\n }\n }\n return false;\n }\n getXScrollbarWidth() {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowX)) {\n return 0;\n }\n return this.el.offsetHeight - this.el.clientHeight; // only works because we guarantee no borders. TODO: add to CSS with important?\n }\n getYScrollbarWidth() {\n if (VISIBLE_HIDDEN_RE.test(this.props.overflowY)) {\n return 0;\n }\n return this.el.offsetWidth - this.el.clientWidth; // only works because we guarantee no borders. TODO: add to CSS with important?\n }\n}\n\n/*\nTODO: somehow infer OtherArgs from masterCallback?\nTODO: infer RefType from masterCallback if provided\n*/\nclass RefMap {\n constructor(masterCallback) {\n this.masterCallback = masterCallback;\n this.currentMap = {};\n this.depths = {};\n this.callbackMap = {};\n this.handleValue = (val, key) => {\n let depths = this.depths,\n currentMap = this.currentMap;\n let removed = false;\n let added = false;\n if (val !== null) {\n // for bug... ACTUALLY: can probably do away with this now that callers don't share numeric indices anymore\n removed = key in currentMap;\n currentMap[key] = val;\n depths[key] = (depths[key] || 0) + 1;\n added = true;\n } else {\n depths[key] -= 1;\n if (!depths[key]) {\n delete currentMap[key];\n delete this.callbackMap[key];\n removed = true;\n }\n }\n if (this.masterCallback) {\n if (removed) {\n this.masterCallback(null, String(key));\n }\n if (added) {\n this.masterCallback(val, String(key));\n }\n }\n };\n }\n createRef(key) {\n let refCallback = this.callbackMap[key];\n if (!refCallback) {\n refCallback = this.callbackMap[key] = val => {\n this.handleValue(val, String(key));\n };\n }\n return refCallback;\n }\n // TODO: check callers that don't care about order. should use getAll instead\n // NOTE: this method has become less valuable now that we are encouraged to map order by some other index\n // TODO: provide ONE array-export function, buildArray, which fails on non-numeric indexes. caller can manipulate and \"collect\"\n collect(startIndex, endIndex, step) {\n return collectFromHash(this.currentMap, startIndex, endIndex, step);\n }\n getAll() {\n return hashValuesToArray(this.currentMap);\n }\n}\nfunction computeShrinkWidth(chunkEls) {\n let shrinkCells = findElements(chunkEls, '.fc-scrollgrid-shrink');\n let largestWidth = 0;\n for (let shrinkCell of shrinkCells) {\n largestWidth = Math.max(largestWidth, computeSmallestCellWidth(shrinkCell));\n }\n return Math.ceil(largestWidth); // <table> elements work best with integers. round up to ensure contents fits\n}\nfunction getSectionHasLiquidHeight(props, sectionConfig) {\n return props.liquid && sectionConfig.liquid; // does the section do liquid-height? (need to have whole scrollgrid liquid-height as well)\n}\nfunction getAllowYScrolling(props, sectionConfig) {\n return sectionConfig.maxHeight != null ||\n // if its possible for the height to max out, we might need scrollbars\n getSectionHasLiquidHeight(props, sectionConfig); // if the section is liquid height, it might condense enough to require scrollbars\n}\n// TODO: ONLY use `arg`. force out internal function to use same API\nfunction renderChunkContent(sectionConfig, chunkConfig, arg, isHeader) {\n let expandRows = arg.expandRows;\n let content = typeof chunkConfig.content === 'function' ? chunkConfig.content(arg) : createElement('table', {\n role: 'presentation',\n className: [chunkConfig.tableClassName, sectionConfig.syncRowHeights ? 'fc-scrollgrid-sync-table' : ''].join(' '),\n style: {\n minWidth: arg.tableMinWidth,\n width: arg.clientWidth,\n height: expandRows ? arg.clientHeight : '' // css `height` on a <table> serves as a min-height\n }\n }, arg.tableColGroupNode, createElement(isHeader ? 'thead' : 'tbody', {\n role: 'presentation'\n }, typeof chunkConfig.rowContent === 'function' ? chunkConfig.rowContent(arg) : chunkConfig.rowContent));\n return content;\n}\nfunction isColPropsEqual(cols0, cols1) {\n return isArraysEqual(cols0, cols1, isPropsEqual);\n}\nfunction renderMicroColGroup(cols, shrinkWidth) {\n let colNodes = [];\n /*\n for ColProps with spans, it would have been great to make a single <col span=\"\">\n HOWEVER, Chrome was getting messing up distributing the width to <td>/<th> elements with colspans.\n SOLUTION: making individual <col> elements makes Chrome behave.\n */\n for (let colProps of cols) {\n let span = colProps.span || 1;\n for (let i = 0; i < span; i += 1) {\n colNodes.push(createElement(\"col\", {\n style: {\n width: colProps.width === 'shrink' ? sanitizeShrinkWidth(shrinkWidth) : colProps.width || '',\n minWidth: colProps.minWidth || ''\n }\n }));\n }\n }\n return createElement('colgroup', {}, ...colNodes);\n}\nfunction sanitizeShrinkWidth(shrinkWidth) {\n /* why 4? if we do 0, it will kill any border, which are needed for computeSmallestCellWidth\n 4 accounts for 2 2-pixel borders. TODO: better solution? */\n return shrinkWidth == null ? 4 : shrinkWidth;\n}\nfunction hasShrinkWidth(cols) {\n for (let col of cols) {\n if (col.width === 'shrink') {\n return true;\n }\n }\n return false;\n}\nfunction getScrollGridClassNames(liquid, context) {\n let classNames = ['fc-scrollgrid', context.theme.getClass('table')];\n if (liquid) {\n classNames.push('fc-scrollgrid-liquid');\n }\n return classNames;\n}\nfunction getSectionClassNames(sectionConfig, wholeTableVGrow) {\n let classNames = ['fc-scrollgrid-section', `fc-scrollgrid-section-${sectionConfig.type}`, sectionConfig.className // used?\n ];\n if (wholeTableVGrow && sectionConfig.liquid && sectionConfig.maxHeight == null) {\n classNames.push('fc-scrollgrid-section-liquid');\n }\n if (sectionConfig.isSticky) {\n classNames.push('fc-scrollgrid-section-sticky');\n }\n return classNames;\n}\nfunction renderScrollShim(arg) {\n return createElement(\"div\", {\n className: \"fc-scrollgrid-sticky-shim\",\n style: {\n width: arg.clientWidth,\n minWidth: arg.tableMinWidth\n }\n });\n}\nfunction getStickyHeaderDates(options) {\n let stickyHeaderDates = options.stickyHeaderDates;\n if (stickyHeaderDates == null || stickyHeaderDates === 'auto') {\n stickyHeaderDates = options.height === 'auto' || options.viewHeight === 'auto';\n }\n return stickyHeaderDates;\n}\nfunction getStickyFooterScrollbar(options) {\n let stickyFooterScrollbar = options.stickyFooterScrollbar;\n if (stickyFooterScrollbar == null || stickyFooterScrollbar === 'auto') {\n stickyFooterScrollbar = options.height === 'auto' || options.viewHeight === 'auto';\n }\n return stickyFooterScrollbar;\n}\nclass SimpleScrollGrid extends BaseComponent {\n constructor() {\n super(...arguments);\n this.processCols = memoize(a => a, isColPropsEqual); // so we get same `cols` props every time\n // yucky to memoize VNodes, but much more efficient for consumers\n this.renderMicroColGroup = memoize(renderMicroColGroup);\n this.scrollerRefs = new RefMap();\n this.scrollerElRefs = new RefMap(this._handleScrollerEl.bind(this));\n this.state = {\n shrinkWidth: null,\n forceYScrollbars: false,\n scrollerClientWidths: {},\n scrollerClientHeights: {}\n };\n // TODO: can do a really simple print-view. dont need to join rows\n this.handleSizing = () => {\n this.safeSetState(Object.assign({\n shrinkWidth: this.computeShrinkWidth()\n }, this.computeScrollerDims()));\n };\n }\n render() {\n let props = this.props,\n state = this.state,\n context = this.context;\n let sectionConfigs = props.sections || [];\n let cols = this.processCols(props.cols);\n let microColGroupNode = this.renderMicroColGroup(cols, state.shrinkWidth);\n let classNames = getScrollGridClassNames(props.liquid, context);\n if (props.collapsibleWidth) {\n classNames.push('fc-scrollgrid-collapsible');\n }\n // TODO: make DRY\n let configCnt = sectionConfigs.length;\n let configI = 0;\n let currentConfig;\n let headSectionNodes = [];\n let bodySectionNodes = [];\n let footSectionNodes = [];\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n headSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n bodySectionNodes.push(this.renderSection(currentConfig, microColGroupNode, false));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n footSectionNodes.push(this.renderSection(currentConfig, microColGroupNode, true));\n configI += 1;\n }\n // firefox bug: when setting height on table and there is a thead or tfoot,\n // the necessary height:100% on the liquid-height body section forces the *whole* table to be taller. (bug #5524)\n // use getCanVGrowWithinCell as a way to detect table-stupid firefox.\n // if so, use a simpler dom structure, jam everything into a lone tbody.\n let isBuggy = !getCanVGrowWithinCell();\n const roleAttrs = {\n role: 'rowgroup'\n };\n return createElement('table', {\n role: 'grid',\n className: classNames.join(' '),\n style: {\n height: props.height\n }\n }, Boolean(!isBuggy && headSectionNodes.length) && createElement('thead', roleAttrs, ...headSectionNodes), Boolean(!isBuggy && bodySectionNodes.length) && createElement('tbody', roleAttrs, ...bodySectionNodes), Boolean(!isBuggy && footSectionNodes.length) && createElement('tfoot', roleAttrs, ...footSectionNodes), isBuggy && createElement('tbody', roleAttrs, ...headSectionNodes, ...bodySectionNodes, ...footSectionNodes));\n }\n renderSection(sectionConfig, microColGroupNode, isHeader) {\n if ('outerContent' in sectionConfig) {\n return createElement(Fragment, {\n key: sectionConfig.key\n }, sectionConfig.outerContent);\n }\n return createElement(\"tr\", {\n key: sectionConfig.key,\n role: \"presentation\",\n className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ')\n }, this.renderChunkTd(sectionConfig, microColGroupNode, sectionConfig.chunk, isHeader));\n }\n renderChunkTd(sectionConfig, microColGroupNode, chunkConfig, isHeader) {\n if ('outerContent' in chunkConfig) {\n return chunkConfig.outerContent;\n }\n let props = this.props;\n let _this$state = this.state,\n forceYScrollbars = _this$state.forceYScrollbars,\n scrollerClientWidths = _this$state.scrollerClientWidths,\n scrollerClientHeights = _this$state.scrollerClientHeights;\n let needsYScrolling = getAllowYScrolling(props, sectionConfig); // TODO: do lazily. do in section config?\n let isLiquid = getSectionHasLiquidHeight(props, sectionConfig);\n // for `!props.liquid` - is WHOLE scrollgrid natural height?\n // TODO: do same thing in advanced scrollgrid? prolly not b/c always has horizontal scrollbars\n let overflowY = !props.liquid ? 'visible' : forceYScrollbars ? 'scroll' : !needsYScrolling ? 'hidden' : 'auto';\n let sectionKey = sectionConfig.key;\n let content = renderChunkContent(sectionConfig, chunkConfig, {\n tableColGroupNode: microColGroupNode,\n tableMinWidth: '',\n clientWidth: !props.collapsibleWidth && scrollerClientWidths[sectionKey] !== undefined ? scrollerClientWidths[sectionKey] : null,\n clientHeight: scrollerClientHeights[sectionKey] !== undefined ? scrollerClientHeights[sectionKey] : null,\n expandRows: sectionConfig.expandRows,\n syncRowHeights: false,\n rowSyncHeights: [],\n reportRowHeightChange: () => {}\n }, isHeader);\n return createElement(isHeader ? 'th' : 'td', {\n ref: chunkConfig.elRef,\n role: 'presentation'\n }, createElement(\"div\", {\n className: `fc-scroller-harness${isLiquid ? ' fc-scroller-harness-liquid' : ''}`\n }, createElement(Scroller, {\n ref: this.scrollerRefs.createRef(sectionKey),\n elRef: this.scrollerElRefs.createRef(sectionKey),\n overflowY: overflowY,\n overflowX: !props.liquid ? 'visible' : 'hidden' /* natural height? */,\n maxHeight: sectionConfig.maxHeight,\n liquid: isLiquid,\n liquidIsAbsolute // because its within a harness\n : true\n }, content)));\n }\n _handleScrollerEl(scrollerEl, key) {\n let section = getSectionByKey(this.props.sections, key);\n if (section) {\n setRef(section.chunk.scrollerElRef, scrollerEl);\n }\n }\n componentDidMount() {\n this.handleSizing();\n this.context.addResizeHandler(this.handleSizing);\n }\n componentDidUpdate() {\n // TODO: need better solution when state contains non-sizing things\n this.handleSizing();\n }\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleSizing);\n }\n computeShrinkWidth() {\n return hasShrinkWidth(this.props.cols) ? computeShrinkWidth(this.scrollerElRefs.getAll()) : 0;\n }\n computeScrollerDims() {\n let scrollbarWidth = getScrollbarWidths();\n let scrollerRefs = this.scrollerRefs,\n scrollerElRefs = this.scrollerElRefs;\n let forceYScrollbars = false;\n let scrollerClientWidths = {};\n let scrollerClientHeights = {};\n for (let sectionKey in scrollerRefs.currentMap) {\n let scroller = scrollerRefs.currentMap[sectionKey];\n if (scroller && scroller.needsYScrolling()) {\n forceYScrollbars = true;\n break;\n }\n }\n for (let section of this.props.sections) {\n let sectionKey = section.key;\n let scrollerEl = scrollerElRefs.currentMap[sectionKey];\n if (scrollerEl) {\n let harnessEl = scrollerEl.parentNode; // TODO: weird way to get this. need harness b/c doesn't include table borders\n scrollerClientWidths[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().width - (forceYScrollbars ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n : 0));\n scrollerClientHeights[sectionKey] = Math.floor(harnessEl.getBoundingClientRect().height);\n }\n }\n return {\n forceYScrollbars,\n scrollerClientWidths,\n scrollerClientHeights\n };\n }\n}\nSimpleScrollGrid.addStateEquality({\n scrollerClientWidths: isPropsEqual,\n scrollerClientHeights: isPropsEqual\n});\nfunction getSectionByKey(sections, key) {\n for (let section of sections) {\n if (section.key === key) {\n return section;\n }\n }\n return null;\n}\nclass EventContainer extends BaseComponent {\n constructor() {\n super(...arguments);\n this.handleEl = el => {\n this.el = el;\n if (el) {\n setElSeg(el, this.props.seg);\n }\n };\n }\n render() {\n const props = this.props,\n context = this.context;\n const options = context.options;\n const seg = props.seg;\n const eventRange = seg.eventRange;\n const ui = eventRange.ui;\n const renderProps = {\n event: new EventImpl(context, eventRange.def, eventRange.instance),\n view: context.viewApi,\n timeText: props.timeText,\n textColor: ui.textColor,\n backgroundColor: ui.backgroundColor,\n borderColor: ui.borderColor,\n isDraggable: !props.disableDragging && computeSegDraggable(seg, context),\n isStartResizable: !props.disableResizing && computeSegStartResizable(seg, context),\n isEndResizable: !props.disableResizing && computeSegEndResizable(seg),\n isMirror: Boolean(props.isDragging || props.isResizing || props.isDateSelecting),\n isStart: Boolean(seg.isStart),\n isEnd: Boolean(seg.isEnd),\n isPast: Boolean(props.isPast),\n isFuture: Boolean(props.isFuture),\n isToday: Boolean(props.isToday),\n isSelected: Boolean(props.isSelected),\n isDragging: Boolean(props.isDragging),\n isResizing: Boolean(props.isResizing)\n };\n return createElement(ContentContainer, Object.assign({}, props /* contains children */, {\n elRef: this.handleEl,\n elClasses: [...getEventClassNames(renderProps), ...seg.eventRange.ui.classNames, ...(props.elClasses || [])],\n renderProps: renderProps,\n generatorName: \"eventContent\",\n customGenerator: options.eventContent,\n defaultGenerator: props.defaultGenerator,\n classNameGenerator: options.eventClassNames,\n didMount: options.eventDidMount,\n willUnmount: options.eventWillUnmount\n }));\n }\n componentDidUpdate(prevProps) {\n if (this.el && this.props.seg !== prevProps.seg) {\n setElSeg(this.el, this.props.seg);\n }\n }\n}\n\n// should not be a purecomponent\nclass StandardEvent extends BaseComponent {\n render() {\n let props = this.props,\n context = this.context;\n let options = context.options;\n let seg = props.seg;\n let ui = seg.eventRange.ui;\n let timeFormat = options.eventTimeFormat || props.defaultTimeFormat;\n let timeText = buildSegTimeText(seg, timeFormat, context, props.defaultDisplayEventTime, props.defaultDisplayEventEnd);\n return createElement(EventContainer, Object.assign({}, props /* includes elRef */, {\n elTag: \"a\",\n elStyle: {\n borderColor: ui.borderColor,\n backgroundColor: ui.backgroundColor\n },\n elAttrs: getSegAnchorAttrs(seg, context),\n defaultGenerator: renderInnerContent$1,\n timeText: timeText\n }), (InnerContent, eventContentArg) => createElement(Fragment, null, createElement(InnerContent, {\n elTag: \"div\",\n elClasses: ['fc-event-main'],\n elStyle: {\n color: eventContentArg.textColor\n }\n }), Boolean(eventContentArg.isStartResizable) && createElement(\"div\", {\n className: \"fc-event-resizer fc-event-resizer-start\"\n }), Boolean(eventContentArg.isEndResizable) && createElement(\"div\", {\n className: \"fc-event-resizer fc-event-resizer-end\"\n })));\n }\n}\nfunction renderInnerContent$1(innerProps) {\n return createElement(\"div\", {\n className: \"fc-event-main-frame\"\n }, innerProps.timeText && createElement(\"div\", {\n className: \"fc-event-time\"\n }, innerProps.timeText), createElement(\"div\", {\n className: \"fc-event-title-container\"\n }, createElement(\"div\", {\n className: \"fc-event-title fc-sticky\"\n }, innerProps.event.title || createElement(Fragment, null, \"\\u00A0\"))));\n}\nconst NowIndicatorContainer = props => createElement(ViewContextType.Consumer, null, context => {\n let options = context.options;\n let renderProps = {\n isAxis: props.isAxis,\n date: context.dateEnv.toDate(props.date),\n view: context.viewApi\n };\n return createElement(ContentContainer, Object.assign({}, props /* includes children */, {\n elTag: props.elTag || 'div',\n renderProps: renderProps,\n generatorName: \"nowIndicatorContent\",\n customGenerator: options.nowIndicatorContent,\n classNameGenerator: options.nowIndicatorClassNames,\n didMount: options.nowIndicatorDidMount,\n willUnmount: options.nowIndicatorWillUnmount\n }));\n});\nconst DAY_NUM_FORMAT = createFormatter({\n day: 'numeric'\n});\nclass DayCellContainer extends BaseComponent {\n constructor() {\n super(...arguments);\n this.refineRenderProps = memoizeObjArg(refineRenderProps);\n }\n render() {\n let props = this.props,\n context = this.context;\n let options = context.options;\n let renderProps = this.refineRenderProps({\n date: props.date,\n dateProfile: props.dateProfile,\n todayRange: props.todayRange,\n isMonthStart: props.isMonthStart || false,\n showDayNumber: props.showDayNumber,\n extraRenderProps: props.extraRenderProps,\n viewApi: context.viewApi,\n dateEnv: context.dateEnv,\n monthStartFormat: options.monthStartFormat\n });\n return createElement(ContentContainer, Object.assign({}, props /* includes children */, {\n elClasses: [...getDayClassNames(renderProps, context.theme), ...(props.elClasses || [])],\n elAttrs: Object.assign(Object.assign({}, props.elAttrs), renderProps.isDisabled ? {} : {\n 'data-date': formatDayString(props.date)\n }),\n renderProps: renderProps,\n generatorName: \"dayCellContent\",\n customGenerator: options.dayCellContent,\n defaultGenerator: props.defaultGenerator,\n classNameGenerator:\n // don't use custom classNames if disabled\n renderProps.isDisabled ? undefined : options.dayCellClassNames,\n didMount: options.dayCellDidMount,\n willUnmount: options.dayCellWillUnmount\n }));\n }\n}\nfunction hasCustomDayCellContent(options) {\n return Boolean(options.dayCellContent || hasCustomRenderingHandler('dayCellContent', options));\n}\nfunction refineRenderProps(raw) {\n let date = raw.date,\n dateEnv = raw.dateEnv,\n dateProfile = raw.dateProfile,\n isMonthStart = raw.isMonthStart;\n let dayMeta = getDateMeta(date, raw.todayRange, null, dateProfile);\n let dayNumberText = raw.showDayNumber ? dateEnv.format(date, isMonthStart ? raw.monthStartFormat : DAY_NUM_FORMAT) : '';\n return Object.assign(Object.assign(Object.assign({\n date: dateEnv.toDate(date),\n view: raw.viewApi\n }, dayMeta), {\n isMonthStart,\n dayNumberText\n }), raw.extraRenderProps);\n}\nclass BgEvent extends BaseComponent {\n render() {\n let props = this.props;\n let seg = props.seg;\n return createElement(EventContainer, {\n elTag: \"div\",\n elClasses: ['fc-bg-event'],\n elStyle: {\n backgroundColor: seg.eventRange.ui.backgroundColor\n },\n defaultGenerator: renderInnerContent,\n seg: seg,\n timeText: \"\",\n isDragging: false,\n isResizing: false,\n isDateSelecting: false,\n isSelected: false,\n isPast: props.isPast,\n isFuture: props.isFuture,\n isToday: props.isToday,\n disableDragging: true,\n disableResizing: true\n });\n }\n}\nfunction renderInnerContent(props) {\n let title = props.event.title;\n return title && createElement(\"div\", {\n className: \"fc-event-title\"\n }, props.event.title);\n}\nfunction renderFill(fillType) {\n return createElement(\"div\", {\n className: `fc-${fillType}`\n });\n}\nconst WeekNumberContainer = props => createElement(ViewContextType.Consumer, null, context => {\n let dateEnv = context.dateEnv,\n options = context.options;\n let date = props.date;\n let format = options.weekNumberFormat || props.defaultFormat;\n let num = dateEnv.computeWeekNumber(date); // TODO: somehow use for formatting as well?\n let text = dateEnv.format(date, format);\n let renderProps = {\n num,\n text,\n date\n };\n return createElement(ContentContainer // why isn't WeekNumberContentArg being auto-detected?\n , Object.assign({}, props /* includes children */, {\n renderProps: renderProps,\n generatorName: \"weekNumberContent\",\n customGenerator: options.weekNumberContent,\n defaultGenerator: renderInner,\n classNameGenerator: options.weekNumberClassNames,\n didMount: options.weekNumberDidMount,\n willUnmount: options.weekNumberWillUnmount\n }));\n});\nfunction renderInner(innerProps) {\n return innerProps.text;\n}\nconst PADDING_FROM_VIEWPORT = 10;\nclass Popover extends BaseComponent {\n constructor() {\n super(...arguments);\n this.state = {\n titleId: getUniqueDomId()\n };\n this.handleRootEl = el => {\n this.rootEl = el;\n if (this.props.elRef) {\n setRef(this.props.elRef, el);\n }\n };\n // Triggered when the user clicks *anywhere* in the document, for the autoHide feature\n this.handleDocumentMouseDown = ev => {\n // only hide the popover if the click happened outside the popover\n const target = getEventTargetViaRoot(ev);\n if (!this.rootEl.contains(target)) {\n this.handleCloseClick();\n }\n };\n this.handleDocumentKeyDown = ev => {\n if (ev.key === 'Escape') {\n this.handleCloseClick();\n }\n };\n this.handleCloseClick = () => {\n let onClose = this.props.onClose;\n if (onClose) {\n onClose();\n }\n };\n }\n render() {\n let _this$context3 = this.context,\n theme = _this$context3.theme,\n options = _this$context3.options;\n let props = this.props,\n state = this.state;\n let classNames = ['fc-popover', theme.getClass('popover')].concat(props.extraClassNames || []);\n return createPortal(createElement(\"div\", Object.assign({}, props.extraAttrs, {\n id: props.id,\n className: classNames.join(' '),\n \"aria-labelledby\": state.titleId,\n ref: this.handleRootEl\n }), createElement(\"div\", {\n className: 'fc-popover-header ' + theme.getClass('popoverHeader')\n }, createElement(\"span\", {\n className: \"fc-popover-title\",\n id: state.titleId\n }, props.title), createElement(\"span\", {\n className: 'fc-popover-close ' + theme.getIconClass('close'),\n title: options.closeHint,\n onClick: this.handleCloseClick\n })), createElement(\"div\", {\n className: 'fc-popover-body ' + theme.getClass('popoverContent')\n }, props.children)), props.parentEl);\n }\n componentDidMount() {\n document.addEventListener('mousedown', this.handleDocumentMouseDown);\n document.addEventListener('keydown', this.handleDocumentKeyDown);\n this.updateSize();\n }\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.handleDocumentMouseDown);\n document.removeEventListener('keydown', this.handleDocumentKeyDown);\n }\n updateSize() {\n let isRtl = this.context.isRtl;\n let _this$props5 = this.props,\n alignmentEl = _this$props5.alignmentEl,\n alignGridTop = _this$props5.alignGridTop;\n let rootEl = this.rootEl;\n let alignmentRect = computeClippedClientRect(alignmentEl);\n if (alignmentRect) {\n let popoverDims = rootEl.getBoundingClientRect();\n // position relative to viewport\n let popoverTop = alignGridTop ? elementClosest(alignmentEl, '.fc-scrollgrid').getBoundingClientRect().top : alignmentRect.top;\n let popoverLeft = isRtl ? alignmentRect.right - popoverDims.width : alignmentRect.left;\n // constrain\n popoverTop = Math.max(popoverTop, PADDING_FROM_VIEWPORT);\n popoverLeft = Math.min(popoverLeft, document.documentElement.clientWidth - PADDING_FROM_VIEWPORT - popoverDims.width);\n popoverLeft = Math.max(popoverLeft, PADDING_FROM_VIEWPORT);\n let origin = rootEl.offsetParent.getBoundingClientRect();\n applyStyle(rootEl, {\n top: popoverTop - origin.top,\n left: popoverLeft - origin.left\n });\n }\n }\n}\nclass MorePopover extends DateComponent {\n constructor() {\n super(...arguments);\n this.handleRootEl = rootEl => {\n this.rootEl = rootEl;\n if (rootEl) {\n this.context.registerInteractiveComponent(this, {\n el: rootEl,\n useEventCenter: false\n });\n } else {\n this.context.unregisterInteractiveComponent(this);\n }\n };\n }\n render() {\n let _this$context4 = this.context,\n options = _this$context4.options,\n dateEnv = _this$context4.dateEnv;\n let props = this.props;\n let startDate = props.startDate,\n todayRange = props.todayRange,\n dateProfile = props.dateProfile;\n let title = dateEnv.format(startDate, options.dayPopoverFormat);\n return createElement(DayCellContainer, {\n elRef: this.handleRootEl,\n date: startDate,\n dateProfile: dateProfile,\n todayRange: todayRange\n }, (InnerContent, renderProps, elAttrs) => createElement(Popover, {\n elRef: elAttrs.ref,\n id: props.id,\n title: title,\n extraClassNames: ['fc-more-popover'].concat(elAttrs.className || []),\n extraAttrs: elAttrs /* TODO: make these time-based when not whole-day? */,\n parentEl: props.parentEl,\n alignmentEl: props.alignmentEl,\n alignGridTop: props.alignGridTop,\n onClose: props.onClose\n }, hasCustomDayCellContent(options) && createElement(InnerContent, {\n elTag: \"div\",\n elClasses: ['fc-more-popover-misc']\n }), props.children));\n }\n queryHit(positionLeft, positionTop, elWidth, elHeight) {\n let rootEl = this.rootEl,\n props = this.props;\n if (positionLeft >= 0 && positionLeft < elWidth && positionTop >= 0 && positionTop < elHeight) {\n return {\n dateProfile: props.dateProfile,\n dateSpan: Object.assign({\n allDay: !props.forceTimed,\n range: {\n start: props.startDate,\n end: props.endDate\n }\n }, props.extraDateSpan),\n dayEl: rootEl,\n rect: {\n left: 0,\n top: 0,\n right: elWidth,\n bottom: elHeight\n },\n layer: 1 // important when comparing with hits from other components\n };\n }\n return null;\n }\n}\nclass MoreLinkContainer extends BaseComponent {\n constructor() {\n super(...arguments);\n this.state = {\n isPopoverOpen: false,\n popoverId: getUniqueDomId()\n };\n this.handleLinkEl = linkEl => {\n this.linkEl = linkEl;\n if (this.props.elRef) {\n setRef(this.props.elRef, linkEl);\n }\n };\n this.handleClick = ev => {\n let props = this.props,\n context = this.context;\n let moreLinkClick = context.options.moreLinkClick;\n let date = computeRange(props).start;\n function buildPublicSeg(seg) {\n let _seg$eventRange3 = seg.eventRange,\n def = _seg$eventRange3.def,\n instance = _seg$eventRange3.instance,\n range = _seg$eventRange3.range;\n return {\n event: new EventImpl(context, def, instance),\n start: context.dateEnv.toDate(range.start),\n end: context.dateEnv.toDate(range.end),\n isStart: seg.isStart,\n isEnd: seg.isEnd\n };\n }\n if (typeof moreLinkClick === 'function') {\n moreLinkClick = moreLinkClick({\n date,\n allDay: Boolean(props.allDayDate),\n allSegs: props.allSegs.map(buildPublicSeg),\n hiddenSegs: props.hiddenSegs.map(buildPublicSeg),\n jsEvent: ev,\n view: context.viewApi\n });\n }\n if (!moreLinkClick || moreLinkClick === 'popover') {\n this.setState({\n isPopoverOpen: true\n });\n } else if (typeof moreLinkClick === 'string') {\n // a view name\n context.calendarApi.zoomTo(date, moreLinkClick);\n }\n };\n this.handlePopoverClose = () => {\n this.setState({\n isPopoverOpen: false\n });\n };\n }\n render() {\n let props = this.props,\n state = this.state;\n return createElement(ViewContextType.Consumer, null, context => {\n let viewApi = context.viewApi,\n options = context.options,\n calendarApi = context.calendarApi;\n let moreLinkText = options.moreLinkText;\n let moreCnt = props.moreCnt;\n let range = computeRange(props);\n let text = typeof moreLinkText === 'function' // TODO: eventually use formatWithOrdinals\n ? moreLinkText.call(calendarApi, moreCnt) : `+${moreCnt} ${moreLinkText}`;\n let hint = formatWithOrdinals(options.moreLinkHint, [moreCnt], text);\n let renderProps = {\n num: moreCnt,\n shortText: `+${moreCnt}`,\n text,\n view: viewApi\n };\n return createElement(Fragment, null, Boolean(props.moreCnt) && createElement(ContentContainer, {\n elTag: props.elTag || 'a',\n elRef: this.handleLinkEl,\n elClasses: [...(props.elClasses || []), 'fc-more-link'],\n elStyle: props.elStyle,\n elAttrs: Object.assign(Object.assign(Object.assign({}, props.elAttrs), createAriaClickAttrs(this.handleClick)), {\n title: hint,\n 'aria-expanded': state.isPopoverOpen,\n 'aria-controls': state.isPopoverOpen ? state.popoverId : ''\n }),\n renderProps: renderProps,\n generatorName: \"moreLinkContent\",\n customGenerator: options.moreLinkContent,\n defaultGenerator: props.defaultGenerator || renderMoreLinkInner,\n classNameGenerator: options.moreLinkClassNames,\n didMount: options.moreLinkDidMount,\n willUnmount: options.moreLinkWillUnmount\n }, props.children), state.isPopoverOpen && createElement(MorePopover, {\n id: state.popoverId,\n startDate: range.start,\n endDate: range.end,\n dateProfile: props.dateProfile,\n todayRange: props.todayRange,\n extraDateSpan: props.extraDateSpan,\n parentEl: this.parentEl,\n alignmentEl: props.alignmentElRef ? props.alignmentElRef.current : this.linkEl,\n alignGridTop: props.alignGridTop,\n forceTimed: props.forceTimed,\n onClose: this.handlePopoverClose\n }, props.popoverContent()));\n });\n }\n componentDidMount() {\n this.updateParentEl();\n }\n componentDidUpdate() {\n this.updateParentEl();\n }\n updateParentEl() {\n if (this.linkEl) {\n this.parentEl = elementClosest(this.linkEl, '.fc-view-harness');\n }\n }\n}\nfunction renderMoreLinkInner(props) {\n return props.text;\n}\nfunction computeRange(props) {\n if (props.allDayDate) {\n return {\n start: props.allDayDate,\n end: addDays(props.allDayDate, 1)\n };\n }\n let hiddenSegs = props.hiddenSegs;\n return {\n start: computeEarliestSegStart(hiddenSegs),\n end: computeLatestSegEnd(hiddenSegs)\n };\n}\nfunction computeEarliestSegStart(segs) {\n return segs.reduce(pickEarliestStart).eventRange.range.start;\n}\nfunction pickEarliestStart(seg0, seg1) {\n return seg0.eventRange.range.start < seg1.eventRange.range.start ? seg0 : seg1;\n}\nfunction computeLatestSegEnd(segs) {\n return segs.reduce(pickLatestEnd).eventRange.range.end;\n}\nfunction pickLatestEnd(seg0, seg1) {\n return seg0.eventRange.range.end > seg1.eventRange.range.end ? seg0 : seg1;\n}\nclass Store {\n constructor() {\n this.handlers = [];\n }\n set(value) {\n this.currentValue = value;\n for (let handler of this.handlers) {\n handler(value);\n }\n }\n subscribe(handler) {\n this.handlers.push(handler);\n if (this.currentValue !== undefined) {\n handler(this.currentValue);\n }\n }\n}\n\n/*\nSubscribers will get a LIST of CustomRenderings\n*/\nclass CustomRenderingStore extends Store {\n constructor() {\n super(...arguments);\n this.map = new Map();\n }\n // for consistent order\n handle(customRendering) {\n const map = this.map;\n let updated = false;\n if (customRendering.isActive) {\n map.set(customRendering.id, customRendering);\n updated = true;\n } else if (map.has(customRendering.id)) {\n map.delete(customRendering.id);\n updated = true;\n }\n if (updated) {\n this.set(map);\n }\n }\n}\nexport { elementClosest as $, memoizeObjArg as A, BaseComponent as B, ContentContainer as C, DelayedRunner as D, isPropsEqual as E, Emitter as F, getInitialDate as G, rangeContainsMarker as H, createEmptyEventStore as I, reduceCurrentDate as J, reduceEventStore as K, rezoneEventStoreDates as L, mergeRawOptions as M, BASE_OPTION_REFINERS as N, CALENDAR_LISTENER_REFINERS as O, CALENDAR_OPTION_REFINERS as P, COMPLEX_OPTION_COMPARATORS as Q, VIEW_OPTION_REFINERS as R, DateEnv as S, Theme as T, DateProfileGenerator as U, ViewContextType as V, createEventUi as W, parseBusinessHours as X, setRef as Y, Interaction as Z, getElSeg as _, mapHash as a, getSlotClassNames as a$, EventImpl as a0, listenBySelector as a1, listenToHoverBySelector as a2, PureComponent as a3, buildViewContext as a4, getUniqueDomId as a5, parseInteractionSettings as a6, interactionSettingsStore as a7, getNow as a8, CalendarImpl as a9, diffDates as aA, removeExact as aB, memoizeArraylike as aC, memoizeHashlike as aD, intersectRects as aE, pointInsideRect as aF, constrainPoint as aG, getRectCenter as aH, diffPoints as aI, translateRect as aJ, compareObjs as aK, collectFromHash as aL, findElements as aM, findDirectChildren as aN, removeElement as aO, applyStyle as aP, elementMatches as aQ, getEventTargetViaRoot as aR, parseClassNames as aS, getCanVGrowWithinCell as aT, mergeEventStores as aU, getRelevantEvents as aV, eventTupleToStore as aW, combineEventUis as aX, Splitter as aY, getDayClassNames as aZ, getDateMeta as a_, flushSync as aa, CalendarRoot as ab, RenderId as ac, ensureElHasStyles as ad, applyStyleProp as ae, sliceEventStore as af, JsonRequestError as ag, createContext as ah, refineProps as ai, createEventInstance as aj, parseEventDef as ak, refineEventDef as al, padStart as am, isInt as an, parseFieldSpecs as ao, compareByFieldSpecs as ap, flexibleCompare as aq, preventSelection as ar, allowSelection as as, preventContextMenu as at, allowContextMenu as au, compareNumbers as av, enableCursor as aw, disableCursor as ax, computeVisibleDayRange as ay, isMultiDayRange as az, buildViewClassNames as b, SimpleScrollGrid as b$, buildNavLinkAttrs as b0, preventDefault as b1, whenTransitionDone as b2, computeInnerRect as b3, computeEdges as b4, getClippingParents as b5, computeRect as b6, rangesEqual as b7, rangesIntersect as b8, rangeContainsRange as b9, SegHierarchy as bA, buildEntryKey as bB, getEntrySpanEnd as bC, binarySearch as bD, groupIntersectingEntries as bE, intersectSpans as bF, interactionSettingsToStore as bG, ElementDragging as bH, config as bI, parseDragMeta as bJ, DayHeader as bK, computeFallbackHeaderFormat as bL, TableDateCell as bM, TableDowCell as bN, DaySeriesModel as bO, hasBgRendering as bP, buildSegTimeText as bQ, sortEventSegs as bR, getSegMeta as bS, buildEventRangeKey as bT, getSegAnchorAttrs as bU, DayTableModel as bV, Slicer as bW, applyMutationToEventStore as bX, isPropsValid as bY, isInteractionValid as bZ, isDateSelectionValid as b_, PositionCache as ba, ScrollController as bb, ElementScrollController as bc, WindowScrollController as bd, DateComponent as be, isDateSpansEqual as bf, addMs as bg, addWeeks as bh, diffWeeks as bi, diffWholeWeeks as bj, diffDayAndTime as bk, diffDays as bl, isValidDate as bm, asCleanDays as bn, multiplyDuration as bo, addDurations as bp, asRoughMinutes as bq, asRoughSeconds as br, asRoughMs as bs, wholeDivideDurations as bt, formatIsoTimeString as bu, formatDayString as bv, buildIsoString as bw, formatIsoMonthStr as bx, NamedTimeZoneImpl as by, parse as bz, greatestDurationDenominator as c, hasShrinkWidth as c0, renderMicroColGroup as c1, getScrollGridClassNames as c2, getSectionClassNames as c3, getSectionHasLiquidHeight as c4, getAllowYScrolling as c5, renderChunkContent as c6, computeShrinkWidth as c7, sanitizeShrinkWidth as c8, isColPropsEqual as c9, renderScrollShim as ca, getStickyFooterScrollbar as cb, getStickyHeaderDates as cc, Scroller as cd, getScrollbarWidths as ce, RefMap as cf, getIsRtlScrollbarOnLeft as cg, NowTimer as ch, ScrollResponder as ci, StandardEvent as cj, NowIndicatorContainer as ck, DayCellContainer as cl, hasCustomDayCellContent as cm, EventContainer as cn, renderFill as co, BgEvent as cp, WeekNumberContainer as cq, MoreLinkContainer as cr, computeEarliestSegStart as cs, ViewContainer as ct, triggerDateSelect as cu, getDefaultEventEnd as cv, injectStyles as cw, buildElAttrs as cx, CustomRenderingStore as cy, createDuration as d, BASE_OPTION_DEFAULTS as e, arrayToHash as f, guid as g, filterHash as h, isArraysEqual as i, buildEventSourceRefiners as j, formatWithOrdinals as k, buildRangeApiWithTimeZone as l, mergeProps as m, identity as n, intersectRanges as o, parseEventSource as p, startOfDay as q, requestJson as r, subtractDurations as s, addDays as t, unpromisify as u, hashValuesToArray as v, buildEventApis as w, createFormatter as x, diffWholeDays as y, memoize as z };","function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nimport { m as mergeProps, g as guid, i as isArraysEqual, T as Theme, a as mapHash, B as BaseComponent, V as ViewContextType, C as ContentContainer, b as buildViewClassNames, c as greatestDurationDenominator, d as createDuration, e as BASE_OPTION_DEFAULTS, f as arrayToHash, h as filterHash, j as buildEventSourceRefiners, p as parseEventSource, k as formatWithOrdinals, u as unpromisify, l as buildRangeApiWithTimeZone, n as identity, r as requestJson, s as subtractDurations, o as intersectRanges, q as startOfDay, t as addDays, v as hashValuesToArray, w as buildEventApis, D as DelayedRunner, x as createFormatter, y as diffWholeDays, z as memoize, A as memoizeObjArg, E as isPropsEqual, F as Emitter, G as getInitialDate, H as rangeContainsMarker, I as createEmptyEventStore, J as reduceCurrentDate, K as reduceEventStore, L as rezoneEventStoreDates, M as mergeRawOptions, N as BASE_OPTION_REFINERS, O as CALENDAR_LISTENER_REFINERS, P as CALENDAR_OPTION_REFINERS, Q as COMPLEX_OPTION_COMPARATORS, R as VIEW_OPTION_REFINERS, S as DateEnv, U as DateProfileGenerator, W as createEventUi, X as parseBusinessHours, Y as setRef, Z as Interaction, _ as getElSeg, $ as elementClosest, a0 as EventImpl, a1 as listenBySelector, a2 as listenToHoverBySelector, a3 as PureComponent, a4 as buildViewContext, a5 as getUniqueDomId, a6 as parseInteractionSettings, a7 as interactionSettingsStore, a8 as getNow, a9 as CalendarImpl, aa as flushSync, ab as CalendarRoot, ac as RenderId, ad as ensureElHasStyles, ae as applyStyleProp, af as sliceEventStore } from './internal-common.js';\nexport { ag as JsonRequestError } from './internal-common.js';\nimport { createElement, createRef, Fragment, render } from 'preact';\nimport 'preact/compat';\nconst globalLocales = [];\nconst MINIMAL_RAW_EN_LOCALE = {\n code: 'en',\n week: {\n dow: 0,\n doy: 4 // 4 days need to be within the year to be considered the first week\n },\n direction: 'ltr',\n buttonText: {\n prev: 'prev',\n next: 'next',\n prevYear: 'prev year',\n nextYear: 'next year',\n year: 'year',\n today: 'today',\n month: 'month',\n week: 'week',\n day: 'day',\n list: 'list'\n },\n weekText: 'W',\n weekTextLong: 'Week',\n closeHint: 'Close',\n timeHint: 'Time',\n eventHint: 'Event',\n allDayText: 'all-day',\n moreLinkText: 'more',\n noEventsText: 'No events to display'\n};\nconst RAW_EN_LOCALE = Object.assign(Object.assign({}, MINIMAL_RAW_EN_LOCALE), {\n // Includes things we don't want other locales to inherit,\n // things that derive from other translatable strings.\n buttonHints: {\n prev: 'Previous $0',\n next: 'Next $0',\n today(buttonText, unit) {\n return unit === 'day' ? 'Today' : `This ${buttonText}`;\n }\n },\n viewHint: '$0 view',\n navLinkHint: 'Go to $0',\n moreLinkHint(eventCnt) {\n return `Show ${eventCnt} more event${eventCnt === 1 ? '' : 's'}`;\n }\n});\nfunction organizeRawLocales(explicitRawLocales) {\n let defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en';\n let allRawLocales = globalLocales.concat(explicitRawLocales);\n let rawLocaleMap = {\n en: RAW_EN_LOCALE\n };\n for (let rawLocale of allRawLocales) {\n rawLocaleMap[rawLocale.code] = rawLocale;\n }\n return {\n map: rawLocaleMap,\n defaultCode\n };\n}\nfunction buildLocale(inputSingular, available) {\n if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) {\n return parseLocale(inputSingular.code, [inputSingular.code], inputSingular);\n }\n return queryLocale(inputSingular, available);\n}\nfunction queryLocale(codeArg, available) {\n let codes = [].concat(codeArg || []); // will convert to array\n let raw = queryRawLocale(codes, available) || RAW_EN_LOCALE;\n return parseLocale(codeArg, codes, raw);\n}\nfunction queryRawLocale(codes, available) {\n for (let i = 0; i < codes.length; i += 1) {\n let parts = codes[i].toLocaleLowerCase().split('-');\n for (let j = parts.length; j > 0; j -= 1) {\n let simpleId = parts.slice(0, j).join('-');\n if (available[simpleId]) {\n return available[simpleId];\n }\n }\n }\n return null;\n}\nfunction parseLocale(codeArg, codes, raw) {\n let merged = mergeProps([MINIMAL_RAW_EN_LOCALE, raw], ['buttonText']);\n delete merged.code; // don't want this part of the options\n let week = merged.week;\n delete merged.week;\n return {\n codeArg,\n codes,\n week,\n simpleNumberFormat: new Intl.NumberFormat(codeArg),\n options: merged\n };\n}\n\n// TODO: easier way to add new hooks? need to update a million things\nfunction createPlugin(input) {\n return {\n id: guid(),\n name: input.name,\n premiumReleaseDate: input.premiumReleaseDate ? new Date(input.premiumReleaseDate) : undefined,\n deps: input.deps || [],\n reducers: input.reducers || [],\n isLoadingFuncs: input.isLoadingFuncs || [],\n contextInit: [].concat(input.contextInit || []),\n eventRefiners: input.eventRefiners || {},\n eventDefMemberAdders: input.eventDefMemberAdders || [],\n eventSourceRefiners: input.eventSourceRefiners || {},\n isDraggableTransformers: input.isDraggableTransformers || [],\n eventDragMutationMassagers: input.eventDragMutationMassagers || [],\n eventDefMutationAppliers: input.eventDefMutationAppliers || [],\n dateSelectionTransformers: input.dateSelectionTransformers || [],\n datePointTransforms: input.datePointTransforms || [],\n dateSpanTransforms: input.dateSpanTransforms || [],\n views: input.views || {},\n viewPropsTransformers: input.viewPropsTransformers || [],\n isPropsValid: input.isPropsValid || null,\n externalDefTransforms: input.externalDefTransforms || [],\n viewContainerAppends: input.viewContainerAppends || [],\n eventDropTransformers: input.eventDropTransformers || [],\n componentInteractions: input.componentInteractions || [],\n calendarInteractions: input.calendarInteractions || [],\n themeClasses: input.themeClasses || {},\n eventSourceDefs: input.eventSourceDefs || [],\n cmdFormatter: input.cmdFormatter,\n recurringTypes: input.recurringTypes || [],\n namedTimeZonedImpl: input.namedTimeZonedImpl,\n initialView: input.initialView || '',\n elementDraggingImpl: input.elementDraggingImpl,\n optionChangeHandlers: input.optionChangeHandlers || {},\n scrollGridImpl: input.scrollGridImpl || null,\n listenerRefiners: input.listenerRefiners || {},\n optionRefiners: input.optionRefiners || {},\n propSetHandlers: input.propSetHandlers || {}\n };\n}\nfunction buildPluginHooks(pluginDefs, globalDefs) {\n let currentPluginIds = {};\n let hooks = {\n premiumReleaseDate: undefined,\n reducers: [],\n isLoadingFuncs: [],\n contextInit: [],\n eventRefiners: {},\n eventDefMemberAdders: [],\n eventSourceRefiners: {},\n isDraggableTransformers: [],\n eventDragMutationMassagers: [],\n eventDefMutationAppliers: [],\n dateSelectionTransformers: [],\n datePointTransforms: [],\n dateSpanTransforms: [],\n views: {},\n viewPropsTransformers: [],\n isPropsValid: null,\n externalDefTransforms: [],\n viewContainerAppends: [],\n eventDropTransformers: [],\n componentInteractions: [],\n calendarInteractions: [],\n themeClasses: {},\n eventSourceDefs: [],\n cmdFormatter: null,\n recurringTypes: [],\n namedTimeZonedImpl: null,\n initialView: '',\n elementDraggingImpl: null,\n optionChangeHandlers: {},\n scrollGridImpl: null,\n listenerRefiners: {},\n optionRefiners: {},\n propSetHandlers: {}\n };\n function addDefs(defs) {\n for (let def of defs) {\n const pluginName = def.name;\n const currentId = currentPluginIds[pluginName];\n if (currentId === undefined) {\n currentPluginIds[pluginName] = def.id;\n addDefs(def.deps);\n hooks = combineHooks(hooks, def);\n } else if (currentId !== def.id) {\n // different ID than the one already added\n console.warn(`Duplicate plugin '${pluginName}'`);\n }\n }\n }\n if (pluginDefs) {\n addDefs(pluginDefs);\n }\n addDefs(globalDefs);\n return hooks;\n}\nfunction buildBuildPluginHooks() {\n let currentOverrideDefs = [];\n let currentGlobalDefs = [];\n let currentHooks;\n return (overrideDefs, globalDefs) => {\n if (!currentHooks || !isArraysEqual(overrideDefs, currentOverrideDefs) || !isArraysEqual(globalDefs, currentGlobalDefs)) {\n currentHooks = buildPluginHooks(overrideDefs, globalDefs);\n }\n currentOverrideDefs = overrideDefs;\n currentGlobalDefs = globalDefs;\n return currentHooks;\n };\n}\nfunction combineHooks(hooks0, hooks1) {\n return {\n premiumReleaseDate: compareOptionalDates(hooks0.premiumReleaseDate, hooks1.premiumReleaseDate),\n reducers: hooks0.reducers.concat(hooks1.reducers),\n isLoadingFuncs: hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs),\n contextInit: hooks0.contextInit.concat(hooks1.contextInit),\n eventRefiners: Object.assign(Object.assign({}, hooks0.eventRefiners), hooks1.eventRefiners),\n eventDefMemberAdders: hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),\n eventSourceRefiners: Object.assign(Object.assign({}, hooks0.eventSourceRefiners), hooks1.eventSourceRefiners),\n isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),\n eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),\n eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),\n dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),\n datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms),\n dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),\n views: Object.assign(Object.assign({}, hooks0.views), hooks1.views),\n viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),\n isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid,\n externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),\n viewContainerAppends: hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends),\n eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),\n calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions),\n componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions),\n themeClasses: Object.assign(Object.assign({}, hooks0.themeClasses), hooks1.themeClasses),\n eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),\n cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter,\n recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes),\n namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl,\n initialView: hooks0.initialView || hooks1.initialView,\n elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl,\n optionChangeHandlers: Object.assign(Object.assign({}, hooks0.optionChangeHandlers), hooks1.optionChangeHandlers),\n scrollGridImpl: hooks1.scrollGridImpl || hooks0.scrollGridImpl,\n listenerRefiners: Object.assign(Object.assign({}, hooks0.listenerRefiners), hooks1.listenerRefiners),\n optionRefiners: Object.assign(Object.assign({}, hooks0.optionRefiners), hooks1.optionRefiners),\n propSetHandlers: Object.assign(Object.assign({}, hooks0.propSetHandlers), hooks1.propSetHandlers)\n };\n}\nfunction compareOptionalDates(date0, date1) {\n if (date0 === undefined) {\n return date1;\n }\n if (date1 === undefined) {\n return date0;\n }\n return new Date(Math.max(date0.valueOf(), date1.valueOf()));\n}\nclass StandardTheme extends Theme {}\nStandardTheme.prototype.classes = {\n root: 'fc-theme-standard',\n tableCellShaded: 'fc-cell-shaded',\n buttonGroup: 'fc-button-group',\n button: 'fc-button fc-button-primary',\n buttonActive: 'fc-button-active'\n};\nStandardTheme.prototype.baseIconClass = 'fc-icon';\nStandardTheme.prototype.iconClasses = {\n close: 'fc-icon-x',\n prev: 'fc-icon-chevron-left',\n next: 'fc-icon-chevron-right',\n prevYear: 'fc-icon-chevrons-left',\n nextYear: 'fc-icon-chevrons-right'\n};\nStandardTheme.prototype.rtlIconClasses = {\n prev: 'fc-icon-chevron-right',\n next: 'fc-icon-chevron-left',\n prevYear: 'fc-icon-chevrons-right',\n nextYear: 'fc-icon-chevrons-left'\n};\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons'; // TODO: make TS-friendly\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-';\nfunction compileViewDefs(defaultConfigs, overrideConfigs) {\n let hash = {};\n let viewType;\n for (viewType in defaultConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n for (viewType in overrideConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n return hash;\n}\nfunction ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n if (hash[viewType]) {\n return hash[viewType];\n }\n let viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n if (viewDef) {\n hash[viewType] = viewDef;\n }\n return viewDef;\n}\nfunction buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n let defaultConfig = defaultConfigs[viewType];\n let overrideConfig = overrideConfigs[viewType];\n let queryProp = name => defaultConfig && defaultConfig[name] !== null ? defaultConfig[name] : overrideConfig && overrideConfig[name] !== null ? overrideConfig[name] : null;\n let theComponent = queryProp('component');\n let superType = queryProp('superType');\n let superDef = null;\n if (superType) {\n if (superType === viewType) {\n throw new Error('Can\\'t have a custom view type that references itself');\n }\n superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs);\n }\n if (!theComponent && superDef) {\n theComponent = superDef.component;\n }\n if (!theComponent) {\n return null; // don't throw a warning, might be settings for a single-unit view\n }\n return {\n type: viewType,\n component: theComponent,\n defaults: Object.assign(Object.assign({}, superDef ? superDef.defaults : {}), defaultConfig ? defaultConfig.rawOptions : {}),\n overrides: Object.assign(Object.assign({}, superDef ? superDef.overrides : {}), overrideConfig ? overrideConfig.rawOptions : {})\n };\n}\nfunction parseViewConfigs(inputs) {\n return mapHash(inputs, parseViewConfig);\n}\nfunction parseViewConfig(input) {\n let rawOptions = typeof input === 'function' ? {\n component: input\n } : input;\n let component = rawOptions.component;\n if (rawOptions.content) {\n // TODO: remove content/classNames/didMount/etc from options?\n component = createViewHookComponent(rawOptions);\n } else if (component && !(component.prototype instanceof BaseComponent)) {\n // WHY?: people were using `component` property for `content`\n // TODO: converge on one setting name\n component = createViewHookComponent(Object.assign(Object.assign({}, rawOptions), {\n content: component\n }));\n }\n return {\n superType: rawOptions.type,\n component: component,\n rawOptions // includes type and component too :(\n };\n}\nfunction createViewHookComponent(options) {\n return viewProps => createElement(ViewContextType.Consumer, null, context => createElement(ContentContainer, {\n elTag: \"div\",\n elClasses: buildViewClassNames(context.viewSpec),\n renderProps: Object.assign(Object.assign({}, viewProps), {\n nextDayThreshold: context.options.nextDayThreshold\n }),\n generatorName: undefined,\n customGenerator: options.content,\n classNameGenerator: options.classNames,\n didMount: options.didMount,\n willUnmount: options.willUnmount\n }));\n}\nfunction buildViewSpecs(defaultInputs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n let defaultConfigs = parseViewConfigs(defaultInputs);\n let overrideConfigs = parseViewConfigs(optionOverrides.views);\n let viewDefs = compileViewDefs(defaultConfigs, overrideConfigs);\n return mapHash(viewDefs, viewDef => buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults));\n}\nfunction buildViewSpec(viewDef, overrideConfigs, optionOverrides, dynamicOptionOverrides, localeDefaults) {\n let durationInput = viewDef.overrides.duration || viewDef.defaults.duration || dynamicOptionOverrides.duration || optionOverrides.duration;\n let duration = null;\n let durationUnit = '';\n let singleUnit = '';\n let singleUnitOverrides = {};\n if (durationInput) {\n duration = createDurationCached(durationInput);\n if (duration) {\n // valid?\n let denom = greatestDurationDenominator(duration);\n durationUnit = denom.unit;\n if (denom.value === 1) {\n singleUnit = durationUnit;\n singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].rawOptions : {};\n }\n }\n }\n let queryButtonText = optionsSubset => {\n let buttonTextMap = optionsSubset.buttonText || {};\n let buttonTextKey = viewDef.defaults.buttonTextKey;\n if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) {\n return buttonTextMap[buttonTextKey];\n }\n if (buttonTextMap[viewDef.type] != null) {\n return buttonTextMap[viewDef.type];\n }\n if (buttonTextMap[singleUnit] != null) {\n return buttonTextMap[singleUnit];\n }\n return null;\n };\n let queryButtonTitle = optionsSubset => {\n let buttonHints = optionsSubset.buttonHints || {};\n let buttonKey = viewDef.defaults.buttonTextKey; // use same key as text\n if (buttonKey != null && buttonHints[buttonKey] != null) {\n return buttonHints[buttonKey];\n }\n if (buttonHints[viewDef.type] != null) {\n return buttonHints[viewDef.type];\n }\n if (buttonHints[singleUnit] != null) {\n return buttonHints[singleUnit];\n }\n return null;\n };\n return {\n type: viewDef.type,\n component: viewDef.component,\n duration,\n durationUnit,\n singleUnit,\n optionDefaults: viewDef.defaults,\n optionOverrides: Object.assign(Object.assign({}, singleUnitOverrides), viewDef.overrides),\n buttonTextOverride: queryButtonText(dynamicOptionOverrides) || queryButtonText(optionOverrides) ||\n // constructor-specified buttonText lookup hash takes precedence\n viewDef.overrides.buttonText,\n buttonTextDefault: queryButtonText(localeDefaults) || viewDef.defaults.buttonText || queryButtonText(BASE_OPTION_DEFAULTS) || viewDef.type,\n // not DRY\n buttonTitleOverride: queryButtonTitle(dynamicOptionOverrides) || queryButtonTitle(optionOverrides) || viewDef.overrides.buttonHint,\n buttonTitleDefault: queryButtonTitle(localeDefaults) || viewDef.defaults.buttonHint || queryButtonTitle(BASE_OPTION_DEFAULTS)\n // will eventually fall back to buttonText\n };\n}\n// hack to get memoization working\nlet durationInputMap = {};\nfunction createDurationCached(durationInput) {\n let json = JSON.stringify(durationInput);\n let res = durationInputMap[json];\n if (res === undefined) {\n res = createDuration(durationInput);\n durationInputMap[json] = res;\n }\n return res;\n}\nfunction reduceViewType(viewType, action) {\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n viewType = action.viewType;\n }\n return viewType;\n}\nfunction reduceDynamicOptionOverrides(dynamicOptionOverrides, action) {\n switch (action.type) {\n case 'SET_OPTION':\n return Object.assign(Object.assign({}, dynamicOptionOverrides), {\n [action.optionName]: action.rawOptionValue\n });\n default:\n return dynamicOptionOverrides;\n }\n}\nfunction reduceDateProfile(currentDateProfile, action, currentDate, dateProfileGenerator) {\n let dp;\n switch (action.type) {\n case 'CHANGE_VIEW_TYPE':\n return dateProfileGenerator.build(action.dateMarker || currentDate);\n case 'CHANGE_DATE':\n return dateProfileGenerator.build(action.dateMarker);\n case 'PREV':\n dp = dateProfileGenerator.buildPrev(currentDateProfile, currentDate);\n if (dp.isValid) {\n return dp;\n }\n break;\n case 'NEXT':\n dp = dateProfileGenerator.buildNext(currentDateProfile, currentDate);\n if (dp.isValid) {\n return dp;\n }\n break;\n }\n return currentDateProfile;\n}\nfunction initEventSources(calendarOptions, dateProfile, context) {\n let activeRange = dateProfile ? dateProfile.activeRange : null;\n return addSources({}, parseInitialSources(calendarOptions, context), activeRange, context);\n}\nfunction reduceEventSources(eventSources, action, dateProfile, context) {\n let activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n switch (action.type) {\n case 'ADD_EVENT_SOURCES':\n // already parsed\n return addSources(eventSources, action.sources, activeRange, context);\n case 'REMOVE_EVENT_SOURCE':\n return removeSource(eventSources, action.sourceId);\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n if (dateProfile) {\n return fetchDirtySources(eventSources, activeRange, context);\n }\n return eventSources;\n case 'FETCH_EVENT_SOURCES':\n return fetchSourcesByIds(eventSources, action.sourceIds ?\n // why no type?\n arrayToHash(action.sourceIds) : excludeStaticSources(eventSources, context), activeRange, action.isRefetch || false, context);\n case 'RECEIVE_EVENTS':\n case 'RECEIVE_EVENT_ERROR':\n return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange);\n case 'REMOVE_ALL_EVENT_SOURCES':\n return {};\n default:\n return eventSources;\n }\n}\nfunction reduceEventSourcesNewTimeZone(eventSources, dateProfile, context) {\n let activeRange = dateProfile ? dateProfile.activeRange : null; // need this check?\n return fetchSourcesByIds(eventSources, excludeStaticSources(eventSources, context), activeRange, true, context);\n}\nfunction computeEventSourcesLoading(eventSources) {\n for (let sourceId in eventSources) {\n if (eventSources[sourceId].isFetching) {\n return true;\n }\n }\n return false;\n}\nfunction addSources(eventSourceHash, sources, fetchRange, context) {\n let hash = {};\n for (let source of sources) {\n hash[source.sourceId] = source;\n }\n if (fetchRange) {\n hash = fetchDirtySources(hash, fetchRange, context);\n }\n return Object.assign(Object.assign({}, eventSourceHash), hash);\n}\nfunction removeSource(eventSourceHash, sourceId) {\n return filterHash(eventSourceHash, eventSource => eventSource.sourceId !== sourceId);\n}\nfunction fetchDirtySources(sourceHash, fetchRange, context) {\n return fetchSourcesByIds(sourceHash, filterHash(sourceHash, eventSource => isSourceDirty(eventSource, fetchRange, context)), fetchRange, false, context);\n}\nfunction isSourceDirty(eventSource, fetchRange, context) {\n if (!doesSourceNeedRange(eventSource, context)) {\n return !eventSource.latestFetchId;\n }\n return !context.options.lazyFetching || !eventSource.fetchRange || eventSource.isFetching ||\n // always cancel outdated in-progress fetches\n fetchRange.start < eventSource.fetchRange.start || fetchRange.end > eventSource.fetchRange.end;\n}\nfunction fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, isRefetch, context) {\n let nextSources = {};\n for (let sourceId in prevSources) {\n let source = prevSources[sourceId];\n if (sourceIdHash[sourceId]) {\n nextSources[sourceId] = fetchSource(source, fetchRange, isRefetch, context);\n } else {\n nextSources[sourceId] = source;\n }\n }\n return nextSources;\n}\nfunction fetchSource(eventSource, fetchRange, isRefetch, context) {\n let options = context.options,\n calendarApi = context.calendarApi;\n let sourceDef = context.pluginHooks.eventSourceDefs[eventSource.sourceDefId];\n let fetchId = guid();\n sourceDef.fetch({\n eventSource,\n range: fetchRange,\n isRefetch,\n context\n }, res => {\n let rawEvents = res.rawEvents;\n if (options.eventSourceSuccess) {\n rawEvents = options.eventSourceSuccess.call(calendarApi, rawEvents, res.response) || rawEvents;\n }\n if (eventSource.success) {\n rawEvents = eventSource.success.call(calendarApi, rawEvents, res.response) || rawEvents;\n }\n context.dispatch({\n type: 'RECEIVE_EVENTS',\n sourceId: eventSource.sourceId,\n fetchId,\n fetchRange,\n rawEvents\n });\n }, error => {\n let errorHandled = false;\n if (options.eventSourceFailure) {\n options.eventSourceFailure.call(calendarApi, error);\n errorHandled = true;\n }\n if (eventSource.failure) {\n eventSource.failure(error);\n errorHandled = true;\n }\n if (!errorHandled) {\n console.warn(error.message, error);\n }\n context.dispatch({\n type: 'RECEIVE_EVENT_ERROR',\n sourceId: eventSource.sourceId,\n fetchId,\n fetchRange,\n error\n });\n });\n return Object.assign(Object.assign({}, eventSource), {\n isFetching: true,\n latestFetchId: fetchId\n });\n}\nfunction receiveResponse(sourceHash, sourceId, fetchId, fetchRange) {\n let eventSource = sourceHash[sourceId];\n if (eventSource &&\n // not already removed\n fetchId === eventSource.latestFetchId) {\n return Object.assign(Object.assign({}, sourceHash), {\n [sourceId]: Object.assign(Object.assign({}, eventSource), {\n isFetching: false,\n fetchRange\n })\n });\n }\n return sourceHash;\n}\nfunction excludeStaticSources(eventSources, context) {\n return filterHash(eventSources, eventSource => doesSourceNeedRange(eventSource, context));\n}\nfunction parseInitialSources(rawOptions, context) {\n let refiners = buildEventSourceRefiners(context);\n let rawSources = [].concat(rawOptions.eventSources || []);\n let sources = []; // parsed\n if (rawOptions.initialEvents) {\n rawSources.unshift(rawOptions.initialEvents);\n }\n if (rawOptions.events) {\n rawSources.unshift(rawOptions.events);\n }\n for (let rawSource of rawSources) {\n let source = parseEventSource(rawSource, context, refiners);\n if (source) {\n sources.push(source);\n }\n }\n return sources;\n}\nfunction doesSourceNeedRange(eventSource, context) {\n let defs = context.pluginHooks.eventSourceDefs;\n return !defs[eventSource.sourceDefId].ignoreRange;\n}\nfunction reduceDateSelection(currentSelection, action) {\n switch (action.type) {\n case 'UNSELECT_DATES':\n return null;\n case 'SELECT_DATES':\n return action.selection;\n default:\n return currentSelection;\n }\n}\nfunction reduceSelectedEvent(currentInstanceId, action) {\n switch (action.type) {\n case 'UNSELECT_EVENT':\n return '';\n case 'SELECT_EVENT':\n return action.eventInstanceId;\n default:\n return currentInstanceId;\n }\n}\nfunction reduceEventDrag(currentDrag, action) {\n let newDrag;\n switch (action.type) {\n case 'UNSET_EVENT_DRAG':\n return null;\n case 'SET_EVENT_DRAG':\n newDrag = action.state;\n return {\n affectedEvents: newDrag.affectedEvents,\n mutatedEvents: newDrag.mutatedEvents,\n isEvent: newDrag.isEvent\n };\n default:\n return currentDrag;\n }\n}\nfunction reduceEventResize(currentResize, action) {\n let newResize;\n switch (action.type) {\n case 'UNSET_EVENT_RESIZE':\n return null;\n case 'SET_EVENT_RESIZE':\n newResize = action.state;\n return {\n affectedEvents: newResize.affectedEvents,\n mutatedEvents: newResize.mutatedEvents,\n isEvent: newResize.isEvent\n };\n default:\n return currentResize;\n }\n}\nfunction parseToolbars(calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n let header = calendarOptions.headerToolbar ? parseToolbar(calendarOptions.headerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n let footer = calendarOptions.footerToolbar ? parseToolbar(calendarOptions.footerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) : null;\n return {\n header,\n footer\n };\n}\nfunction parseToolbar(sectionStrHash, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi) {\n let sectionWidgets = {};\n let viewsWithButtons = [];\n let hasTitle = false;\n for (let sectionName in sectionStrHash) {\n let sectionStr = sectionStrHash[sectionName];\n let sectionRes = parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi);\n sectionWidgets[sectionName] = sectionRes.widgets;\n viewsWithButtons.push(...sectionRes.viewsWithButtons);\n hasTitle = hasTitle || sectionRes.hasTitle;\n }\n return {\n sectionWidgets,\n viewsWithButtons,\n hasTitle\n };\n}\n/*\nBAD: querying icons and text here. should be done at render time\n*/\nfunction parseSection(sectionStr, calendarOptions,\n// defaults+overrides, then refined\ncalendarOptionOverrides,\n// overrides only!, unrefined :(\ntheme, viewSpecs, calendarApi) {\n let isRtl = calendarOptions.direction === 'rtl';\n let calendarCustomButtons = calendarOptions.customButtons || {};\n let calendarButtonTextOverrides = calendarOptionOverrides.buttonText || {};\n let calendarButtonText = calendarOptions.buttonText || {};\n let calendarButtonHintOverrides = calendarOptionOverrides.buttonHints || {};\n let calendarButtonHints = calendarOptions.buttonHints || {};\n let sectionSubstrs = sectionStr ? sectionStr.split(' ') : [];\n let viewsWithButtons = [];\n let hasTitle = false;\n let widgets = sectionSubstrs.map(buttonGroupStr => buttonGroupStr.split(',').map(buttonName => {\n if (buttonName === 'title') {\n hasTitle = true;\n return {\n buttonName\n };\n }\n let customButtonProps;\n let viewSpec;\n let buttonClick;\n let buttonIcon; // only one of these will be set\n let buttonText; // \"\n let buttonHint;\n // ^ for the title=\"\" attribute, for accessibility\n if (customButtonProps = calendarCustomButtons[buttonName]) {\n buttonClick = ev => {\n if (customButtonProps.click) {\n customButtonProps.click.call(ev.target, ev, ev.target); // TODO: use Calendar this context?\n }\n };\n (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) || (buttonIcon = theme.getIconClass(buttonName, isRtl)) || (buttonText = customButtonProps.text);\n buttonHint = customButtonProps.hint || customButtonProps.text;\n } else if (viewSpec = viewSpecs[buttonName]) {\n viewsWithButtons.push(buttonName);\n buttonClick = () => {\n calendarApi.changeView(buttonName);\n };\n (buttonText = viewSpec.buttonTextOverride) || (buttonIcon = theme.getIconClass(buttonName, isRtl)) || (buttonText = viewSpec.buttonTextDefault);\n let textFallback = viewSpec.buttonTextOverride || viewSpec.buttonTextDefault;\n buttonHint = formatWithOrdinals(viewSpec.buttonTitleOverride || viewSpec.buttonTitleDefault || calendarOptions.viewHint, [textFallback, buttonName],\n // view-name = buttonName\n textFallback);\n } else if (calendarApi[buttonName]) {\n // a calendarApi method\n buttonClick = () => {\n calendarApi[buttonName]();\n };\n (buttonText = calendarButtonTextOverrides[buttonName]) || (buttonIcon = theme.getIconClass(buttonName, isRtl)) || (buttonText = calendarButtonText[buttonName]); // everything else is considered default\n if (buttonName === 'prevYear' || buttonName === 'nextYear') {\n let prevOrNext = buttonName === 'prevYear' ? 'prev' : 'next';\n buttonHint = formatWithOrdinals(calendarButtonHintOverrides[prevOrNext] || calendarButtonHints[prevOrNext], [calendarButtonText.year || 'year', 'year'], calendarButtonText[buttonName]);\n } else {\n buttonHint = navUnit => formatWithOrdinals(calendarButtonHintOverrides[buttonName] || calendarButtonHints[buttonName], [calendarButtonText[navUnit] || navUnit, navUnit], calendarButtonText[buttonName]);\n }\n }\n return {\n buttonName,\n buttonClick,\n buttonIcon,\n buttonText,\n buttonHint\n };\n }));\n return {\n widgets,\n viewsWithButtons,\n hasTitle\n };\n}\n\n// always represents the current view. otherwise, it'd need to change value every time date changes\nclass ViewImpl {\n constructor(type, getCurrentData, dateEnv) {\n this.type = type;\n this.getCurrentData = getCurrentData;\n this.dateEnv = dateEnv;\n }\n get calendar() {\n return this.getCurrentData().calendarApi;\n }\n get title() {\n return this.getCurrentData().viewTitle;\n }\n get activeStart() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start);\n }\n get activeEnd() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end);\n }\n get currentStart() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start);\n }\n get currentEnd() {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end);\n }\n getOption(name) {\n return this.getCurrentData().options[name]; // are the view-specific options\n }\n}\nlet eventSourceDef$2 = {\n ignoreRange: true,\n parseMeta(refined) {\n if (Array.isArray(refined.events)) {\n return refined.events;\n }\n return null;\n },\n fetch(arg, successCallback) {\n successCallback({\n rawEvents: arg.eventSource.meta\n });\n }\n};\nconst arrayEventSourcePlugin = createPlugin({\n name: 'array-event-source',\n eventSourceDefs: [eventSourceDef$2]\n});\nlet eventSourceDef$1 = {\n parseMeta(refined) {\n if (typeof refined.events === 'function') {\n return refined.events;\n }\n return null;\n },\n fetch(arg, successCallback, errorCallback) {\n const dateEnv = arg.context.dateEnv;\n const func = arg.eventSource.meta;\n unpromisify(func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)), rawEvents => successCallback({\n rawEvents\n }), errorCallback);\n }\n};\nconst funcEventSourcePlugin = createPlugin({\n name: 'func-event-source',\n eventSourceDefs: [eventSourceDef$1]\n});\nconst JSON_FEED_EVENT_SOURCE_REFINERS = {\n method: String,\n extraParams: identity,\n startParam: String,\n endParam: String,\n timeZoneParam: String\n};\nlet eventSourceDef = {\n parseMeta(refined) {\n if (refined.url && (refined.format === 'json' || !refined.format)) {\n return {\n url: refined.url,\n format: 'json',\n method: (refined.method || 'GET').toUpperCase(),\n extraParams: refined.extraParams,\n startParam: refined.startParam,\n endParam: refined.endParam,\n timeZoneParam: refined.timeZoneParam\n };\n }\n return null;\n },\n fetch(arg, successCallback, errorCallback) {\n const meta = arg.eventSource.meta;\n const requestParams = buildRequestParams(meta, arg.range, arg.context);\n requestJson(meta.method, meta.url, requestParams).then(_ref => {\n let _ref2 = _slicedToArray(_ref, 2),\n rawEvents = _ref2[0],\n response = _ref2[1];\n successCallback({\n rawEvents,\n response\n });\n }, errorCallback);\n }\n};\nconst jsonFeedEventSourcePlugin = createPlugin({\n name: 'json-event-source',\n eventSourceRefiners: JSON_FEED_EVENT_SOURCE_REFINERS,\n eventSourceDefs: [eventSourceDef]\n});\nfunction buildRequestParams(meta, range, context) {\n let dateEnv = context.dateEnv,\n options = context.options;\n let startParam;\n let endParam;\n let timeZoneParam;\n let customRequestParams;\n let params = {};\n startParam = meta.startParam;\n if (startParam == null) {\n startParam = options.startParam;\n }\n endParam = meta.endParam;\n if (endParam == null) {\n endParam = options.endParam;\n }\n timeZoneParam = meta.timeZoneParam;\n if (timeZoneParam == null) {\n timeZoneParam = options.timeZoneParam;\n }\n // retrieve any outbound GET/POST data from the options\n if (typeof meta.extraParams === 'function') {\n // supplied as a function that returns a key/value object\n customRequestParams = meta.extraParams();\n } else {\n // probably supplied as a straight key/value object\n customRequestParams = meta.extraParams || {};\n }\n Object.assign(params, customRequestParams);\n params[startParam] = dateEnv.formatIso(range.start);\n params[endParam] = dateEnv.formatIso(range.end);\n if (dateEnv.timeZone !== 'local') {\n params[timeZoneParam] = dateEnv.timeZone;\n }\n return params;\n}\nconst SIMPLE_RECURRING_REFINERS = {\n daysOfWeek: identity,\n startTime: createDuration,\n endTime: createDuration,\n duration: createDuration,\n startRecur: identity,\n endRecur: identity\n};\nlet recurring = {\n parse(refined, dateEnv) {\n if (refined.daysOfWeek || refined.startTime || refined.endTime || refined.startRecur || refined.endRecur) {\n let recurringData = {\n daysOfWeek: refined.daysOfWeek || null,\n startTime: refined.startTime || null,\n endTime: refined.endTime || null,\n startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur) : null,\n endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur) : null\n };\n let duration;\n if (refined.duration) {\n duration = refined.duration;\n }\n if (!duration && refined.startTime && refined.endTime) {\n duration = subtractDurations(refined.endTime, refined.startTime);\n }\n return {\n allDayGuess: Boolean(!refined.startTime && !refined.endTime),\n duration,\n typeData: recurringData // doesn't need endTime anymore but oh well\n };\n }\n return null;\n },\n expand(typeData, framingRange, dateEnv) {\n let clippedFramingRange = intersectRanges(framingRange, {\n start: typeData.startRecur,\n end: typeData.endRecur\n });\n if (clippedFramingRange) {\n return expandRanges(typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv);\n }\n return [];\n }\n};\nconst simpleRecurringEventsPlugin = createPlugin({\n name: 'simple-recurring-event',\n recurringTypes: [recurring],\n eventRefiners: SIMPLE_RECURRING_REFINERS\n});\nfunction expandRanges(daysOfWeek, startTime, framingRange, dateEnv) {\n let dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;\n let dayMarker = startOfDay(framingRange.start);\n let endMarker = framingRange.end;\n let instanceStarts = [];\n while (dayMarker < endMarker) {\n let instanceStart;\n // if everyday, or this particular day-of-week\n if (!dowHash || dowHash[dayMarker.getUTCDay()]) {\n if (startTime) {\n instanceStart = dateEnv.add(dayMarker, startTime);\n } else {\n instanceStart = dayMarker;\n }\n instanceStarts.push(instanceStart);\n }\n dayMarker = addDays(dayMarker, 1);\n }\n return instanceStarts;\n}\nconst changeHandlerPlugin = createPlugin({\n name: 'change-handler',\n optionChangeHandlers: {\n events(events, context) {\n handleEventSources([events], context);\n },\n eventSources: handleEventSources\n }\n});\n/*\nBUG: if `event` was supplied, all previously-given `eventSources` will be wiped out\n*/\nfunction handleEventSources(inputs, context) {\n let unfoundSources = hashValuesToArray(context.getCurrentData().eventSources);\n if (unfoundSources.length === 1 && inputs.length === 1 && Array.isArray(unfoundSources[0]._raw) && Array.isArray(inputs[0])) {\n context.dispatch({\n type: 'RESET_RAW_EVENTS',\n sourceId: unfoundSources[0].sourceId,\n rawEvents: inputs[0]\n });\n return;\n }\n let newInputs = [];\n for (let input of inputs) {\n let inputFound = false;\n for (let i = 0; i < unfoundSources.length; i += 1) {\n if (unfoundSources[i]._raw === input) {\n unfoundSources.splice(i, 1); // delete\n inputFound = true;\n break;\n }\n }\n if (!inputFound) {\n newInputs.push(input);\n }\n }\n for (let unfoundSource of unfoundSources) {\n context.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: unfoundSource.sourceId\n });\n }\n for (let newInput of newInputs) {\n context.calendarApi.addEventSource(newInput);\n }\n}\nfunction handleDateProfile(dateProfile, context) {\n context.emitter.trigger('datesSet', Object.assign(Object.assign({}, buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv)), {\n view: context.viewApi\n }));\n}\nfunction handleEventStore(eventStore, context) {\n let emitter = context.emitter;\n if (emitter.hasHandlers('eventsSet')) {\n emitter.trigger('eventsSet', buildEventApis(eventStore, context));\n }\n}\n\n/*\nthis array is exposed on the root namespace so that UMD plugins can add to it.\nsee the rollup-bundles script.\n*/\nconst globalPlugins = [arrayEventSourcePlugin, funcEventSourcePlugin, jsonFeedEventSourcePlugin, simpleRecurringEventsPlugin, changeHandlerPlugin, createPlugin({\n name: 'misc',\n isLoadingFuncs: [state => computeEventSourcesLoading(state.eventSources)],\n propSetHandlers: {\n dateProfile: handleDateProfile,\n eventStore: handleEventStore\n }\n})];\nclass TaskRunner {\n constructor(runTaskOption, drainedOption) {\n this.runTaskOption = runTaskOption;\n this.drainedOption = drainedOption;\n this.queue = [];\n this.delayedRunner = new DelayedRunner(this.drain.bind(this));\n }\n request(task, delay) {\n this.queue.push(task);\n this.delayedRunner.request(delay);\n }\n pause(scope) {\n this.delayedRunner.pause(scope);\n }\n resume(scope, force) {\n this.delayedRunner.resume(scope, force);\n }\n drain() {\n let queue = this.queue;\n while (queue.length) {\n let completedTasks = [];\n let task;\n while (task = queue.shift()) {\n this.runTask(task);\n completedTasks.push(task);\n }\n this.drained(completedTasks);\n } // keep going, in case new tasks were added in the drained handler\n }\n runTask(task) {\n if (this.runTaskOption) {\n this.runTaskOption(task);\n }\n }\n drained(completedTasks) {\n if (this.drainedOption) {\n this.drainedOption(completedTasks);\n }\n }\n}\n\n// Computes what the title at the top of the calendarApi should be for this view\nfunction buildTitle(dateProfile, viewOptions, dateEnv) {\n let range;\n // for views that span a large unit of time, show the proper interval, ignoring stray days before and after\n if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {\n range = dateProfile.currentRange;\n } else {\n // for day units or smaller, use the actual day range\n range = dateProfile.activeRange;\n }\n return dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || buildTitleFormat(dateProfile)), {\n isEndExclusive: dateProfile.isRangeAllDay,\n defaultSeparator: viewOptions.titleRangeSeparator\n });\n}\n// Generates the format string that should be used to generate the title for the current date range.\n// Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\nfunction buildTitleFormat(dateProfile) {\n let currentRangeUnit = dateProfile.currentRangeUnit;\n if (currentRangeUnit === 'year') {\n return {\n year: 'numeric'\n };\n }\n if (currentRangeUnit === 'month') {\n return {\n year: 'numeric',\n month: 'long'\n }; // like \"September 2014\"\n }\n let days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);\n if (days !== null && days > 1) {\n // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n return {\n year: 'numeric',\n month: 'short',\n day: 'numeric'\n };\n }\n // one day. longer, like \"September 9 2014\"\n return {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n };\n}\n\n// in future refactor, do the redux-style function(state=initial) for initial-state\n// also, whatever is happening in constructor, have it happen in action queue too\nclass CalendarDataManager {\n constructor(props) {\n this.computeCurrentViewData = memoize(this._computeCurrentViewData);\n this.organizeRawLocales = memoize(organizeRawLocales);\n this.buildLocale = memoize(buildLocale);\n this.buildPluginHooks = buildBuildPluginHooks();\n this.buildDateEnv = memoize(buildDateEnv$1);\n this.buildTheme = memoize(buildTheme);\n this.parseToolbars = memoize(parseToolbars);\n this.buildViewSpecs = memoize(buildViewSpecs);\n this.buildDateProfileGenerator = memoizeObjArg(buildDateProfileGenerator);\n this.buildViewApi = memoize(buildViewApi);\n this.buildViewUiProps = memoizeObjArg(buildViewUiProps);\n this.buildEventUiBySource = memoize(buildEventUiBySource, isPropsEqual);\n this.buildEventUiBases = memoize(buildEventUiBases);\n this.parseContextBusinessHours = memoizeObjArg(parseContextBusinessHours);\n this.buildTitle = memoize(buildTitle);\n this.emitter = new Emitter();\n this.actionRunner = new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this));\n this.currentCalendarOptionsInput = {};\n this.currentCalendarOptionsRefined = {};\n this.currentViewOptionsInput = {};\n this.currentViewOptionsRefined = {};\n this.currentCalendarOptionsRefiners = {};\n this.optionsForRefining = [];\n this.optionsForHandling = [];\n this.getCurrentData = () => this.data;\n this.dispatch = action => {\n this.actionRunner.request(action); // protects against recursive calls to _handleAction\n };\n this.props = props;\n this.actionRunner.pause();\n let dynamicOptionOverrides = {};\n let optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n let currentViewType = optionsData.calendarOptions.initialView || optionsData.pluginHooks.initialView;\n let currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this;\n this.emitter.setThisContext(props.calendarApi);\n this.emitter.setOptions(currentViewData.options);\n let currentDate = getInitialDate(optionsData.calendarOptions, optionsData.dateEnv);\n let dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n if (!rangeContainsMarker(dateProfile.activeRange, currentDate)) {\n currentDate = dateProfile.currentRange.start;\n }\n let calendarContext = {\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter: this.emitter,\n getCurrentData: this.getCurrentData\n };\n // needs to be after setThisContext\n for (let callback of optionsData.pluginHooks.contextInit) {\n callback(calendarContext);\n }\n // NOT DRY\n let eventSources = initEventSources(optionsData.calendarOptions, dateProfile, calendarContext);\n let initialState = {\n dynamicOptionOverrides,\n currentViewType,\n currentDate,\n dateProfile,\n businessHours: this.parseContextBusinessHours(calendarContext),\n eventSources,\n eventUiBases: {},\n eventStore: createEmptyEventStore(),\n renderableEventStore: createEmptyEventStore(),\n dateSelection: null,\n eventSelection: '',\n eventDrag: null,\n eventResize: null,\n selectionConfig: this.buildViewUiProps(calendarContext).selectionConfig\n };\n let contextAndState = Object.assign(Object.assign({}, calendarContext), initialState);\n for (let reducer of optionsData.pluginHooks.reducers) {\n Object.assign(initialState, reducer(null, null, contextAndState));\n }\n if (computeIsLoading(initialState, calendarContext)) {\n this.emitter.trigger('loading', true); // NOT DRY\n }\n this.state = initialState;\n this.updateData();\n this.actionRunner.resume();\n }\n resetOptions(optionOverrides, changedOptionNames) {\n let props = this.props;\n if (changedOptionNames === undefined) {\n props.optionOverrides = optionOverrides;\n } else {\n props.optionOverrides = Object.assign(Object.assign({}, props.optionOverrides || {}), optionOverrides);\n this.optionsForRefining.push(...changedOptionNames);\n }\n if (changedOptionNames === undefined || changedOptionNames.length) {\n this.actionRunner.request({\n type: 'NOTHING'\n });\n }\n }\n _handleAction(action) {\n let props = this.props,\n state = this.state,\n emitter = this.emitter;\n let dynamicOptionOverrides = reduceDynamicOptionOverrides(state.dynamicOptionOverrides, action);\n let optionsData = this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);\n let currentViewType = reduceViewType(state.currentViewType, action);\n let currentViewData = this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);\n // wire things up\n // TODO: not DRY\n props.calendarApi.currentDataManager = this;\n emitter.setThisContext(props.calendarApi);\n emitter.setOptions(currentViewData.options);\n let calendarContext = {\n dateEnv: optionsData.dateEnv,\n options: optionsData.calendarOptions,\n pluginHooks: optionsData.pluginHooks,\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter,\n getCurrentData: this.getCurrentData\n };\n let currentDate = state.currentDate,\n dateProfile = state.dateProfile;\n if (this.data && this.data.dateProfileGenerator !== currentViewData.dateProfileGenerator) {\n // hack\n dateProfile = currentViewData.dateProfileGenerator.build(currentDate);\n }\n currentDate = reduceCurrentDate(currentDate, action);\n dateProfile = reduceDateProfile(dateProfile, action, currentDate, currentViewData.dateProfileGenerator);\n if (action.type === 'PREV' ||\n // TODO: move this logic into DateProfileGenerator\n action.type === 'NEXT' ||\n // \"\n !rangeContainsMarker(dateProfile.currentRange, currentDate)) {\n currentDate = dateProfile.currentRange.start;\n }\n let eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendarContext);\n let eventStore = reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext);\n let isEventsLoading = computeEventSourcesLoading(eventSources); // BAD. also called in this func in computeIsLoading\n let renderableEventStore = isEventsLoading && !currentViewData.options.progressiveEventRendering ? state.renderableEventStore || eventStore :\n // try from previous state\n eventStore;\n let _this$buildViewUiProp = this.buildViewUiProps(calendarContext),\n eventUiSingleBase = _this$buildViewUiProp.eventUiSingleBase,\n selectionConfig = _this$buildViewUiProp.selectionConfig; // will memoize obj\n let eventUiBySource = this.buildEventUiBySource(eventSources);\n let eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource);\n let newState = {\n dynamicOptionOverrides,\n currentViewType,\n currentDate,\n dateProfile,\n eventSources,\n eventStore,\n renderableEventStore,\n selectionConfig,\n eventUiBases,\n businessHours: this.parseContextBusinessHours(calendarContext),\n dateSelection: reduceDateSelection(state.dateSelection, action),\n eventSelection: reduceSelectedEvent(state.eventSelection, action),\n eventDrag: reduceEventDrag(state.eventDrag, action),\n eventResize: reduceEventResize(state.eventResize, action)\n };\n let contextAndState = Object.assign(Object.assign({}, calendarContext), newState);\n for (let reducer of optionsData.pluginHooks.reducers) {\n Object.assign(newState, reducer(state, action, contextAndState)); // give the OLD state, for old value\n }\n let wasLoading = computeIsLoading(state, calendarContext);\n let isLoading = computeIsLoading(newState, calendarContext);\n // TODO: use propSetHandlers in plugin system\n if (!wasLoading && isLoading) {\n emitter.trigger('loading', true);\n } else if (wasLoading && !isLoading) {\n emitter.trigger('loading', false);\n }\n this.state = newState;\n if (props.onAction) {\n props.onAction(action);\n }\n }\n updateData() {\n let props = this.props,\n state = this.state;\n let oldData = this.data;\n let optionsData = this.computeOptionsData(props.optionOverrides, state.dynamicOptionOverrides, props.calendarApi);\n let currentViewData = this.computeCurrentViewData(state.currentViewType, optionsData, props.optionOverrides, state.dynamicOptionOverrides);\n let data = this.data = Object.assign(Object.assign(Object.assign({\n viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv),\n calendarApi: props.calendarApi,\n dispatch: this.dispatch,\n emitter: this.emitter,\n getCurrentData: this.getCurrentData\n }, optionsData), currentViewData), state);\n let changeHandlers = optionsData.pluginHooks.optionChangeHandlers;\n let oldCalendarOptions = oldData && oldData.calendarOptions;\n let newCalendarOptions = optionsData.calendarOptions;\n if (oldCalendarOptions && oldCalendarOptions !== newCalendarOptions) {\n if (oldCalendarOptions.timeZone !== newCalendarOptions.timeZone) {\n // hack\n state.eventSources = data.eventSources = reduceEventSourcesNewTimeZone(data.eventSources, state.dateProfile, data);\n state.eventStore = data.eventStore = rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv);\n state.renderableEventStore = data.renderableEventStore = rezoneEventStoreDates(data.renderableEventStore, oldData.dateEnv, data.dateEnv);\n }\n for (let optionName in changeHandlers) {\n if (this.optionsForHandling.indexOf(optionName) !== -1 || oldCalendarOptions[optionName] !== newCalendarOptions[optionName]) {\n changeHandlers[optionName](newCalendarOptions[optionName], data);\n }\n }\n }\n this.optionsForHandling = [];\n if (props.onData) {\n props.onData(data);\n }\n }\n computeOptionsData(optionOverrides, dynamicOptionOverrides, calendarApi) {\n // TODO: blacklist options that are handled by optionChangeHandlers\n if (!this.optionsForRefining.length && optionOverrides === this.stableOptionOverrides && dynamicOptionOverrides === this.stableDynamicOptionOverrides) {\n return this.stableCalendarOptionsData;\n }\n let _this$processRawCalen = this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides),\n refinedOptions = _this$processRawCalen.refinedOptions,\n pluginHooks = _this$processRawCalen.pluginHooks,\n localeDefaults = _this$processRawCalen.localeDefaults,\n availableLocaleData = _this$processRawCalen.availableLocaleData,\n extra = _this$processRawCalen.extra;\n warnUnknownOptions(extra);\n let dateEnv = this.buildDateEnv(refinedOptions.timeZone, refinedOptions.locale, refinedOptions.weekNumberCalculation, refinedOptions.firstDay, refinedOptions.weekText, pluginHooks, availableLocaleData, refinedOptions.defaultRangeSeparator);\n let viewSpecs = this.buildViewSpecs(pluginHooks.views, this.stableOptionOverrides, this.stableDynamicOptionOverrides, localeDefaults);\n let theme = this.buildTheme(refinedOptions, pluginHooks);\n let toolbarConfig = this.parseToolbars(refinedOptions, this.stableOptionOverrides, theme, viewSpecs, calendarApi);\n return this.stableCalendarOptionsData = {\n calendarOptions: refinedOptions,\n pluginHooks,\n dateEnv,\n viewSpecs,\n theme,\n toolbarConfig,\n localeDefaults,\n availableRawLocales: availableLocaleData.map\n };\n }\n // always called from behind a memoizer\n processRawCalendarOptions(optionOverrides, dynamicOptionOverrides) {\n let _mergeRawOptions = mergeRawOptions([BASE_OPTION_DEFAULTS, optionOverrides, dynamicOptionOverrides]),\n locales = _mergeRawOptions.locales,\n locale = _mergeRawOptions.locale;\n let availableLocaleData = this.organizeRawLocales(locales);\n let availableRawLocales = availableLocaleData.map;\n let localeDefaults = this.buildLocale(locale || availableLocaleData.defaultCode, availableRawLocales).options;\n let pluginHooks = this.buildPluginHooks(optionOverrides.plugins || [], globalPlugins);\n let refiners = this.currentCalendarOptionsRefiners = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n let extra = {};\n let raw = mergeRawOptions([BASE_OPTION_DEFAULTS, localeDefaults, optionOverrides, dynamicOptionOverrides]);\n let refined = {};\n let currentRaw = this.currentCalendarOptionsInput;\n let currentRefined = this.currentCalendarOptionsRefined;\n let anyChanges = false;\n for (let optionName in raw) {\n if (this.optionsForRefining.indexOf(optionName) === -1 && (raw[optionName] === currentRaw[optionName] || COMPLEX_OPTION_COMPARATORS[optionName] && optionName in currentRaw && COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName]))) {\n refined[optionName] = currentRefined[optionName];\n } else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName]);\n anyChanges = true;\n } else {\n extra[optionName] = currentRaw[optionName];\n }\n }\n if (anyChanges) {\n this.currentCalendarOptionsInput = raw;\n this.currentCalendarOptionsRefined = refined;\n this.stableOptionOverrides = optionOverrides;\n this.stableDynamicOptionOverrides = dynamicOptionOverrides;\n }\n this.optionsForHandling.push(...this.optionsForRefining);\n this.optionsForRefining = [];\n return {\n rawOptions: this.currentCalendarOptionsInput,\n refinedOptions: this.currentCalendarOptionsRefined,\n pluginHooks,\n availableLocaleData,\n localeDefaults,\n extra\n };\n }\n _computeCurrentViewData(viewType, optionsData, optionOverrides, dynamicOptionOverrides) {\n let viewSpec = optionsData.viewSpecs[viewType];\n if (!viewSpec) {\n throw new Error(`viewType \"${viewType}\" is not available. Please make sure you've loaded all neccessary plugins`);\n }\n let _this$processRawViewO = this.processRawViewOptions(viewSpec, optionsData.pluginHooks, optionsData.localeDefaults, optionOverrides, dynamicOptionOverrides),\n refinedOptions = _this$processRawViewO.refinedOptions,\n extra = _this$processRawViewO.extra;\n warnUnknownOptions(extra);\n let dateProfileGenerator = this.buildDateProfileGenerator({\n dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass,\n duration: viewSpec.duration,\n durationUnit: viewSpec.durationUnit,\n usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime,\n dateEnv: optionsData.dateEnv,\n calendarApi: this.props.calendarApi,\n slotMinTime: refinedOptions.slotMinTime,\n slotMaxTime: refinedOptions.slotMaxTime,\n showNonCurrentDates: refinedOptions.showNonCurrentDates,\n dayCount: refinedOptions.dayCount,\n dateAlignment: refinedOptions.dateAlignment,\n dateIncrement: refinedOptions.dateIncrement,\n hiddenDays: refinedOptions.hiddenDays,\n weekends: refinedOptions.weekends,\n nowInput: refinedOptions.now,\n validRangeInput: refinedOptions.validRange,\n visibleRangeInput: refinedOptions.visibleRange,\n fixedWeekCount: refinedOptions.fixedWeekCount\n });\n let viewApi = this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv);\n return {\n viewSpec,\n options: refinedOptions,\n dateProfileGenerator,\n viewApi\n };\n }\n processRawViewOptions(viewSpec, pluginHooks, localeDefaults, optionOverrides, dynamicOptionOverrides) {\n let raw = mergeRawOptions([BASE_OPTION_DEFAULTS, viewSpec.optionDefaults, localeDefaults, optionOverrides, viewSpec.optionOverrides, dynamicOptionOverrides]);\n let refiners = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), VIEW_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);\n let refined = {};\n let currentRaw = this.currentViewOptionsInput;\n let currentRefined = this.currentViewOptionsRefined;\n let anyChanges = false;\n let extra = {};\n for (let optionName in raw) {\n if (raw[optionName] === currentRaw[optionName] || COMPLEX_OPTION_COMPARATORS[optionName] && COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], currentRaw[optionName])) {\n refined[optionName] = currentRefined[optionName];\n } else {\n if (raw[optionName] === this.currentCalendarOptionsInput[optionName] || COMPLEX_OPTION_COMPARATORS[optionName] && COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName], this.currentCalendarOptionsInput[optionName])) {\n if (optionName in this.currentCalendarOptionsRefined) {\n // might be an \"extra\" prop\n refined[optionName] = this.currentCalendarOptionsRefined[optionName];\n }\n } else if (refiners[optionName]) {\n refined[optionName] = refiners[optionName](raw[optionName]);\n } else {\n extra[optionName] = raw[optionName];\n }\n anyChanges = true;\n }\n }\n if (anyChanges) {\n this.currentViewOptionsInput = raw;\n this.currentViewOptionsRefined = refined;\n }\n return {\n rawOptions: this.currentViewOptionsInput,\n refinedOptions: this.currentViewOptionsRefined,\n extra\n };\n }\n}\nfunction buildDateEnv$1(timeZone, explicitLocale, weekNumberCalculation, firstDay, weekText, pluginHooks, availableLocaleData, defaultSeparator) {\n let locale = buildLocale(explicitLocale || availableLocaleData.defaultCode, availableLocaleData.map);\n return new DateEnv({\n calendarSystem: 'gregory',\n timeZone,\n namedTimeZoneImpl: pluginHooks.namedTimeZonedImpl,\n locale,\n weekNumberCalculation,\n firstDay,\n weekText,\n cmdFormatter: pluginHooks.cmdFormatter,\n defaultSeparator\n });\n}\nfunction buildTheme(options, pluginHooks) {\n let ThemeClass = pluginHooks.themeClasses[options.themeSystem] || StandardTheme;\n return new ThemeClass(options);\n}\nfunction buildDateProfileGenerator(props) {\n let DateProfileGeneratorClass = props.dateProfileGeneratorClass || DateProfileGenerator;\n return new DateProfileGeneratorClass(props);\n}\nfunction buildViewApi(type, getCurrentData, dateEnv) {\n return new ViewImpl(type, getCurrentData, dateEnv);\n}\nfunction buildEventUiBySource(eventSources) {\n return mapHash(eventSources, eventSource => eventSource.ui);\n}\nfunction buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) {\n let eventUiBases = {\n '': eventUiSingleBase\n };\n for (let defId in eventDefs) {\n let def = eventDefs[defId];\n if (def.sourceId && eventUiBySource[def.sourceId]) {\n eventUiBases[defId] = eventUiBySource[def.sourceId];\n }\n }\n return eventUiBases;\n}\nfunction buildViewUiProps(calendarContext) {\n let options = calendarContext.options;\n return {\n eventUiSingleBase: createEventUi({\n display: options.eventDisplay,\n editable: options.editable,\n startEditable: options.eventStartEditable,\n durationEditable: options.eventDurationEditable,\n constraint: options.eventConstraint,\n overlap: typeof options.eventOverlap === 'boolean' ? options.eventOverlap : undefined,\n allow: options.eventAllow,\n backgroundColor: options.eventBackgroundColor,\n borderColor: options.eventBorderColor,\n textColor: options.eventTextColor,\n color: options.eventColor\n // classNames: options.eventClassNames // render hook will handle this\n }, calendarContext),\n selectionConfig: createEventUi({\n constraint: options.selectConstraint,\n overlap: typeof options.selectOverlap === 'boolean' ? options.selectOverlap : undefined,\n allow: options.selectAllow\n }, calendarContext)\n };\n}\nfunction computeIsLoading(state, context) {\n for (let isLoadingFunc of context.pluginHooks.isLoadingFuncs) {\n if (isLoadingFunc(state)) {\n return true;\n }\n }\n return false;\n}\nfunction parseContextBusinessHours(calendarContext) {\n return parseBusinessHours(calendarContext.options.businessHours, calendarContext);\n}\nfunction warnUnknownOptions(options, viewName) {\n for (let optionName in options) {\n console.warn(`Unknown option '${optionName}'` + (viewName ? ` for view '${viewName}'` : ''));\n }\n}\nclass ToolbarSection extends BaseComponent {\n render() {\n let children = this.props.widgetGroups.map(widgetGroup => this.renderWidgetGroup(widgetGroup));\n return createElement('div', {\n className: 'fc-toolbar-chunk'\n }, ...children);\n }\n renderWidgetGroup(widgetGroup) {\n let props = this.props;\n let theme = this.context.theme;\n let children = [];\n let isOnlyButtons = true;\n for (let widget of widgetGroup) {\n let buttonName = widget.buttonName,\n buttonClick = widget.buttonClick,\n buttonText = widget.buttonText,\n buttonIcon = widget.buttonIcon,\n buttonHint = widget.buttonHint;\n if (buttonName === 'title') {\n isOnlyButtons = false;\n children.push(createElement(\"h2\", {\n className: \"fc-toolbar-title\",\n id: props.titleId\n }, props.title));\n } else {\n let isPressed = buttonName === props.activeButton;\n let isDisabled = !props.isTodayEnabled && buttonName === 'today' || !props.isPrevEnabled && buttonName === 'prev' || !props.isNextEnabled && buttonName === 'next';\n let buttonClasses = [`fc-${buttonName}-button`, theme.getClass('button')];\n if (isPressed) {\n buttonClasses.push(theme.getClass('buttonActive'));\n }\n children.push(createElement(\"button\", {\n type: \"button\",\n title: typeof buttonHint === 'function' ? buttonHint(props.navUnit) : buttonHint,\n disabled: isDisabled,\n \"aria-pressed\": isPressed,\n className: buttonClasses.join(' '),\n onClick: buttonClick\n }, buttonText || (buttonIcon ? createElement(\"span\", {\n className: buttonIcon,\n role: \"img\"\n }) : '')));\n }\n }\n if (children.length > 1) {\n let groupClassName = isOnlyButtons && theme.getClass('buttonGroup') || '';\n return createElement('div', {\n className: groupClassName\n }, ...children);\n }\n return children[0];\n }\n}\nclass Toolbar extends BaseComponent {\n render() {\n let _this$props = this.props,\n model = _this$props.model,\n extraClassName = _this$props.extraClassName;\n let forceLtr = false;\n let startContent;\n let endContent;\n let sectionWidgets = model.sectionWidgets;\n let centerContent = sectionWidgets.center;\n if (sectionWidgets.left) {\n forceLtr = true;\n startContent = sectionWidgets.left;\n } else {\n startContent = sectionWidgets.start;\n }\n if (sectionWidgets.right) {\n forceLtr = true;\n endContent = sectionWidgets.right;\n } else {\n endContent = sectionWidgets.end;\n }\n let classNames = [extraClassName || '', 'fc-toolbar', forceLtr ? 'fc-toolbar-ltr' : ''];\n return createElement(\"div\", {\n className: classNames.join(' ')\n }, this.renderSection('start', startContent || []), this.renderSection('center', centerContent || []), this.renderSection('end', endContent || []));\n }\n renderSection(key, widgetGroups) {\n let props = this.props;\n return createElement(ToolbarSection, {\n key: key,\n widgetGroups: widgetGroups,\n title: props.title,\n navUnit: props.navUnit,\n activeButton: props.activeButton,\n isTodayEnabled: props.isTodayEnabled,\n isPrevEnabled: props.isPrevEnabled,\n isNextEnabled: props.isNextEnabled,\n titleId: props.titleId\n });\n }\n}\nclass ViewHarness extends BaseComponent {\n constructor() {\n super(...arguments);\n this.state = {\n availableWidth: null\n };\n this.handleEl = el => {\n this.el = el;\n setRef(this.props.elRef, el);\n this.updateAvailableWidth();\n };\n this.handleResize = () => {\n this.updateAvailableWidth();\n };\n }\n render() {\n let props = this.props,\n state = this.state;\n let aspectRatio = props.aspectRatio;\n let classNames = ['fc-view-harness', aspectRatio || props.liquid || props.height ? 'fc-view-harness-active' // harness controls the height\n : 'fc-view-harness-passive' // let the view do the height\n ];\n let height = '';\n let paddingBottom = '';\n if (aspectRatio) {\n if (state.availableWidth !== null) {\n height = state.availableWidth / aspectRatio;\n } else {\n // while waiting to know availableWidth, we can't set height to *zero*\n // because will cause lots of unnecessary scrollbars within scrollgrid.\n // BETTER: don't start rendering ANYTHING yet until we know container width\n // NOTE: why not always use paddingBottom? Causes height oscillation (issue 5606)\n paddingBottom = `${1 / aspectRatio * 100}%`;\n }\n } else {\n height = props.height || '';\n }\n return createElement(\"div\", {\n \"aria-labelledby\": props.labeledById,\n ref: this.handleEl,\n className: classNames.join(' '),\n style: {\n height,\n paddingBottom\n }\n }, props.children);\n }\n componentDidMount() {\n this.context.addResizeHandler(this.handleResize);\n }\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleResize);\n }\n updateAvailableWidth() {\n if (this.el &&\n // needed. but why?\n this.props.aspectRatio // aspectRatio is the only height setting that needs availableWidth\n ) {\n this.setState({\n availableWidth: this.el.offsetWidth\n });\n }\n }\n}\n\n/*\nDetects when the user clicks on an event within a DateComponent\n*/\nclass EventClicking extends Interaction {\n constructor(settings) {\n super(settings);\n this.handleSegClick = (ev, segEl) => {\n let component = this.component;\n let context = component.context;\n let seg = getElSeg(segEl);\n if (seg &&\n // might be the <div> surrounding the more link\n component.isValidSegDownEl(ev.target)) {\n // our way to simulate a link click for elements that can't be <a> tags\n // grab before trigger fired in case trigger trashes DOM thru rerendering\n let hasUrlContainer = elementClosest(ev.target, '.fc-event-forced-url');\n let url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : '';\n context.emitter.trigger('eventClick', {\n el: segEl,\n event: new EventImpl(component.context, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: context.viewApi\n });\n if (url && !ev.defaultPrevented) {\n window.location.href = url;\n }\n }\n };\n this.destroy = listenBySelector(settings.el, 'click', '.fc-event',\n // on both fg and bg events\n this.handleSegClick);\n }\n}\n\n/*\nTriggers events and adds/removes core classNames when the user's pointer\nenters/leaves event-elements of a component.\n*/\nclass EventHovering extends Interaction {\n constructor(settings) {\n super(settings);\n // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it\n this.handleEventElRemove = el => {\n if (el === this.currentSegEl) {\n this.handleSegLeave(null, this.currentSegEl);\n }\n };\n this.handleSegEnter = (ev, segEl) => {\n if (getElSeg(segEl)) {\n // TODO: better way to make sure not hovering over more+ link or its wrapper\n this.currentSegEl = segEl;\n this.triggerEvent('eventMouseEnter', ev, segEl);\n }\n };\n this.handleSegLeave = (ev, segEl) => {\n if (this.currentSegEl) {\n this.currentSegEl = null;\n this.triggerEvent('eventMouseLeave', ev, segEl);\n }\n };\n this.removeHoverListeners = listenToHoverBySelector(settings.el, '.fc-event',\n // on both fg and bg events\n this.handleSegEnter, this.handleSegLeave);\n }\n destroy() {\n this.removeHoverListeners();\n }\n triggerEvent(publicEvName, ev, segEl) {\n let component = this.component;\n let context = component.context;\n let seg = getElSeg(segEl);\n if (!ev || component.isValidSegDownEl(ev.target)) {\n context.emitter.trigger(publicEvName, {\n el: segEl,\n event: new EventImpl(context, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: context.viewApi\n });\n }\n }\n}\nclass CalendarContent extends PureComponent {\n constructor() {\n super(...arguments);\n this.buildViewContext = memoize(buildViewContext);\n this.buildViewPropTransformers = memoize(buildViewPropTransformers);\n this.buildToolbarProps = memoize(buildToolbarProps);\n this.headerRef = createRef();\n this.footerRef = createRef();\n this.interactionsStore = {};\n // eslint-disable-next-line\n this.state = {\n viewLabelId: getUniqueDomId()\n };\n // Component Registration\n // -----------------------------------------------------------------------------------------------------------------\n this.registerInteractiveComponent = (component, settingsInput) => {\n let settings = parseInteractionSettings(component, settingsInput);\n let DEFAULT_INTERACTIONS = [EventClicking, EventHovering];\n let interactionClasses = DEFAULT_INTERACTIONS.concat(this.props.pluginHooks.componentInteractions);\n let interactions = interactionClasses.map(TheInteractionClass => new TheInteractionClass(settings));\n this.interactionsStore[component.uid] = interactions;\n interactionSettingsStore[component.uid] = settings;\n };\n this.unregisterInteractiveComponent = component => {\n let listeners = this.interactionsStore[component.uid];\n if (listeners) {\n for (let listener of listeners) {\n listener.destroy();\n }\n delete this.interactionsStore[component.uid];\n }\n delete interactionSettingsStore[component.uid];\n };\n // Resizing\n // -----------------------------------------------------------------------------------------------------------------\n this.resizeRunner = new DelayedRunner(() => {\n this.props.emitter.trigger('_resize', true); // should window resizes be considered \"forced\" ?\n this.props.emitter.trigger('windowResize', {\n view: this.props.viewApi\n });\n });\n this.handleWindowResize = ev => {\n let options = this.props.options;\n if (options.handleWindowResize && ev.target === window // avoid jqui events\n ) {\n this.resizeRunner.request(options.windowResizeDelay);\n }\n };\n }\n /*\n renders INSIDE of an outer div\n */\n render() {\n let props = this.props;\n let toolbarConfig = props.toolbarConfig,\n options = props.options;\n let toolbarProps = this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, getNow(props.options.now, props.dateEnv),\n // TODO: use NowTimer????\n props.viewTitle);\n let viewVGrow = false;\n let viewHeight = '';\n let viewAspectRatio;\n if (props.isHeightAuto || props.forPrint) {\n viewHeight = '';\n } else if (options.height != null) {\n viewVGrow = true;\n } else if (options.contentHeight != null) {\n viewHeight = options.contentHeight;\n } else {\n viewAspectRatio = Math.max(options.aspectRatio, 0.5); // prevent from getting too tall\n }\n let viewContext = this.buildViewContext(props.viewSpec, props.viewApi, props.options, props.dateProfileGenerator, props.dateEnv, props.theme, props.pluginHooks, props.dispatch, props.getCurrentData, props.emitter, props.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent);\n let viewLabelId = toolbarConfig.header && toolbarConfig.header.hasTitle ? this.state.viewLabelId : undefined;\n return createElement(ViewContextType.Provider, {\n value: viewContext\n }, toolbarConfig.header && createElement(Toolbar, Object.assign({\n ref: this.headerRef,\n extraClassName: \"fc-header-toolbar\",\n model: toolbarConfig.header,\n titleId: viewLabelId\n }, toolbarProps)), createElement(ViewHarness, {\n liquid: viewVGrow,\n height: viewHeight,\n aspectRatio: viewAspectRatio,\n labeledById: viewLabelId\n }, this.renderView(props), this.buildAppendContent()), toolbarConfig.footer && createElement(Toolbar, Object.assign({\n ref: this.footerRef,\n extraClassName: \"fc-footer-toolbar\",\n model: toolbarConfig.footer,\n titleId: \"\"\n }, toolbarProps)));\n }\n componentDidMount() {\n let props = this.props;\n this.calendarInteractions = props.pluginHooks.calendarInteractions.map(CalendarInteractionClass => new CalendarInteractionClass(props));\n window.addEventListener('resize', this.handleWindowResize);\n let propSetHandlers = props.pluginHooks.propSetHandlers;\n for (let propName in propSetHandlers) {\n propSetHandlers[propName](props[propName], props);\n }\n }\n componentDidUpdate(prevProps) {\n let props = this.props;\n let propSetHandlers = props.pluginHooks.propSetHandlers;\n for (let propName in propSetHandlers) {\n if (props[propName] !== prevProps[propName]) {\n propSetHandlers[propName](props[propName], props);\n }\n }\n }\n componentWillUnmount() {\n window.removeEventListener('resize', this.handleWindowResize);\n this.resizeRunner.clear();\n for (let interaction of this.calendarInteractions) {\n interaction.destroy();\n }\n this.props.emitter.trigger('_unmount');\n }\n buildAppendContent() {\n let props = this.props;\n let children = props.pluginHooks.viewContainerAppends.map(buildAppendContent => buildAppendContent(props));\n return createElement(Fragment, {}, ...children);\n }\n renderView(props) {\n let pluginHooks = props.pluginHooks;\n let viewSpec = props.viewSpec;\n let viewProps = {\n dateProfile: props.dateProfile,\n businessHours: props.businessHours,\n eventStore: props.renderableEventStore,\n eventUiBases: props.eventUiBases,\n dateSelection: props.dateSelection,\n eventSelection: props.eventSelection,\n eventDrag: props.eventDrag,\n eventResize: props.eventResize,\n isHeightAuto: props.isHeightAuto,\n forPrint: props.forPrint\n };\n let transformers = this.buildViewPropTransformers(pluginHooks.viewPropsTransformers);\n for (let transformer of transformers) {\n Object.assign(viewProps, transformer.transform(viewProps, props));\n }\n let ViewComponent = viewSpec.component;\n return createElement(ViewComponent, Object.assign({}, viewProps));\n }\n}\nfunction buildToolbarProps(viewSpec, dateProfile, dateProfileGenerator, currentDate, now, title) {\n // don't force any date-profiles to valid date profiles (the `false`) so that we can tell if it's invalid\n let todayInfo = dateProfileGenerator.build(now, undefined, false); // TODO: need `undefined` or else INFINITE LOOP for some reason\n let prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate, false);\n let nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate, false);\n return {\n title,\n activeButton: viewSpec.type,\n navUnit: viewSpec.singleUnit,\n isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),\n isPrevEnabled: prevInfo.isValid,\n isNextEnabled: nextInfo.isValid\n };\n}\n// Plugin\n// -----------------------------------------------------------------------------------------------------------------\nfunction buildViewPropTransformers(theClasses) {\n return theClasses.map(TheClass => new TheClass());\n}\nclass Calendar extends CalendarImpl {\n constructor(el) {\n let optionOverrides = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n this.isRendering = false;\n this.isRendered = false;\n this.currentClassNames = [];\n this.customContentRenderId = 0;\n this.handleAction = action => {\n // actions we know we want to render immediately\n switch (action.type) {\n case 'SET_EVENT_DRAG':\n case 'SET_EVENT_RESIZE':\n this.renderRunner.tryDrain();\n }\n };\n this.handleData = data => {\n this.currentData = data;\n this.renderRunner.request(data.calendarOptions.rerenderDelay);\n };\n this.handleRenderRequest = () => {\n if (this.isRendering) {\n this.isRendered = true;\n let currentData = this.currentData;\n flushSync(() => {\n render(createElement(CalendarRoot, {\n options: currentData.calendarOptions,\n theme: currentData.theme,\n emitter: currentData.emitter\n }, (classNames, height, isHeightAuto, forPrint) => {\n this.setClassNames(classNames);\n this.setHeight(height);\n return createElement(RenderId.Provider, {\n value: this.customContentRenderId\n }, createElement(CalendarContent, Object.assign({\n isHeightAuto: isHeightAuto,\n forPrint: forPrint\n }, currentData)));\n }), this.el);\n });\n } else if (this.isRendered) {\n this.isRendered = false;\n render(null, this.el);\n this.setClassNames([]);\n this.setHeight('');\n }\n };\n ensureElHasStyles(el);\n this.el = el;\n this.renderRunner = new DelayedRunner(this.handleRenderRequest);\n new CalendarDataManager({\n optionOverrides,\n calendarApi: this,\n onAction: this.handleAction,\n onData: this.handleData\n });\n }\n render() {\n let wasRendering = this.isRendering;\n if (!wasRendering) {\n this.isRendering = true;\n } else {\n this.customContentRenderId += 1;\n }\n this.renderRunner.request();\n if (wasRendering) {\n this.updateSize();\n }\n }\n destroy() {\n if (this.isRendering) {\n this.isRendering = false;\n this.renderRunner.request();\n }\n }\n updateSize() {\n flushSync(() => {\n super.updateSize();\n });\n }\n batchRendering(func) {\n this.renderRunner.pause('batchRendering');\n func();\n this.renderRunner.resume('batchRendering');\n }\n pauseRendering() {\n this.renderRunner.pause('pauseRendering');\n }\n resumeRendering() {\n this.renderRunner.resume('pauseRendering', true);\n }\n resetOptions(optionOverrides, changedOptionNames) {\n this.currentDataManager.resetOptions(optionOverrides, changedOptionNames);\n }\n setClassNames(classNames) {\n if (!isArraysEqual(classNames, this.currentClassNames)) {\n let classList = this.el.classList;\n for (let className of this.currentClassNames) {\n classList.remove(className);\n }\n for (let className of classNames) {\n classList.add(className);\n }\n this.currentClassNames = classNames;\n }\n }\n setHeight(height) {\n applyStyleProp(this.el, 'height', height);\n }\n}\nfunction formatDate(dateInput) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let dateEnv = buildDateEnv(options);\n let formatter = createFormatter(options);\n let dateMeta = dateEnv.createMarkerMeta(dateInput);\n if (!dateMeta) {\n // TODO: warning?\n return '';\n }\n return dateEnv.format(dateMeta.marker, formatter, {\n forcedTzo: dateMeta.forcedTzo\n });\n}\nfunction formatRange(startInput, endInput, options) {\n let dateEnv = buildDateEnv(typeof options === 'object' && options ? options : {}); // pass in if non-null object\n let formatter = createFormatter(options);\n let startMeta = dateEnv.createMarkerMeta(startInput);\n let endMeta = dateEnv.createMarkerMeta(endInput);\n if (!startMeta || !endMeta) {\n // TODO: warning?\n return '';\n }\n return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, {\n forcedStartTzo: startMeta.forcedTzo,\n forcedEndTzo: endMeta.forcedTzo,\n isEndExclusive: options.isEndExclusive,\n defaultSeparator: BASE_OPTION_DEFAULTS.defaultRangeSeparator\n });\n}\n// TODO: more DRY and optimized\nfunction buildDateEnv(settings) {\n let locale = buildLocale(settings.locale || 'en', organizeRawLocales([]).map); // TODO: don't hardcode 'en' everywhere\n return new DateEnv(Object.assign(Object.assign({\n timeZone: BASE_OPTION_DEFAULTS.timeZone,\n calendarSystem: 'gregory'\n }, settings), {\n locale\n }));\n}\n\n// HELPERS\n/*\nif nextDayThreshold is specified, slicing is done in an all-day fashion.\nyou can get nextDayThreshold from context.nextDayThreshold\n*/\nfunction sliceEvents(props, allDay) {\n return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold : null).fg;\n}\nconst version = '6.1.15';\nexport { Calendar, createPlugin, formatDate, formatRange, globalLocales, globalPlugins, sliceEvents, version };","import { createPlugin } from '@fullcalendar/core/index.js';\nimport { config, Emitter, elementClosest, applyStyle, whenTransitionDone, removeElement, ScrollController, ElementScrollController, computeInnerRect, WindowScrollController, ElementDragging, preventSelection, preventContextMenu, allowSelection, allowContextMenu, computeRect, getClippingParents, pointInsideRect, constrainPoint, intersectRects, getRectCenter, diffPoints, mapHash, rangeContainsRange, isDateSpansEqual, Interaction, interactionSettingsToStore, isDateSelectionValid, enableCursor, disableCursor, triggerDateSelect, compareNumbers, getElSeg, getRelevantEvents, EventImpl, createEmptyEventStore, applyMutationToEventStore, isInteractionValid, buildEventApis, interactionSettingsStore, startOfDay, diffDates, createDuration, getEventTargetViaRoot, identity, eventTupleToStore, parseDragMeta, elementMatches, refineEventDef, parseEventDef, getDefaultEventEnd, createEventInstance, BASE_OPTION_DEFAULTS } from '@fullcalendar/core/internal.js';\nconfig.touchMouseIgnoreWait = 500;\nlet ignoreMouseDepth = 0;\nlet listenerCnt = 0;\nlet isWindowTouchMoveCancelled = false;\n/*\nUses a \"pointer\" abstraction, which monitors UI events for both mouse and touch.\nTracks when the pointer \"drags\" on a certain element, meaning down+move+up.\n\nAlso, tracks if there was touch-scrolling.\nAlso, can prevent touch-scrolling from happening.\nAlso, can fire pointermove events when scrolling happens underneath, even when no real pointer movement.\n\nemits:\n- pointerdown\n- pointermove\n- pointerup\n*/\nclass PointerDragging {\n constructor(containerEl) {\n this.subjectEl = null;\n // options that can be directly assigned by caller\n this.selector = ''; // will cause subjectEl in all emitted events to be this element\n this.handleSelector = '';\n this.shouldIgnoreMove = false;\n this.shouldWatchScroll = true; // for simulating pointermove on scroll\n // internal states\n this.isDragging = false;\n this.isTouchDragging = false;\n this.wasTouchScroll = false;\n // Mouse\n // ----------------------------------------------------------------------------------------------------\n this.handleMouseDown = ev => {\n if (!this.shouldIgnoreMouse() && isPrimaryMouseButton(ev) && this.tryStart(ev)) {\n let pev = this.createEventFromMouse(ev, true);\n this.emitter.trigger('pointerdown', pev);\n this.initScrollWatch(pev);\n if (!this.shouldIgnoreMove) {\n document.addEventListener('mousemove', this.handleMouseMove);\n }\n document.addEventListener('mouseup', this.handleMouseUp);\n }\n };\n this.handleMouseMove = ev => {\n let pev = this.createEventFromMouse(ev);\n this.recordCoords(pev);\n this.emitter.trigger('pointermove', pev);\n };\n this.handleMouseUp = ev => {\n document.removeEventListener('mousemove', this.handleMouseMove);\n document.removeEventListener('mouseup', this.handleMouseUp);\n this.emitter.trigger('pointerup', this.createEventFromMouse(ev));\n this.cleanup(); // call last so that pointerup has access to props\n };\n // Touch\n // ----------------------------------------------------------------------------------------------------\n this.handleTouchStart = ev => {\n if (this.tryStart(ev)) {\n this.isTouchDragging = true;\n let pev = this.createEventFromTouch(ev, true);\n this.emitter.trigger('pointerdown', pev);\n this.initScrollWatch(pev);\n // unlike mouse, need to attach to target, not document\n // https://stackoverflow.com/a/45760014\n let targetEl = ev.target;\n if (!this.shouldIgnoreMove) {\n targetEl.addEventListener('touchmove', this.handleTouchMove);\n }\n targetEl.addEventListener('touchend', this.handleTouchEnd);\n targetEl.addEventListener('touchcancel', this.handleTouchEnd); // treat it as a touch end\n // attach a handler to get called when ANY scroll action happens on the page.\n // this was impossible to do with normal on/off because 'scroll' doesn't bubble.\n // http://stackoverflow.com/a/32954565/96342\n window.addEventListener('scroll', this.handleTouchScroll, true);\n }\n };\n this.handleTouchMove = ev => {\n let pev = this.createEventFromTouch(ev);\n this.recordCoords(pev);\n this.emitter.trigger('pointermove', pev);\n };\n this.handleTouchEnd = ev => {\n if (this.isDragging) {\n // done to guard against touchend followed by touchcancel\n let targetEl = ev.target;\n targetEl.removeEventListener('touchmove', this.handleTouchMove);\n targetEl.removeEventListener('touchend', this.handleTouchEnd);\n targetEl.removeEventListener('touchcancel', this.handleTouchEnd);\n window.removeEventListener('scroll', this.handleTouchScroll, true); // useCaptured=true\n this.emitter.trigger('pointerup', this.createEventFromTouch(ev));\n this.cleanup(); // call last so that pointerup has access to props\n this.isTouchDragging = false;\n startIgnoringMouse();\n }\n };\n this.handleTouchScroll = () => {\n this.wasTouchScroll = true;\n };\n this.handleScroll = ev => {\n if (!this.shouldIgnoreMove) {\n let pageX = window.scrollX - this.prevScrollX + this.prevPageX;\n let pageY = window.scrollY - this.prevScrollY + this.prevPageY;\n this.emitter.trigger('pointermove', {\n origEvent: ev,\n isTouch: this.isTouchDragging,\n subjectEl: this.subjectEl,\n pageX,\n pageY,\n deltaX: pageX - this.origPageX,\n deltaY: pageY - this.origPageY\n });\n }\n };\n this.containerEl = containerEl;\n this.emitter = new Emitter();\n containerEl.addEventListener('mousedown', this.handleMouseDown);\n containerEl.addEventListener('touchstart', this.handleTouchStart, {\n passive: true\n });\n listenerCreated();\n }\n destroy() {\n this.containerEl.removeEventListener('mousedown', this.handleMouseDown);\n this.containerEl.removeEventListener('touchstart', this.handleTouchStart, {\n passive: true\n });\n listenerDestroyed();\n }\n tryStart(ev) {\n let subjectEl = this.querySubjectEl(ev);\n let downEl = ev.target;\n if (subjectEl && (!this.handleSelector || elementClosest(downEl, this.handleSelector))) {\n this.subjectEl = subjectEl;\n this.isDragging = true; // do this first so cancelTouchScroll will work\n this.wasTouchScroll = false;\n return true;\n }\n return false;\n }\n cleanup() {\n isWindowTouchMoveCancelled = false;\n this.isDragging = false;\n this.subjectEl = null;\n // keep wasTouchScroll around for later access\n this.destroyScrollWatch();\n }\n querySubjectEl(ev) {\n if (this.selector) {\n return elementClosest(ev.target, this.selector);\n }\n return this.containerEl;\n }\n shouldIgnoreMouse() {\n return ignoreMouseDepth || this.isTouchDragging;\n }\n // can be called by user of this class, to cancel touch-based scrolling for the current drag\n cancelTouchScroll() {\n if (this.isDragging) {\n isWindowTouchMoveCancelled = true;\n }\n }\n // Scrolling that simulates pointermoves\n // ----------------------------------------------------------------------------------------------------\n initScrollWatch(ev) {\n if (this.shouldWatchScroll) {\n this.recordCoords(ev);\n window.addEventListener('scroll', this.handleScroll, true); // useCapture=true\n }\n }\n recordCoords(ev) {\n if (this.shouldWatchScroll) {\n this.prevPageX = ev.pageX;\n this.prevPageY = ev.pageY;\n this.prevScrollX = window.scrollX;\n this.prevScrollY = window.scrollY;\n }\n }\n destroyScrollWatch() {\n if (this.shouldWatchScroll) {\n window.removeEventListener('scroll', this.handleScroll, true); // useCaptured=true\n }\n }\n // Event Normalization\n // ----------------------------------------------------------------------------------------------------\n createEventFromMouse(ev, isFirst) {\n let deltaX = 0;\n let deltaY = 0;\n // TODO: repeat code\n if (isFirst) {\n this.origPageX = ev.pageX;\n this.origPageY = ev.pageY;\n } else {\n deltaX = ev.pageX - this.origPageX;\n deltaY = ev.pageY - this.origPageY;\n }\n return {\n origEvent: ev,\n isTouch: false,\n subjectEl: this.subjectEl,\n pageX: ev.pageX,\n pageY: ev.pageY,\n deltaX,\n deltaY\n };\n }\n createEventFromTouch(ev, isFirst) {\n let touches = ev.touches;\n let pageX;\n let pageY;\n let deltaX = 0;\n let deltaY = 0;\n // if touch coords available, prefer,\n // because FF would give bad ev.pageX ev.pageY\n if (touches && touches.length) {\n pageX = touches[0].pageX;\n pageY = touches[0].pageY;\n } else {\n pageX = ev.pageX;\n pageY = ev.pageY;\n }\n // TODO: repeat code\n if (isFirst) {\n this.origPageX = pageX;\n this.origPageY = pageY;\n } else {\n deltaX = pageX - this.origPageX;\n deltaY = pageY - this.origPageY;\n }\n return {\n origEvent: ev,\n isTouch: true,\n subjectEl: this.subjectEl,\n pageX,\n pageY,\n deltaX,\n deltaY\n };\n }\n}\n// Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac)\nfunction isPrimaryMouseButton(ev) {\n return ev.button === 0 && !ev.ctrlKey;\n}\n// Ignoring fake mouse events generated by touch\n// ----------------------------------------------------------------------------------------------------\nfunction startIgnoringMouse() {\n ignoreMouseDepth += 1;\n setTimeout(() => {\n ignoreMouseDepth -= 1;\n }, config.touchMouseIgnoreWait);\n}\n// We want to attach touchmove as early as possible for Safari\n// ----------------------------------------------------------------------------------------------------\nfunction listenerCreated() {\n listenerCnt += 1;\n if (listenerCnt === 1) {\n window.addEventListener('touchmove', onWindowTouchMove, {\n passive: false\n });\n }\n}\nfunction listenerDestroyed() {\n listenerCnt -= 1;\n if (!listenerCnt) {\n window.removeEventListener('touchmove', onWindowTouchMove, {\n passive: false\n });\n }\n}\nfunction onWindowTouchMove(ev) {\n if (isWindowTouchMoveCancelled) {\n ev.preventDefault();\n }\n}\n\n/*\nAn effect in which an element follows the movement of a pointer across the screen.\nThe moving element is a clone of some other element.\nMust call start + handleMove + stop.\n*/\nclass ElementMirror {\n constructor() {\n this.isVisible = false; // must be explicitly enabled\n this.sourceEl = null;\n this.mirrorEl = null;\n this.sourceElRect = null; // screen coords relative to viewport\n // options that can be set directly by caller\n this.parentNode = document.body; // HIGHLY SUGGESTED to set this to sidestep ShadowDOM issues\n this.zIndex = 9999;\n this.revertDuration = 0;\n }\n start(sourceEl, pageX, pageY) {\n this.sourceEl = sourceEl;\n this.sourceElRect = this.sourceEl.getBoundingClientRect();\n this.origScreenX = pageX - window.scrollX;\n this.origScreenY = pageY - window.scrollY;\n this.deltaX = 0;\n this.deltaY = 0;\n this.updateElPosition();\n }\n handleMove(pageX, pageY) {\n this.deltaX = pageX - window.scrollX - this.origScreenX;\n this.deltaY = pageY - window.scrollY - this.origScreenY;\n this.updateElPosition();\n }\n // can be called before start\n setIsVisible(bool) {\n if (bool) {\n if (!this.isVisible) {\n if (this.mirrorEl) {\n this.mirrorEl.style.display = '';\n }\n this.isVisible = bool; // needs to happen before updateElPosition\n this.updateElPosition(); // because was not updating the position while invisible\n }\n } else if (this.isVisible) {\n if (this.mirrorEl) {\n this.mirrorEl.style.display = 'none';\n }\n this.isVisible = bool;\n }\n }\n // always async\n stop(needsRevertAnimation, callback) {\n let done = () => {\n this.cleanup();\n callback();\n };\n if (needsRevertAnimation && this.mirrorEl && this.isVisible && this.revertDuration && (\n // if 0, transition won't work\n this.deltaX || this.deltaY) // if same coords, transition won't work\n ) {\n this.doRevertAnimation(done, this.revertDuration);\n } else {\n setTimeout(done, 0);\n }\n }\n doRevertAnimation(callback, revertDuration) {\n let mirrorEl = this.mirrorEl;\n let finalSourceElRect = this.sourceEl.getBoundingClientRect(); // because autoscrolling might have happened\n mirrorEl.style.transition = 'top ' + revertDuration + 'ms,' + 'left ' + revertDuration + 'ms';\n applyStyle(mirrorEl, {\n left: finalSourceElRect.left,\n top: finalSourceElRect.top\n });\n whenTransitionDone(mirrorEl, () => {\n mirrorEl.style.transition = '';\n callback();\n });\n }\n cleanup() {\n if (this.mirrorEl) {\n removeElement(this.mirrorEl);\n this.mirrorEl = null;\n }\n this.sourceEl = null;\n }\n updateElPosition() {\n if (this.sourceEl && this.isVisible) {\n applyStyle(this.getMirrorEl(), {\n left: this.sourceElRect.left + this.deltaX,\n top: this.sourceElRect.top + this.deltaY\n });\n }\n }\n getMirrorEl() {\n let sourceElRect = this.sourceElRect;\n let mirrorEl = this.mirrorEl;\n if (!mirrorEl) {\n mirrorEl = this.mirrorEl = this.sourceEl.cloneNode(true); // cloneChildren=true\n // we don't want long taps or any mouse interaction causing selection/menus.\n // would use preventSelection(), but that prevents selectstart, causing problems.\n mirrorEl.style.userSelect = 'none';\n mirrorEl.style.webkitUserSelect = 'none';\n mirrorEl.style.pointerEvents = 'none';\n mirrorEl.classList.add('fc-event-dragging');\n applyStyle(mirrorEl, {\n position: 'fixed',\n zIndex: this.zIndex,\n visibility: '',\n boxSizing: 'border-box',\n width: sourceElRect.right - sourceElRect.left,\n height: sourceElRect.bottom - sourceElRect.top,\n right: 'auto',\n bottom: 'auto',\n margin: 0\n });\n this.parentNode.appendChild(mirrorEl);\n }\n return mirrorEl;\n }\n}\n\n/*\nIs a cache for a given element's scroll information (all the info that ScrollController stores)\nin addition the \"client rectangle\" of the element.. the area within the scrollbars.\n\nThe cache can be in one of two modes:\n- doesListening:false - ignores when the container is scrolled by someone else\n- doesListening:true - watch for scrolling and update the cache\n*/\nclass ScrollGeomCache extends ScrollController {\n constructor(scrollController, doesListening) {\n super();\n this.handleScroll = () => {\n this.scrollTop = this.scrollController.getScrollTop();\n this.scrollLeft = this.scrollController.getScrollLeft();\n this.handleScrollChange();\n };\n this.scrollController = scrollController;\n this.doesListening = doesListening;\n this.scrollTop = this.origScrollTop = scrollController.getScrollTop();\n this.scrollLeft = this.origScrollLeft = scrollController.getScrollLeft();\n this.scrollWidth = scrollController.getScrollWidth();\n this.scrollHeight = scrollController.getScrollHeight();\n this.clientWidth = scrollController.getClientWidth();\n this.clientHeight = scrollController.getClientHeight();\n this.clientRect = this.computeClientRect(); // do last in case it needs cached values\n if (this.doesListening) {\n this.getEventTarget().addEventListener('scroll', this.handleScroll);\n }\n }\n destroy() {\n if (this.doesListening) {\n this.getEventTarget().removeEventListener('scroll', this.handleScroll);\n }\n }\n getScrollTop() {\n return this.scrollTop;\n }\n getScrollLeft() {\n return this.scrollLeft;\n }\n setScrollTop(top) {\n this.scrollController.setScrollTop(top);\n if (!this.doesListening) {\n // we are not relying on the element to normalize out-of-bounds scroll values\n // so we need to sanitize ourselves\n this.scrollTop = Math.max(Math.min(top, this.getMaxScrollTop()), 0);\n this.handleScrollChange();\n }\n }\n setScrollLeft(top) {\n this.scrollController.setScrollLeft(top);\n if (!this.doesListening) {\n // we are not relying on the element to normalize out-of-bounds scroll values\n // so we need to sanitize ourselves\n this.scrollLeft = Math.max(Math.min(top, this.getMaxScrollLeft()), 0);\n this.handleScrollChange();\n }\n }\n getClientWidth() {\n return this.clientWidth;\n }\n getClientHeight() {\n return this.clientHeight;\n }\n getScrollWidth() {\n return this.scrollWidth;\n }\n getScrollHeight() {\n return this.scrollHeight;\n }\n handleScrollChange() {}\n}\nclass ElementScrollGeomCache extends ScrollGeomCache {\n constructor(el, doesListening) {\n super(new ElementScrollController(el), doesListening);\n }\n getEventTarget() {\n return this.scrollController.el;\n }\n computeClientRect() {\n return computeInnerRect(this.scrollController.el);\n }\n}\nclass WindowScrollGeomCache extends ScrollGeomCache {\n constructor(doesListening) {\n super(new WindowScrollController(), doesListening);\n }\n getEventTarget() {\n return window;\n }\n computeClientRect() {\n return {\n left: this.scrollLeft,\n right: this.scrollLeft + this.clientWidth,\n top: this.scrollTop,\n bottom: this.scrollTop + this.clientHeight\n };\n }\n // the window is the only scroll object that changes it's rectangle relative\n // to the document's topleft as it scrolls\n handleScrollChange() {\n this.clientRect = this.computeClientRect();\n }\n}\n\n// If available we are using native \"performance\" API instead of \"Date\"\n// Read more about it on MDN:\n// https://developer.mozilla.org/en-US/docs/Web/API/Performance\nconst getTime = typeof performance === 'function' ? performance.now : Date.now;\n/*\nFor a pointer interaction, automatically scrolls certain scroll containers when the pointer\napproaches the edge.\n\nThe caller must call start + handleMove + stop.\n*/\nclass AutoScroller {\n constructor() {\n // options that can be set by caller\n this.isEnabled = true;\n this.scrollQuery = [window, '.fc-scroller'];\n this.edgeThreshold = 50; // pixels\n this.maxVelocity = 300; // pixels per second\n // internal state\n this.pointerScreenX = null;\n this.pointerScreenY = null;\n this.isAnimating = false;\n this.scrollCaches = null;\n // protect against the initial pointerdown being too close to an edge and starting the scroll\n this.everMovedUp = false;\n this.everMovedDown = false;\n this.everMovedLeft = false;\n this.everMovedRight = false;\n this.animate = () => {\n if (this.isAnimating) {\n // wasn't cancelled between animation calls\n let edge = this.computeBestEdge(this.pointerScreenX + window.scrollX, this.pointerScreenY + window.scrollY);\n if (edge) {\n let now = getTime();\n this.handleSide(edge, (now - this.msSinceRequest) / 1000);\n this.requestAnimation(now);\n } else {\n this.isAnimating = false; // will stop animation\n }\n }\n };\n }\n start(pageX, pageY, scrollStartEl) {\n if (this.isEnabled) {\n this.scrollCaches = this.buildCaches(scrollStartEl);\n this.pointerScreenX = null;\n this.pointerScreenY = null;\n this.everMovedUp = false;\n this.everMovedDown = false;\n this.everMovedLeft = false;\n this.everMovedRight = false;\n this.handleMove(pageX, pageY);\n }\n }\n handleMove(pageX, pageY) {\n if (this.isEnabled) {\n let pointerScreenX = pageX - window.scrollX;\n let pointerScreenY = pageY - window.scrollY;\n let yDelta = this.pointerScreenY === null ? 0 : pointerScreenY - this.pointerScreenY;\n let xDelta = this.pointerScreenX === null ? 0 : pointerScreenX - this.pointerScreenX;\n if (yDelta < 0) {\n this.everMovedUp = true;\n } else if (yDelta > 0) {\n this.everMovedDown = true;\n }\n if (xDelta < 0) {\n this.everMovedLeft = true;\n } else if (xDelta > 0) {\n this.everMovedRight = true;\n }\n this.pointerScreenX = pointerScreenX;\n this.pointerScreenY = pointerScreenY;\n if (!this.isAnimating) {\n this.isAnimating = true;\n this.requestAnimation(getTime());\n }\n }\n }\n stop() {\n if (this.isEnabled) {\n this.isAnimating = false; // will stop animation\n for (let scrollCache of this.scrollCaches) {\n scrollCache.destroy();\n }\n this.scrollCaches = null;\n }\n }\n requestAnimation(now) {\n this.msSinceRequest = now;\n requestAnimationFrame(this.animate);\n }\n handleSide(edge, seconds) {\n let scrollCache = edge.scrollCache;\n let edgeThreshold = this.edgeThreshold;\n let invDistance = edgeThreshold - edge.distance;\n let velocity =\n // the closer to the edge, the faster we scroll\n invDistance * invDistance / (edgeThreshold * edgeThreshold) *\n // quadratic\n this.maxVelocity * seconds;\n let sign = 1;\n switch (edge.name) {\n case 'left':\n sign = -1;\n // falls through\n case 'right':\n scrollCache.setScrollLeft(scrollCache.getScrollLeft() + velocity * sign);\n break;\n case 'top':\n sign = -1;\n // falls through\n case 'bottom':\n scrollCache.setScrollTop(scrollCache.getScrollTop() + velocity * sign);\n break;\n }\n }\n // left/top are relative to document topleft\n computeBestEdge(left, top) {\n let edgeThreshold = this.edgeThreshold;\n let bestSide = null;\n let scrollCaches = this.scrollCaches || [];\n for (let scrollCache of scrollCaches) {\n let rect = scrollCache.clientRect;\n let leftDist = left - rect.left;\n let rightDist = rect.right - left;\n let topDist = top - rect.top;\n let bottomDist = rect.bottom - top;\n // completely within the rect?\n if (leftDist >= 0 && rightDist >= 0 && topDist >= 0 && bottomDist >= 0) {\n if (topDist <= edgeThreshold && this.everMovedUp && scrollCache.canScrollUp() && (!bestSide || bestSide.distance > topDist)) {\n bestSide = {\n scrollCache,\n name: 'top',\n distance: topDist\n };\n }\n if (bottomDist <= edgeThreshold && this.everMovedDown && scrollCache.canScrollDown() && (!bestSide || bestSide.distance > bottomDist)) {\n bestSide = {\n scrollCache,\n name: 'bottom',\n distance: bottomDist\n };\n }\n /*\n TODO: fix broken RTL scrolling. canScrollLeft always returning false\n https://github.com/fullcalendar/fullcalendar/issues/4837\n */\n if (leftDist <= edgeThreshold && this.everMovedLeft && scrollCache.canScrollLeft() && (!bestSide || bestSide.distance > leftDist)) {\n bestSide = {\n scrollCache,\n name: 'left',\n distance: leftDist\n };\n }\n if (rightDist <= edgeThreshold && this.everMovedRight && scrollCache.canScrollRight() && (!bestSide || bestSide.distance > rightDist)) {\n bestSide = {\n scrollCache,\n name: 'right',\n distance: rightDist\n };\n }\n }\n }\n return bestSide;\n }\n buildCaches(scrollStartEl) {\n return this.queryScrollEls(scrollStartEl).map(el => {\n if (el === window) {\n return new WindowScrollGeomCache(false); // false = don't listen to user-generated scrolls\n }\n return new ElementScrollGeomCache(el, false); // false = don't listen to user-generated scrolls\n });\n }\n queryScrollEls(scrollStartEl) {\n let els = [];\n for (let query of this.scrollQuery) {\n if (typeof query === 'object') {\n els.push(query);\n } else {\n /*\n TODO: in the future, always have auto-scroll happen on element where current Hit came from\n Ticket: https://github.com/fullcalendar/fullcalendar/issues/4593\n */\n els.push(...Array.prototype.slice.call(scrollStartEl.getRootNode().querySelectorAll(query)));\n }\n }\n return els;\n }\n}\n\n/*\nMonitors dragging on an element. Has a number of high-level features:\n- minimum distance required before dragging\n- minimum wait time (\"delay\") before dragging\n- a mirror element that follows the pointer\n*/\nclass FeaturefulElementDragging extends ElementDragging {\n constructor(containerEl, selector) {\n super(containerEl);\n this.containerEl = containerEl;\n // options that can be directly set by caller\n // the caller can also set the PointerDragging's options as well\n this.delay = null;\n this.minDistance = 0;\n this.touchScrollAllowed = true; // prevents drag from starting and blocks scrolling during drag\n this.mirrorNeedsRevert = false;\n this.isInteracting = false; // is the user validly moving the pointer? lasts until pointerup\n this.isDragging = false; // is it INTENTFULLY dragging? lasts until after revert animation\n this.isDelayEnded = false;\n this.isDistanceSurpassed = false;\n this.delayTimeoutId = null;\n this.onPointerDown = ev => {\n if (!this.isDragging) {\n // so new drag doesn't happen while revert animation is going\n this.isInteracting = true;\n this.isDelayEnded = false;\n this.isDistanceSurpassed = false;\n preventSelection(document.body);\n preventContextMenu(document.body);\n // prevent links from being visited if there's an eventual drag.\n // also prevents selection in older browsers (maybe?).\n // not necessary for touch, besides, browser would complain about passiveness.\n if (!ev.isTouch) {\n ev.origEvent.preventDefault();\n }\n this.emitter.trigger('pointerdown', ev);\n if (this.isInteracting &&\n // not destroyed via pointerdown handler\n !this.pointer.shouldIgnoreMove) {\n // actions related to initiating dragstart+dragmove+dragend...\n this.mirror.setIsVisible(false); // reset. caller must set-visible\n this.mirror.start(ev.subjectEl, ev.pageX, ev.pageY); // must happen on first pointer down\n this.startDelay(ev);\n if (!this.minDistance) {\n this.handleDistanceSurpassed(ev);\n }\n }\n }\n };\n this.onPointerMove = ev => {\n if (this.isInteracting) {\n this.emitter.trigger('pointermove', ev);\n if (!this.isDistanceSurpassed) {\n let minDistance = this.minDistance;\n let distanceSq; // current distance from the origin, squared\n let deltaX = ev.deltaX,\n deltaY = ev.deltaY;\n distanceSq = deltaX * deltaX + deltaY * deltaY;\n if (distanceSq >= minDistance * minDistance) {\n // use pythagorean theorem\n this.handleDistanceSurpassed(ev);\n }\n }\n if (this.isDragging) {\n // a real pointer move? (not one simulated by scrolling)\n if (ev.origEvent.type !== 'scroll') {\n this.mirror.handleMove(ev.pageX, ev.pageY);\n this.autoScroller.handleMove(ev.pageX, ev.pageY);\n }\n this.emitter.trigger('dragmove', ev);\n }\n }\n };\n this.onPointerUp = ev => {\n if (this.isInteracting) {\n this.isInteracting = false;\n allowSelection(document.body);\n allowContextMenu(document.body);\n this.emitter.trigger('pointerup', ev); // can potentially set mirrorNeedsRevert\n if (this.isDragging) {\n this.autoScroller.stop();\n this.tryStopDrag(ev); // which will stop the mirror\n }\n if (this.delayTimeoutId) {\n clearTimeout(this.delayTimeoutId);\n this.delayTimeoutId = null;\n }\n }\n };\n let pointer = this.pointer = new PointerDragging(containerEl);\n pointer.emitter.on('pointerdown', this.onPointerDown);\n pointer.emitter.on('pointermove', this.onPointerMove);\n pointer.emitter.on('pointerup', this.onPointerUp);\n if (selector) {\n pointer.selector = selector;\n }\n this.mirror = new ElementMirror();\n this.autoScroller = new AutoScroller();\n }\n destroy() {\n this.pointer.destroy();\n // HACK: simulate a pointer-up to end the current drag\n // TODO: fire 'dragend' directly and stop interaction. discourage use of pointerup event (b/c might not fire)\n this.onPointerUp({});\n }\n startDelay(ev) {\n if (typeof this.delay === 'number') {\n this.delayTimeoutId = setTimeout(() => {\n this.delayTimeoutId = null;\n this.handleDelayEnd(ev);\n }, this.delay); // not assignable to number!\n } else {\n this.handleDelayEnd(ev);\n }\n }\n handleDelayEnd(ev) {\n this.isDelayEnded = true;\n this.tryStartDrag(ev);\n }\n handleDistanceSurpassed(ev) {\n this.isDistanceSurpassed = true;\n this.tryStartDrag(ev);\n }\n tryStartDrag(ev) {\n if (this.isDelayEnded && this.isDistanceSurpassed) {\n if (!this.pointer.wasTouchScroll || this.touchScrollAllowed) {\n this.isDragging = true;\n this.mirrorNeedsRevert = false;\n this.autoScroller.start(ev.pageX, ev.pageY, this.containerEl);\n this.emitter.trigger('dragstart', ev);\n if (this.touchScrollAllowed === false) {\n this.pointer.cancelTouchScroll();\n }\n }\n }\n }\n tryStopDrag(ev) {\n // .stop() is ALWAYS asynchronous, which we NEED because we want all pointerup events\n // that come from the document to fire beforehand. much more convenient this way.\n this.mirror.stop(this.mirrorNeedsRevert, this.stopDrag.bind(this, ev));\n }\n stopDrag(ev) {\n this.isDragging = false;\n this.emitter.trigger('dragend', ev);\n }\n // fill in the implementations...\n setIgnoreMove(bool) {\n this.pointer.shouldIgnoreMove = bool;\n }\n setMirrorIsVisible(bool) {\n this.mirror.setIsVisible(bool);\n }\n setMirrorNeedsRevert(bool) {\n this.mirrorNeedsRevert = bool;\n }\n setAutoScrollEnabled(bool) {\n this.autoScroller.isEnabled = bool;\n }\n}\n\n/*\nWhen this class is instantiated, it records the offset of an element (relative to the document topleft),\nand continues to monitor scrolling, updating the cached coordinates if it needs to.\nDoes not access the DOM after instantiation, so highly performant.\n\nAlso keeps track of all scrolling/overflow:hidden containers that are parents of the given element\nand an determine if a given point is inside the combined clipping rectangle.\n*/\nclass OffsetTracker {\n constructor(el) {\n this.el = el;\n this.origRect = computeRect(el);\n // will work fine for divs that have overflow:hidden\n this.scrollCaches = getClippingParents(el).map(scrollEl => new ElementScrollGeomCache(scrollEl, true));\n }\n destroy() {\n for (let scrollCache of this.scrollCaches) {\n scrollCache.destroy();\n }\n }\n computeLeft() {\n let left = this.origRect.left;\n for (let scrollCache of this.scrollCaches) {\n left += scrollCache.origScrollLeft - scrollCache.getScrollLeft();\n }\n return left;\n }\n computeTop() {\n let top = this.origRect.top;\n for (let scrollCache of this.scrollCaches) {\n top += scrollCache.origScrollTop - scrollCache.getScrollTop();\n }\n return top;\n }\n isWithinClipping(pageX, pageY) {\n let point = {\n left: pageX,\n top: pageY\n };\n for (let scrollCache of this.scrollCaches) {\n if (!isIgnoredClipping(scrollCache.getEventTarget()) && !pointInsideRect(point, scrollCache.clientRect)) {\n return false;\n }\n }\n return true;\n }\n}\n// certain clipping containers should never constrain interactions, like <html> and <body>\n// https://github.com/fullcalendar/fullcalendar/issues/3615\nfunction isIgnoredClipping(node) {\n let tagName = node.tagName;\n return tagName === 'HTML' || tagName === 'BODY';\n}\n\n/*\nTracks movement over multiple droppable areas (aka \"hits\")\nthat exist in one or more DateComponents.\nRelies on an existing draggable.\n\nemits:\n- pointerdown\n- dragstart\n- hitchange - fires initially, even if not over a hit\n- pointerup\n- (hitchange - again, to null, if ended over a hit)\n- dragend\n*/\nclass HitDragging {\n constructor(dragging, droppableStore) {\n // options that can be set by caller\n this.useSubjectCenter = false;\n this.requireInitial = true; // if doesn't start out on a hit, won't emit any events\n this.disablePointCheck = false;\n this.initialHit = null;\n this.movingHit = null;\n this.finalHit = null; // won't ever be populated if shouldIgnoreMove\n this.handlePointerDown = ev => {\n let dragging = this.dragging;\n this.initialHit = null;\n this.movingHit = null;\n this.finalHit = null;\n this.prepareHits();\n this.processFirstCoord(ev);\n if (this.initialHit || !this.requireInitial) {\n dragging.setIgnoreMove(false);\n // TODO: fire this before computing processFirstCoord, so listeners can cancel. this gets fired by almost every handler :(\n this.emitter.trigger('pointerdown', ev);\n } else {\n dragging.setIgnoreMove(true);\n }\n };\n this.handleDragStart = ev => {\n this.emitter.trigger('dragstart', ev);\n this.handleMove(ev, true); // force = fire even if initially null\n };\n this.handleDragMove = ev => {\n this.emitter.trigger('dragmove', ev);\n this.handleMove(ev);\n };\n this.handlePointerUp = ev => {\n this.releaseHits();\n this.emitter.trigger('pointerup', ev);\n };\n this.handleDragEnd = ev => {\n if (this.movingHit) {\n this.emitter.trigger('hitupdate', null, true, ev);\n }\n this.finalHit = this.movingHit;\n this.movingHit = null;\n this.emitter.trigger('dragend', ev);\n };\n this.droppableStore = droppableStore;\n dragging.emitter.on('pointerdown', this.handlePointerDown);\n dragging.emitter.on('dragstart', this.handleDragStart);\n dragging.emitter.on('dragmove', this.handleDragMove);\n dragging.emitter.on('pointerup', this.handlePointerUp);\n dragging.emitter.on('dragend', this.handleDragEnd);\n this.dragging = dragging;\n this.emitter = new Emitter();\n }\n // sets initialHit\n // sets coordAdjust\n processFirstCoord(ev) {\n let origPoint = {\n left: ev.pageX,\n top: ev.pageY\n };\n let adjustedPoint = origPoint;\n let subjectEl = ev.subjectEl;\n let subjectRect;\n if (subjectEl instanceof HTMLElement) {\n // i.e. not a Document/ShadowRoot\n subjectRect = computeRect(subjectEl);\n adjustedPoint = constrainPoint(adjustedPoint, subjectRect);\n }\n let initialHit = this.initialHit = this.queryHitForOffset(adjustedPoint.left, adjustedPoint.top);\n if (initialHit) {\n if (this.useSubjectCenter && subjectRect) {\n let slicedSubjectRect = intersectRects(subjectRect, initialHit.rect);\n if (slicedSubjectRect) {\n adjustedPoint = getRectCenter(slicedSubjectRect);\n }\n }\n this.coordAdjust = diffPoints(adjustedPoint, origPoint);\n } else {\n this.coordAdjust = {\n left: 0,\n top: 0\n };\n }\n }\n handleMove(ev, forceHandle) {\n let hit = this.queryHitForOffset(ev.pageX + this.coordAdjust.left, ev.pageY + this.coordAdjust.top);\n if (forceHandle || !isHitsEqual(this.movingHit, hit)) {\n this.movingHit = hit;\n this.emitter.trigger('hitupdate', hit, false, ev);\n }\n }\n prepareHits() {\n this.offsetTrackers = mapHash(this.droppableStore, interactionSettings => {\n interactionSettings.component.prepareHits();\n return new OffsetTracker(interactionSettings.el);\n });\n }\n releaseHits() {\n let offsetTrackers = this.offsetTrackers;\n for (let id in offsetTrackers) {\n offsetTrackers[id].destroy();\n }\n this.offsetTrackers = {};\n }\n queryHitForOffset(offsetLeft, offsetTop) {\n let droppableStore = this.droppableStore,\n offsetTrackers = this.offsetTrackers;\n let bestHit = null;\n for (let id in droppableStore) {\n let component = droppableStore[id].component;\n let offsetTracker = offsetTrackers[id];\n if (offsetTracker &&\n // wasn't destroyed mid-drag\n offsetTracker.isWithinClipping(offsetLeft, offsetTop)) {\n let originLeft = offsetTracker.computeLeft();\n let originTop = offsetTracker.computeTop();\n let positionLeft = offsetLeft - originLeft;\n let positionTop = offsetTop - originTop;\n let origRect = offsetTracker.origRect;\n let width = origRect.right - origRect.left;\n let height = origRect.bottom - origRect.top;\n if (\n // must be within the element's bounds\n positionLeft >= 0 && positionLeft < width && positionTop >= 0 && positionTop < height) {\n let hit = component.queryHit(positionLeft, positionTop, width, height);\n if (hit &&\n // make sure the hit is within activeRange, meaning it's not a dead cell\n rangeContainsRange(hit.dateProfile.activeRange, hit.dateSpan.range) && (\n // Ensure the component we are querying for the hit is accessibly my the pointer\n // Prevents obscured calendars (ex: under a modal dialog) from accepting hit\n // https://github.com/fullcalendar/fullcalendar/issues/5026\n this.disablePointCheck || offsetTracker.el.contains(offsetTracker.el.getRootNode().elementFromPoint(\n // add-back origins to get coordinate relative to top-left of window viewport\n positionLeft + originLeft - window.scrollX, positionTop + originTop - window.scrollY))) && (!bestHit || hit.layer > bestHit.layer)) {\n hit.componentId = id;\n hit.context = component.context;\n // TODO: better way to re-orient rectangle\n hit.rect.left += originLeft;\n hit.rect.right += originLeft;\n hit.rect.top += originTop;\n hit.rect.bottom += originTop;\n bestHit = hit;\n }\n }\n }\n }\n return bestHit;\n }\n}\nfunction isHitsEqual(hit0, hit1) {\n if (!hit0 && !hit1) {\n return true;\n }\n if (Boolean(hit0) !== Boolean(hit1)) {\n return false;\n }\n return isDateSpansEqual(hit0.dateSpan, hit1.dateSpan);\n}\nfunction buildDatePointApiWithContext(dateSpan, context) {\n let props = {};\n for (let transform of context.pluginHooks.datePointTransforms) {\n Object.assign(props, transform(dateSpan, context));\n }\n Object.assign(props, buildDatePointApi(dateSpan, context.dateEnv));\n return props;\n}\nfunction buildDatePointApi(span, dateEnv) {\n return {\n date: dateEnv.toDate(span.range.start),\n dateStr: dateEnv.formatIso(span.range.start, {\n omitTime: span.allDay\n }),\n allDay: span.allDay\n };\n}\n\n/*\nMonitors when the user clicks on a specific date/time of a component.\nA pointerdown+pointerup on the same \"hit\" constitutes a click.\n*/\nclass DateClicking extends Interaction {\n constructor(settings) {\n super(settings);\n this.handlePointerDown = pev => {\n let dragging = this.dragging;\n let downEl = pev.origEvent.target;\n // do this in pointerdown (not dragend) because DOM might be mutated by the time dragend is fired\n dragging.setIgnoreMove(!this.component.isValidDateDownEl(downEl));\n };\n // won't even fire if moving was ignored\n this.handleDragEnd = ev => {\n let component = this.component;\n let pointer = this.dragging.pointer;\n if (!pointer.wasTouchScroll) {\n let _this$hitDragging = this.hitDragging,\n initialHit = _this$hitDragging.initialHit,\n finalHit = _this$hitDragging.finalHit;\n if (initialHit && finalHit && isHitsEqual(initialHit, finalHit)) {\n let context = component.context;\n let arg = Object.assign(Object.assign({}, buildDatePointApiWithContext(initialHit.dateSpan, context)), {\n dayEl: initialHit.dayEl,\n jsEvent: ev.origEvent,\n view: context.viewApi || context.calendarApi.view\n });\n context.emitter.trigger('dateClick', arg);\n }\n }\n };\n // we DO want to watch pointer moves because otherwise finalHit won't get populated\n this.dragging = new FeaturefulElementDragging(settings.el);\n this.dragging.autoScroller.isEnabled = false;\n let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsToStore(settings));\n hitDragging.emitter.on('pointerdown', this.handlePointerDown);\n hitDragging.emitter.on('dragend', this.handleDragEnd);\n }\n destroy() {\n this.dragging.destroy();\n }\n}\n\n/*\nTracks when the user selects a portion of time of a component,\nconstituted by a drag over date cells, with a possible delay at the beginning of the drag.\n*/\nclass DateSelecting extends Interaction {\n constructor(settings) {\n super(settings);\n this.dragSelection = null;\n this.handlePointerDown = ev => {\n let component = this.component,\n dragging = this.dragging;\n let options = component.context.options;\n let canSelect = options.selectable && component.isValidDateDownEl(ev.origEvent.target);\n // don't bother to watch expensive moves if component won't do selection\n dragging.setIgnoreMove(!canSelect);\n // if touch, require user to hold down\n dragging.delay = ev.isTouch ? getComponentTouchDelay$1(component) : null;\n };\n this.handleDragStart = ev => {\n this.component.context.calendarApi.unselect(ev); // unselect previous selections\n };\n this.handleHitUpdate = (hit, isFinal) => {\n let context = this.component.context;\n let dragSelection = null;\n let isInvalid = false;\n if (hit) {\n let initialHit = this.hitDragging.initialHit;\n let disallowed = hit.componentId === initialHit.componentId && this.isHitComboAllowed && !this.isHitComboAllowed(initialHit, hit);\n if (!disallowed) {\n dragSelection = joinHitsIntoSelection(initialHit, hit, context.pluginHooks.dateSelectionTransformers);\n }\n if (!dragSelection || !isDateSelectionValid(dragSelection, hit.dateProfile, context)) {\n isInvalid = true;\n dragSelection = null;\n }\n }\n if (dragSelection) {\n context.dispatch({\n type: 'SELECT_DATES',\n selection: dragSelection\n });\n } else if (!isFinal) {\n // only unselect if moved away while dragging\n context.dispatch({\n type: 'UNSELECT_DATES'\n });\n }\n if (!isInvalid) {\n enableCursor();\n } else {\n disableCursor();\n }\n if (!isFinal) {\n this.dragSelection = dragSelection; // only clear if moved away from all hits while dragging\n }\n };\n this.handlePointerUp = pev => {\n if (this.dragSelection) {\n // selection is already rendered, so just need to report selection\n triggerDateSelect(this.dragSelection, pev, this.component.context);\n this.dragSelection = null;\n }\n };\n let component = settings.component;\n let options = component.context.options;\n let dragging = this.dragging = new FeaturefulElementDragging(settings.el);\n dragging.touchScrollAllowed = false;\n dragging.minDistance = options.selectMinDistance || 0;\n dragging.autoScroller.isEnabled = options.dragScroll;\n let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsToStore(settings));\n hitDragging.emitter.on('pointerdown', this.handlePointerDown);\n hitDragging.emitter.on('dragstart', this.handleDragStart);\n hitDragging.emitter.on('hitupdate', this.handleHitUpdate);\n hitDragging.emitter.on('pointerup', this.handlePointerUp);\n }\n destroy() {\n this.dragging.destroy();\n }\n}\nfunction getComponentTouchDelay$1(component) {\n let options = component.context.options;\n let delay = options.selectLongPressDelay;\n if (delay == null) {\n delay = options.longPressDelay;\n }\n return delay;\n}\nfunction joinHitsIntoSelection(hit0, hit1, dateSelectionTransformers) {\n let dateSpan0 = hit0.dateSpan;\n let dateSpan1 = hit1.dateSpan;\n let ms = [dateSpan0.range.start, dateSpan0.range.end, dateSpan1.range.start, dateSpan1.range.end];\n ms.sort(compareNumbers);\n let props = {};\n for (let transformer of dateSelectionTransformers) {\n let res = transformer(hit0, hit1);\n if (res === false) {\n return null;\n }\n if (res) {\n Object.assign(props, res);\n }\n }\n props.range = {\n start: ms[0],\n end: ms[3]\n };\n props.allDay = dateSpan0.allDay;\n return props;\n}\nclass EventDragging extends Interaction {\n constructor(settings) {\n super(settings);\n // internal state\n this.subjectEl = null;\n this.subjectSeg = null; // the seg being selected/dragged\n this.isDragging = false;\n this.eventRange = null;\n this.relevantEvents = null; // the events being dragged\n this.receivingContext = null;\n this.validMutation = null;\n this.mutatedRelevantEvents = null;\n this.handlePointerDown = ev => {\n let origTarget = ev.origEvent.target;\n let component = this.component,\n dragging = this.dragging;\n let mirror = dragging.mirror;\n let options = component.context.options;\n let initialContext = component.context;\n this.subjectEl = ev.subjectEl;\n let subjectSeg = this.subjectSeg = getElSeg(ev.subjectEl);\n let eventRange = this.eventRange = subjectSeg.eventRange;\n let eventInstanceId = eventRange.instance.instanceId;\n this.relevantEvents = getRelevantEvents(initialContext.getCurrentData().eventStore, eventInstanceId);\n dragging.minDistance = ev.isTouch ? 0 : options.eventDragMinDistance;\n dragging.delay =\n // only do a touch delay if touch and this event hasn't been selected yet\n ev.isTouch && eventInstanceId !== component.props.eventSelection ? getComponentTouchDelay(component) : null;\n if (options.fixedMirrorParent) {\n mirror.parentNode = options.fixedMirrorParent;\n } else {\n mirror.parentNode = elementClosest(origTarget, '.fc');\n }\n mirror.revertDuration = options.dragRevertDuration;\n let isValid = component.isValidSegDownEl(origTarget) && !elementClosest(origTarget, '.fc-event-resizer'); // NOT on a resizer\n dragging.setIgnoreMove(!isValid);\n // disable dragging for elements that are resizable (ie, selectable)\n // but are not draggable\n this.isDragging = isValid && ev.subjectEl.classList.contains('fc-event-draggable');\n };\n this.handleDragStart = ev => {\n let initialContext = this.component.context;\n let eventRange = this.eventRange;\n let eventInstanceId = eventRange.instance.instanceId;\n if (ev.isTouch) {\n // need to select a different event?\n if (eventInstanceId !== this.component.props.eventSelection) {\n initialContext.dispatch({\n type: 'SELECT_EVENT',\n eventInstanceId\n });\n }\n } else {\n // if now using mouse, but was previous touch interaction, clear selected event\n initialContext.dispatch({\n type: 'UNSELECT_EVENT'\n });\n }\n if (this.isDragging) {\n initialContext.calendarApi.unselect(ev); // unselect *date* selection\n initialContext.emitter.trigger('eventDragStart', {\n el: this.subjectEl,\n event: new EventImpl(initialContext, eventRange.def, eventRange.instance),\n jsEvent: ev.origEvent,\n view: initialContext.viewApi\n });\n }\n };\n this.handleHitUpdate = (hit, isFinal) => {\n if (!this.isDragging) {\n return;\n }\n let relevantEvents = this.relevantEvents;\n let initialHit = this.hitDragging.initialHit;\n let initialContext = this.component.context;\n // states based on new hit\n let receivingContext = null;\n let mutation = null;\n let mutatedRelevantEvents = null;\n let isInvalid = false;\n let interaction = {\n affectedEvents: relevantEvents,\n mutatedEvents: createEmptyEventStore(),\n isEvent: true\n };\n if (hit) {\n receivingContext = hit.context;\n let receivingOptions = receivingContext.options;\n if (initialContext === receivingContext || receivingOptions.editable && receivingOptions.droppable) {\n mutation = computeEventMutation(initialHit, hit, this.eventRange.instance.range.start, receivingContext.getCurrentData().pluginHooks.eventDragMutationMassagers);\n if (mutation) {\n mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, receivingContext.getCurrentData().eventUiBases, mutation, receivingContext);\n interaction.mutatedEvents = mutatedRelevantEvents;\n if (!isInteractionValid(interaction, hit.dateProfile, receivingContext)) {\n isInvalid = true;\n mutation = null;\n mutatedRelevantEvents = null;\n interaction.mutatedEvents = createEmptyEventStore();\n }\n }\n } else {\n receivingContext = null;\n }\n }\n this.displayDrag(receivingContext, interaction);\n if (!isInvalid) {\n enableCursor();\n } else {\n disableCursor();\n }\n if (!isFinal) {\n if (initialContext === receivingContext &&\n // TODO: write test for this\n isHitsEqual(initialHit, hit)) {\n mutation = null;\n }\n this.dragging.setMirrorNeedsRevert(!mutation);\n // render the mirror if no already-rendered mirror\n // TODO: wish we could somehow wait for dispatch to guarantee render\n this.dragging.setMirrorIsVisible(!hit || !this.subjectEl.getRootNode().querySelector('.fc-event-mirror'));\n // assign states based on new hit\n this.receivingContext = receivingContext;\n this.validMutation = mutation;\n this.mutatedRelevantEvents = mutatedRelevantEvents;\n }\n };\n this.handlePointerUp = () => {\n if (!this.isDragging) {\n this.cleanup(); // because handleDragEnd won't fire\n }\n };\n this.handleDragEnd = ev => {\n if (this.isDragging) {\n let initialContext = this.component.context;\n let initialView = initialContext.viewApi;\n let receivingContext = this.receivingContext,\n validMutation = this.validMutation;\n let eventDef = this.eventRange.def;\n let eventInstance = this.eventRange.instance;\n let eventApi = new EventImpl(initialContext, eventDef, eventInstance);\n let relevantEvents = this.relevantEvents;\n let mutatedRelevantEvents = this.mutatedRelevantEvents;\n let finalHit = this.hitDragging.finalHit;\n this.clearDrag(); // must happen after revert animation\n initialContext.emitter.trigger('eventDragStop', {\n el: this.subjectEl,\n event: eventApi,\n jsEvent: ev.origEvent,\n view: initialView\n });\n if (validMutation) {\n // dropped within same calendar\n if (receivingContext === initialContext) {\n let updatedEventApi = new EventImpl(initialContext, mutatedRelevantEvents.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null);\n initialContext.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: mutatedRelevantEvents\n });\n let eventChangeArg = {\n oldEvent: eventApi,\n event: updatedEventApi,\n relatedEvents: buildEventApis(mutatedRelevantEvents, initialContext, eventInstance),\n revert() {\n initialContext.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: relevantEvents // the pre-change data\n });\n }\n };\n let transformed = {};\n for (let transformer of initialContext.getCurrentData().pluginHooks.eventDropTransformers) {\n Object.assign(transformed, transformer(validMutation, initialContext));\n }\n initialContext.emitter.trigger('eventDrop', Object.assign(Object.assign(Object.assign({}, eventChangeArg), transformed), {\n el: ev.subjectEl,\n delta: validMutation.datesDelta,\n jsEvent: ev.origEvent,\n view: initialView\n }));\n initialContext.emitter.trigger('eventChange', eventChangeArg);\n // dropped in different calendar\n } else if (receivingContext) {\n let eventRemoveArg = {\n event: eventApi,\n relatedEvents: buildEventApis(relevantEvents, initialContext, eventInstance),\n revert() {\n initialContext.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: relevantEvents\n });\n }\n };\n initialContext.emitter.trigger('eventLeave', Object.assign(Object.assign({}, eventRemoveArg), {\n draggedEl: ev.subjectEl,\n view: initialView\n }));\n initialContext.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: relevantEvents\n });\n initialContext.emitter.trigger('eventRemove', eventRemoveArg);\n let addedEventDef = mutatedRelevantEvents.defs[eventDef.defId];\n let addedEventInstance = mutatedRelevantEvents.instances[eventInstance.instanceId];\n let addedEventApi = new EventImpl(receivingContext, addedEventDef, addedEventInstance);\n receivingContext.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: mutatedRelevantEvents\n });\n let eventAddArg = {\n event: addedEventApi,\n relatedEvents: buildEventApis(mutatedRelevantEvents, receivingContext, addedEventInstance),\n revert() {\n receivingContext.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: mutatedRelevantEvents\n });\n }\n };\n receivingContext.emitter.trigger('eventAdd', eventAddArg);\n if (ev.isTouch) {\n receivingContext.dispatch({\n type: 'SELECT_EVENT',\n eventInstanceId: eventInstance.instanceId\n });\n }\n receivingContext.emitter.trigger('drop', Object.assign(Object.assign({}, buildDatePointApiWithContext(finalHit.dateSpan, receivingContext)), {\n draggedEl: ev.subjectEl,\n jsEvent: ev.origEvent,\n view: finalHit.context.viewApi\n }));\n receivingContext.emitter.trigger('eventReceive', Object.assign(Object.assign({}, eventAddArg), {\n draggedEl: ev.subjectEl,\n view: finalHit.context.viewApi\n }));\n }\n } else {\n initialContext.emitter.trigger('_noEventDrop');\n }\n }\n this.cleanup();\n };\n let component = this.component;\n let options = component.context.options;\n let dragging = this.dragging = new FeaturefulElementDragging(settings.el);\n dragging.pointer.selector = EventDragging.SELECTOR;\n dragging.touchScrollAllowed = false;\n dragging.autoScroller.isEnabled = options.dragScroll;\n let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsStore);\n hitDragging.useSubjectCenter = settings.useEventCenter;\n hitDragging.emitter.on('pointerdown', this.handlePointerDown);\n hitDragging.emitter.on('dragstart', this.handleDragStart);\n hitDragging.emitter.on('hitupdate', this.handleHitUpdate);\n hitDragging.emitter.on('pointerup', this.handlePointerUp);\n hitDragging.emitter.on('dragend', this.handleDragEnd);\n }\n destroy() {\n this.dragging.destroy();\n }\n // render a drag state on the next receivingCalendar\n displayDrag(nextContext, state) {\n let initialContext = this.component.context;\n let prevContext = this.receivingContext;\n // does the previous calendar need to be cleared?\n if (prevContext && prevContext !== nextContext) {\n // does the initial calendar need to be cleared?\n // if so, don't clear all the way. we still need to to hide the affectedEvents\n if (prevContext === initialContext) {\n prevContext.dispatch({\n type: 'SET_EVENT_DRAG',\n state: {\n affectedEvents: state.affectedEvents,\n mutatedEvents: createEmptyEventStore(),\n isEvent: true\n }\n });\n // completely clear the old calendar if it wasn't the initial\n } else {\n prevContext.dispatch({\n type: 'UNSET_EVENT_DRAG'\n });\n }\n }\n if (nextContext) {\n nextContext.dispatch({\n type: 'SET_EVENT_DRAG',\n state\n });\n }\n }\n clearDrag() {\n let initialCalendar = this.component.context;\n let receivingContext = this.receivingContext;\n if (receivingContext) {\n receivingContext.dispatch({\n type: 'UNSET_EVENT_DRAG'\n });\n }\n // the initial calendar might have an dummy drag state from displayDrag\n if (initialCalendar !== receivingContext) {\n initialCalendar.dispatch({\n type: 'UNSET_EVENT_DRAG'\n });\n }\n }\n cleanup() {\n this.subjectSeg = null;\n this.isDragging = false;\n this.eventRange = null;\n this.relevantEvents = null;\n this.receivingContext = null;\n this.validMutation = null;\n this.mutatedRelevantEvents = null;\n }\n}\n// TODO: test this in IE11\n// QUESTION: why do we need it on the resizable???\nEventDragging.SELECTOR = '.fc-event-draggable, .fc-event-resizable';\nfunction computeEventMutation(hit0, hit1, eventInstanceStart, massagers) {\n let dateSpan0 = hit0.dateSpan;\n let dateSpan1 = hit1.dateSpan;\n let date0 = dateSpan0.range.start;\n let date1 = dateSpan1.range.start;\n let standardProps = {};\n if (dateSpan0.allDay !== dateSpan1.allDay) {\n standardProps.allDay = dateSpan1.allDay;\n standardProps.hasEnd = hit1.context.options.allDayMaintainDuration;\n if (dateSpan1.allDay) {\n // means date1 is already start-of-day,\n // but date0 needs to be converted\n date0 = startOfDay(eventInstanceStart);\n } else {\n // Moving from allDate->timed\n // Doesn't matter where on the event the drag began, mutate the event's start-date to date1\n date0 = eventInstanceStart;\n }\n }\n let delta = diffDates(date0, date1, hit0.context.dateEnv, hit0.componentId === hit1.componentId ? hit0.largeUnit : null);\n if (delta.milliseconds) {\n // has hours/minutes/seconds\n standardProps.allDay = false;\n }\n let mutation = {\n datesDelta: delta,\n standardProps\n };\n for (let massager of massagers) {\n massager(mutation, hit0, hit1);\n }\n return mutation;\n}\nfunction getComponentTouchDelay(component) {\n let options = component.context.options;\n let delay = options.eventLongPressDelay;\n if (delay == null) {\n delay = options.longPressDelay;\n }\n return delay;\n}\nclass EventResizing extends Interaction {\n constructor(settings) {\n super(settings);\n // internal state\n this.draggingSegEl = null;\n this.draggingSeg = null; // TODO: rename to resizingSeg? subjectSeg?\n this.eventRange = null;\n this.relevantEvents = null;\n this.validMutation = null;\n this.mutatedRelevantEvents = null;\n this.handlePointerDown = ev => {\n let component = this.component;\n let segEl = this.querySegEl(ev);\n let seg = getElSeg(segEl);\n let eventRange = this.eventRange = seg.eventRange;\n this.dragging.minDistance = component.context.options.eventDragMinDistance;\n // if touch, need to be working with a selected event\n this.dragging.setIgnoreMove(!this.component.isValidSegDownEl(ev.origEvent.target) || ev.isTouch && this.component.props.eventSelection !== eventRange.instance.instanceId);\n };\n this.handleDragStart = ev => {\n let context = this.component.context;\n let eventRange = this.eventRange;\n this.relevantEvents = getRelevantEvents(context.getCurrentData().eventStore, this.eventRange.instance.instanceId);\n let segEl = this.querySegEl(ev);\n this.draggingSegEl = segEl;\n this.draggingSeg = getElSeg(segEl);\n context.calendarApi.unselect();\n context.emitter.trigger('eventResizeStart', {\n el: segEl,\n event: new EventImpl(context, eventRange.def, eventRange.instance),\n jsEvent: ev.origEvent,\n view: context.viewApi\n });\n };\n this.handleHitUpdate = (hit, isFinal, ev) => {\n let context = this.component.context;\n let relevantEvents = this.relevantEvents;\n let initialHit = this.hitDragging.initialHit;\n let eventInstance = this.eventRange.instance;\n let mutation = null;\n let mutatedRelevantEvents = null;\n let isInvalid = false;\n let interaction = {\n affectedEvents: relevantEvents,\n mutatedEvents: createEmptyEventStore(),\n isEvent: true\n };\n if (hit) {\n let disallowed = hit.componentId === initialHit.componentId && this.isHitComboAllowed && !this.isHitComboAllowed(initialHit, hit);\n if (!disallowed) {\n mutation = computeMutation(initialHit, hit, ev.subjectEl.classList.contains('fc-event-resizer-start'), eventInstance.range);\n }\n }\n if (mutation) {\n mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, context.getCurrentData().eventUiBases, mutation, context);\n interaction.mutatedEvents = mutatedRelevantEvents;\n if (!isInteractionValid(interaction, hit.dateProfile, context)) {\n isInvalid = true;\n mutation = null;\n mutatedRelevantEvents = null;\n interaction.mutatedEvents = null;\n }\n }\n if (mutatedRelevantEvents) {\n context.dispatch({\n type: 'SET_EVENT_RESIZE',\n state: interaction\n });\n } else {\n context.dispatch({\n type: 'UNSET_EVENT_RESIZE'\n });\n }\n if (!isInvalid) {\n enableCursor();\n } else {\n disableCursor();\n }\n if (!isFinal) {\n if (mutation && isHitsEqual(initialHit, hit)) {\n mutation = null;\n }\n this.validMutation = mutation;\n this.mutatedRelevantEvents = mutatedRelevantEvents;\n }\n };\n this.handleDragEnd = ev => {\n let context = this.component.context;\n let eventDef = this.eventRange.def;\n let eventInstance = this.eventRange.instance;\n let eventApi = new EventImpl(context, eventDef, eventInstance);\n let relevantEvents = this.relevantEvents;\n let mutatedRelevantEvents = this.mutatedRelevantEvents;\n context.emitter.trigger('eventResizeStop', {\n el: this.draggingSegEl,\n event: eventApi,\n jsEvent: ev.origEvent,\n view: context.viewApi\n });\n if (this.validMutation) {\n let updatedEventApi = new EventImpl(context, mutatedRelevantEvents.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null);\n context.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: mutatedRelevantEvents\n });\n let eventChangeArg = {\n oldEvent: eventApi,\n event: updatedEventApi,\n relatedEvents: buildEventApis(mutatedRelevantEvents, context, eventInstance),\n revert() {\n context.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: relevantEvents // the pre-change events\n });\n }\n };\n context.emitter.trigger('eventResize', Object.assign(Object.assign({}, eventChangeArg), {\n el: this.draggingSegEl,\n startDelta: this.validMutation.startDelta || createDuration(0),\n endDelta: this.validMutation.endDelta || createDuration(0),\n jsEvent: ev.origEvent,\n view: context.viewApi\n }));\n context.emitter.trigger('eventChange', eventChangeArg);\n } else {\n context.emitter.trigger('_noEventResize');\n }\n // reset all internal state\n this.draggingSeg = null;\n this.relevantEvents = null;\n this.validMutation = null;\n // okay to keep eventInstance around. useful to set it in handlePointerDown\n };\n let component = settings.component;\n let dragging = this.dragging = new FeaturefulElementDragging(settings.el);\n dragging.pointer.selector = '.fc-event-resizer';\n dragging.touchScrollAllowed = false;\n dragging.autoScroller.isEnabled = component.context.options.dragScroll;\n let hitDragging = this.hitDragging = new HitDragging(this.dragging, interactionSettingsToStore(settings));\n hitDragging.emitter.on('pointerdown', this.handlePointerDown);\n hitDragging.emitter.on('dragstart', this.handleDragStart);\n hitDragging.emitter.on('hitupdate', this.handleHitUpdate);\n hitDragging.emitter.on('dragend', this.handleDragEnd);\n }\n destroy() {\n this.dragging.destroy();\n }\n querySegEl(ev) {\n return elementClosest(ev.subjectEl, '.fc-event');\n }\n}\nfunction computeMutation(hit0, hit1, isFromStart, instanceRange) {\n let dateEnv = hit0.context.dateEnv;\n let date0 = hit0.dateSpan.range.start;\n let date1 = hit1.dateSpan.range.start;\n let delta = diffDates(date0, date1, dateEnv, hit0.largeUnit);\n if (isFromStart) {\n if (dateEnv.add(instanceRange.start, delta) < instanceRange.end) {\n return {\n startDelta: delta\n };\n }\n } else if (dateEnv.add(instanceRange.end, delta) > instanceRange.start) {\n return {\n endDelta: delta\n };\n }\n return null;\n}\nclass UnselectAuto {\n constructor(context) {\n this.context = context;\n this.isRecentPointerDateSelect = false; // wish we could use a selector to detect date selection, but uses hit system\n this.matchesCancel = false;\n this.matchesEvent = false;\n this.onSelect = selectInfo => {\n if (selectInfo.jsEvent) {\n this.isRecentPointerDateSelect = true;\n }\n };\n this.onDocumentPointerDown = pev => {\n let unselectCancel = this.context.options.unselectCancel;\n let downEl = getEventTargetViaRoot(pev.origEvent);\n this.matchesCancel = !!elementClosest(downEl, unselectCancel);\n this.matchesEvent = !!elementClosest(downEl, EventDragging.SELECTOR); // interaction started on an event?\n };\n this.onDocumentPointerUp = pev => {\n let context = this.context;\n let documentPointer = this.documentPointer;\n let calendarState = context.getCurrentData();\n // touch-scrolling should never unfocus any type of selection\n if (!documentPointer.wasTouchScroll) {\n if (calendarState.dateSelection &&\n // an existing date selection?\n !this.isRecentPointerDateSelect // a new pointer-initiated date selection since last onDocumentPointerUp?\n ) {\n let unselectAuto = context.options.unselectAuto;\n if (unselectAuto && (!unselectAuto || !this.matchesCancel)) {\n context.calendarApi.unselect(pev);\n }\n }\n if (calendarState.eventSelection &&\n // an existing event selected?\n !this.matchesEvent // interaction DIDN'T start on an event\n ) {\n context.dispatch({\n type: 'UNSELECT_EVENT'\n });\n }\n }\n this.isRecentPointerDateSelect = false;\n };\n let documentPointer = this.documentPointer = new PointerDragging(document);\n documentPointer.shouldIgnoreMove = true;\n documentPointer.shouldWatchScroll = false;\n documentPointer.emitter.on('pointerdown', this.onDocumentPointerDown);\n documentPointer.emitter.on('pointerup', this.onDocumentPointerUp);\n /*\n TODO: better way to know about whether there was a selection with the pointer\n */\n context.emitter.on('select', this.onSelect);\n }\n destroy() {\n this.context.emitter.off('select', this.onSelect);\n this.documentPointer.destroy();\n }\n}\nconst OPTION_REFINERS = {\n fixedMirrorParent: identity\n};\nconst LISTENER_REFINERS = {\n dateClick: identity,\n eventDragStart: identity,\n eventDragStop: identity,\n eventDrop: identity,\n eventResizeStart: identity,\n eventResizeStop: identity,\n eventResize: identity,\n drop: identity,\n eventReceive: identity,\n eventLeave: identity\n};\n\n/*\nGiven an already instantiated draggable object for one-or-more elements,\nInterprets any dragging as an attempt to drag an events that lives outside\nof a calendar onto a calendar.\n*/\nclass ExternalElementDragging {\n constructor(dragging, suppliedDragMeta) {\n this.receivingContext = null;\n this.droppableEvent = null; // will exist for all drags, even if create:false\n this.suppliedDragMeta = null;\n this.dragMeta = null;\n this.handleDragStart = ev => {\n this.dragMeta = this.buildDragMeta(ev.subjectEl);\n };\n this.handleHitUpdate = (hit, isFinal, ev) => {\n let dragging = this.hitDragging.dragging;\n let receivingContext = null;\n let droppableEvent = null;\n let isInvalid = false;\n let interaction = {\n affectedEvents: createEmptyEventStore(),\n mutatedEvents: createEmptyEventStore(),\n isEvent: this.dragMeta.create\n };\n if (hit) {\n receivingContext = hit.context;\n if (this.canDropElOnCalendar(ev.subjectEl, receivingContext)) {\n droppableEvent = computeEventForDateSpan(hit.dateSpan, this.dragMeta, receivingContext);\n interaction.mutatedEvents = eventTupleToStore(droppableEvent);\n isInvalid = !isInteractionValid(interaction, hit.dateProfile, receivingContext);\n if (isInvalid) {\n interaction.mutatedEvents = createEmptyEventStore();\n droppableEvent = null;\n }\n }\n }\n this.displayDrag(receivingContext, interaction);\n // show mirror if no already-rendered mirror element OR if we are shutting down the mirror (?)\n // TODO: wish we could somehow wait for dispatch to guarantee render\n dragging.setMirrorIsVisible(isFinal || !droppableEvent || !document.querySelector('.fc-event-mirror'));\n if (!isInvalid) {\n enableCursor();\n } else {\n disableCursor();\n }\n if (!isFinal) {\n dragging.setMirrorNeedsRevert(!droppableEvent);\n this.receivingContext = receivingContext;\n this.droppableEvent = droppableEvent;\n }\n };\n this.handleDragEnd = pev => {\n let receivingContext = this.receivingContext,\n droppableEvent = this.droppableEvent;\n this.clearDrag();\n if (receivingContext && droppableEvent) {\n let finalHit = this.hitDragging.finalHit;\n let finalView = finalHit.context.viewApi;\n let dragMeta = this.dragMeta;\n receivingContext.emitter.trigger('drop', Object.assign(Object.assign({}, buildDatePointApiWithContext(finalHit.dateSpan, receivingContext)), {\n draggedEl: pev.subjectEl,\n jsEvent: pev.origEvent,\n view: finalView\n }));\n if (dragMeta.create) {\n let addingEvents = eventTupleToStore(droppableEvent);\n receivingContext.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: addingEvents\n });\n if (pev.isTouch) {\n receivingContext.dispatch({\n type: 'SELECT_EVENT',\n eventInstanceId: droppableEvent.instance.instanceId\n });\n }\n // signal that an external event landed\n receivingContext.emitter.trigger('eventReceive', {\n event: new EventImpl(receivingContext, droppableEvent.def, droppableEvent.instance),\n relatedEvents: [],\n revert() {\n receivingContext.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: addingEvents\n });\n },\n draggedEl: pev.subjectEl,\n view: finalView\n });\n }\n }\n this.receivingContext = null;\n this.droppableEvent = null;\n };\n let hitDragging = this.hitDragging = new HitDragging(dragging, interactionSettingsStore);\n hitDragging.requireInitial = false; // will start outside of a component\n hitDragging.emitter.on('dragstart', this.handleDragStart);\n hitDragging.emitter.on('hitupdate', this.handleHitUpdate);\n hitDragging.emitter.on('dragend', this.handleDragEnd);\n this.suppliedDragMeta = suppliedDragMeta;\n }\n buildDragMeta(subjectEl) {\n if (typeof this.suppliedDragMeta === 'object') {\n return parseDragMeta(this.suppliedDragMeta);\n }\n if (typeof this.suppliedDragMeta === 'function') {\n return parseDragMeta(this.suppliedDragMeta(subjectEl));\n }\n return getDragMetaFromEl(subjectEl);\n }\n displayDrag(nextContext, state) {\n let prevContext = this.receivingContext;\n if (prevContext && prevContext !== nextContext) {\n prevContext.dispatch({\n type: 'UNSET_EVENT_DRAG'\n });\n }\n if (nextContext) {\n nextContext.dispatch({\n type: 'SET_EVENT_DRAG',\n state\n });\n }\n }\n clearDrag() {\n if (this.receivingContext) {\n this.receivingContext.dispatch({\n type: 'UNSET_EVENT_DRAG'\n });\n }\n }\n canDropElOnCalendar(el, receivingContext) {\n let dropAccept = receivingContext.options.dropAccept;\n if (typeof dropAccept === 'function') {\n return dropAccept.call(receivingContext.calendarApi, el);\n }\n if (typeof dropAccept === 'string' && dropAccept) {\n return Boolean(elementMatches(el, dropAccept));\n }\n return true;\n }\n}\n// Utils for computing event store from the DragMeta\n// ----------------------------------------------------------------------------------------------------\nfunction computeEventForDateSpan(dateSpan, dragMeta, context) {\n let defProps = Object.assign({}, dragMeta.leftoverProps);\n for (let transform of context.pluginHooks.externalDefTransforms) {\n Object.assign(defProps, transform(dateSpan, dragMeta));\n }\n let _refineEventDef = refineEventDef(defProps, context),\n refined = _refineEventDef.refined,\n extra = _refineEventDef.extra;\n let def = parseEventDef(refined, extra, dragMeta.sourceId, dateSpan.allDay, context.options.forceEventDuration || Boolean(dragMeta.duration),\n // hasEnd\n context);\n let start = dateSpan.range.start;\n // only rely on time info if drop zone is all-day,\n // otherwise, we already know the time\n if (dateSpan.allDay && dragMeta.startTime) {\n start = context.dateEnv.add(start, dragMeta.startTime);\n }\n let end = dragMeta.duration ? context.dateEnv.add(start, dragMeta.duration) : getDefaultEventEnd(dateSpan.allDay, start, context);\n let instance = createEventInstance(def.defId, {\n start,\n end\n });\n return {\n def,\n instance\n };\n}\n// Utils for extracting data from element\n// ----------------------------------------------------------------------------------------------------\nfunction getDragMetaFromEl(el) {\n let str = getEmbeddedElData(el, 'event');\n let obj = str ? JSON.parse(str) : {\n create: false\n }; // if no embedded data, assume no event creation\n return parseDragMeta(obj);\n}\nconfig.dataAttrPrefix = '';\nfunction getEmbeddedElData(el, name) {\n let prefix = config.dataAttrPrefix;\n let prefixedName = (prefix ? prefix + '-' : '') + name;\n return el.getAttribute('data-' + prefixedName) || '';\n}\n\n/*\nMakes an element (that is *external* to any calendar) draggable.\nCan pass in data that determines how an event will be created when dropped onto a calendar.\nLeverages FullCalendar's internal drag-n-drop functionality WITHOUT a third-party drag system.\n*/\nclass ExternalDraggable {\n constructor(el) {\n let settings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.handlePointerDown = ev => {\n let dragging = this.dragging;\n let _this$settings = this.settings,\n minDistance = _this$settings.minDistance,\n longPressDelay = _this$settings.longPressDelay;\n dragging.minDistance = minDistance != null ? minDistance : ev.isTouch ? 0 : BASE_OPTION_DEFAULTS.eventDragMinDistance;\n dragging.delay = ev.isTouch ?\n // TODO: eventually read eventLongPressDelay instead vvv\n longPressDelay != null ? longPressDelay : BASE_OPTION_DEFAULTS.longPressDelay : 0;\n };\n this.handleDragStart = ev => {\n if (ev.isTouch && this.dragging.delay && ev.subjectEl.classList.contains('fc-event')) {\n this.dragging.mirror.getMirrorEl().classList.add('fc-event-selected');\n }\n };\n this.settings = settings;\n let dragging = this.dragging = new FeaturefulElementDragging(el);\n dragging.touchScrollAllowed = false;\n if (settings.itemSelector != null) {\n dragging.pointer.selector = settings.itemSelector;\n }\n if (settings.appendTo != null) {\n dragging.mirror.parentNode = settings.appendTo; // TODO: write tests\n }\n dragging.emitter.on('pointerdown', this.handlePointerDown);\n dragging.emitter.on('dragstart', this.handleDragStart);\n new ExternalElementDragging(dragging, settings.eventData); // eslint-disable-line no-new\n }\n destroy() {\n this.dragging.destroy();\n }\n}\n\n/*\nDetects when a *THIRD-PARTY* drag-n-drop system interacts with elements.\nThe third-party system is responsible for drawing the visuals effects of the drag.\nThis class simply monitors for pointer movements and fires events.\nIt also has the ability to hide the moving element (the \"mirror\") during the drag.\n*/\nclass InferredElementDragging extends ElementDragging {\n constructor(containerEl) {\n super(containerEl);\n this.shouldIgnoreMove = false;\n this.mirrorSelector = '';\n this.currentMirrorEl = null;\n this.handlePointerDown = ev => {\n this.emitter.trigger('pointerdown', ev);\n if (!this.shouldIgnoreMove) {\n // fire dragstart right away. does not support delay or min-distance\n this.emitter.trigger('dragstart', ev);\n }\n };\n this.handlePointerMove = ev => {\n if (!this.shouldIgnoreMove) {\n this.emitter.trigger('dragmove', ev);\n }\n };\n this.handlePointerUp = ev => {\n this.emitter.trigger('pointerup', ev);\n if (!this.shouldIgnoreMove) {\n // fire dragend right away. does not support a revert animation\n this.emitter.trigger('dragend', ev);\n }\n };\n let pointer = this.pointer = new PointerDragging(containerEl);\n pointer.emitter.on('pointerdown', this.handlePointerDown);\n pointer.emitter.on('pointermove', this.handlePointerMove);\n pointer.emitter.on('pointerup', this.handlePointerUp);\n }\n destroy() {\n this.pointer.destroy();\n }\n setIgnoreMove(bool) {\n this.shouldIgnoreMove = bool;\n }\n setMirrorIsVisible(bool) {\n if (bool) {\n // restore a previously hidden element.\n // use the reference in case the selector class has already been removed.\n if (this.currentMirrorEl) {\n this.currentMirrorEl.style.visibility = '';\n this.currentMirrorEl = null;\n }\n } else {\n let mirrorEl = this.mirrorSelector\n // TODO: somehow query FullCalendars WITHIN shadow-roots\n ? document.querySelector(this.mirrorSelector) : null;\n if (mirrorEl) {\n this.currentMirrorEl = mirrorEl;\n mirrorEl.style.visibility = 'hidden';\n }\n }\n }\n}\n\n/*\nBridges third-party drag-n-drop systems with FullCalendar.\nMust be instantiated and destroyed by caller.\n*/\nclass ThirdPartyDraggable {\n constructor(containerOrSettings, settings) {\n let containerEl = document;\n if (\n // wish we could just test instanceof EventTarget, but doesn't work in IE11\n containerOrSettings === document || containerOrSettings instanceof Element) {\n containerEl = containerOrSettings;\n settings = settings || {};\n } else {\n settings = containerOrSettings || {};\n }\n let dragging = this.dragging = new InferredElementDragging(containerEl);\n if (typeof settings.itemSelector === 'string') {\n dragging.pointer.selector = settings.itemSelector;\n } else if (containerEl === document) {\n dragging.pointer.selector = '[data-event]';\n }\n if (typeof settings.mirrorSelector === 'string') {\n dragging.mirrorSelector = settings.mirrorSelector;\n }\n let externalDragging = new ExternalElementDragging(dragging, settings.eventData);\n // The hit-detection system requires that the dnd-mirror-element be pointer-events:none,\n // but this can't be guaranteed for third-party draggables, so disable\n externalDragging.hitDragging.disablePointCheck = true;\n }\n destroy() {\n this.dragging.destroy();\n }\n}\nvar index = createPlugin({\n name: '@fullcalendar/interaction',\n componentInteractions: [DateClicking, DateSelecting, EventDragging, EventResizing],\n calendarInteractions: [UnselectAuto],\n elementDraggingImpl: FeaturefulElementDragging,\n optionRefiners: OPTION_REFINERS,\n listenerRefiners: LISTENER_REFINERS\n});\nexport { ExternalDraggable as Draggable, ThirdPartyDraggable, index as default };","import { DateComponent, getStickyHeaderDates, ViewContainer, SimpleScrollGrid, getStickyFooterScrollbar, renderScrollShim, createFormatter, BaseComponent, StandardEvent, buildSegTimeText, EventContainer, getSegAnchorAttrs, memoize, MoreLinkContainer, getSegMeta, getUniqueDomId, setRef, DayCellContainer, WeekNumberContainer, buildNavLinkAttrs, hasCustomDayCellContent, addMs, intersectRanges, addDays, SegHierarchy, buildEntryKey, intersectSpans, RefMap, sortEventSegs, isPropsEqual, buildEventRangeKey, BgEvent, renderFill, PositionCache, NowTimer, formatIsoMonthStr, formatDayString, Slicer, DayHeader, DaySeriesModel, DayTableModel, DateProfileGenerator, addWeeks, diffWeeks, injectStyles } from '@fullcalendar/core/internal.js';\nimport { createRef, createElement, Fragment } from '@fullcalendar/core/preact.js';\n\n/* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells.\n----------------------------------------------------------------------------------------------------------------------*/\n// It is a manager for a Table subcomponent, which does most of the heavy lifting.\n// It is responsible for managing width/height.\nclass TableView extends DateComponent {\n constructor() {\n super(...arguments);\n this.headerElRef = createRef();\n }\n renderSimpleLayout(headerRowContent, bodyContent) {\n let props = this.props,\n context = this.context;\n let sections = [];\n let stickyHeaderDates = getStickyHeaderDates(context.options);\n if (headerRowContent) {\n sections.push({\n type: 'header',\n key: 'header',\n isSticky: stickyHeaderDates,\n chunk: {\n elRef: this.headerElRef,\n tableClassName: 'fc-col-header',\n rowContent: headerRowContent\n }\n });\n }\n sections.push({\n type: 'body',\n key: 'body',\n liquid: true,\n chunk: {\n content: bodyContent\n }\n });\n return createElement(ViewContainer, {\n elClasses: ['fc-daygrid'],\n viewSpec: context.viewSpec\n }, createElement(SimpleScrollGrid, {\n liquid: !props.isHeightAuto && !props.forPrint,\n collapsibleWidth: props.forPrint,\n cols: [] /* TODO: make optional? */,\n sections: sections\n }));\n }\n renderHScrollLayout(headerRowContent, bodyContent, colCnt, dayMinWidth) {\n let ScrollGrid = this.context.pluginHooks.scrollGridImpl;\n if (!ScrollGrid) {\n throw new Error('No ScrollGrid implementation');\n }\n let props = this.props,\n context = this.context;\n let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options);\n let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options);\n let sections = [];\n if (headerRowContent) {\n sections.push({\n type: 'header',\n key: 'header',\n isSticky: stickyHeaderDates,\n chunks: [{\n key: 'main',\n elRef: this.headerElRef,\n tableClassName: 'fc-col-header',\n rowContent: headerRowContent\n }]\n });\n }\n sections.push({\n type: 'body',\n key: 'body',\n liquid: true,\n chunks: [{\n key: 'main',\n content: bodyContent\n }]\n });\n if (stickyFooterScrollbar) {\n sections.push({\n type: 'footer',\n key: 'footer',\n isSticky: true,\n chunks: [{\n key: 'main',\n content: renderScrollShim\n }]\n });\n }\n return createElement(ViewContainer, {\n elClasses: ['fc-daygrid'],\n viewSpec: context.viewSpec\n }, createElement(ScrollGrid, {\n liquid: !props.isHeightAuto && !props.forPrint,\n forPrint: props.forPrint,\n collapsibleWidth: props.forPrint,\n colGroups: [{\n cols: [{\n span: colCnt,\n minWidth: dayMinWidth\n }]\n }],\n sections: sections\n }));\n }\n}\nfunction splitSegsByRow(segs, rowCnt) {\n let byRow = [];\n for (let i = 0; i < rowCnt; i += 1) {\n byRow[i] = [];\n }\n for (let seg of segs) {\n byRow[seg.row].push(seg);\n }\n return byRow;\n}\nfunction splitSegsByFirstCol(segs, colCnt) {\n let byCol = [];\n for (let i = 0; i < colCnt; i += 1) {\n byCol[i] = [];\n }\n for (let seg of segs) {\n byCol[seg.firstCol].push(seg);\n }\n return byCol;\n}\nfunction splitInteractionByRow(ui, rowCnt) {\n let byRow = [];\n if (!ui) {\n for (let i = 0; i < rowCnt; i += 1) {\n byRow[i] = null;\n }\n } else {\n for (let i = 0; i < rowCnt; i += 1) {\n byRow[i] = {\n affectedInstances: ui.affectedInstances,\n isEvent: ui.isEvent,\n segs: []\n };\n }\n for (let seg of ui.segs) {\n byRow[seg.row].segs.push(seg);\n }\n }\n return byRow;\n}\nconst DEFAULT_TABLE_EVENT_TIME_FORMAT = createFormatter({\n hour: 'numeric',\n minute: '2-digit',\n omitZeroMinute: true,\n meridiem: 'narrow'\n});\nfunction hasListItemDisplay(seg) {\n let display = seg.eventRange.ui.display;\n return display === 'list-item' || display === 'auto' && !seg.eventRange.def.allDay && seg.firstCol === seg.lastCol &&\n // can't be multi-day\n seg.isStart &&\n // \"\n seg.isEnd // \"\n ;\n}\nclass TableBlockEvent extends BaseComponent {\n render() {\n let props = this.props;\n return createElement(StandardEvent, Object.assign({}, props, {\n elClasses: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'],\n defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT,\n defaultDisplayEventEnd: props.defaultDisplayEventEnd,\n disableResizing: !props.seg.eventRange.def.allDay\n }));\n }\n}\nclass TableListItemEvent extends BaseComponent {\n render() {\n let props = this.props,\n context = this.context;\n let options = context.options;\n let seg = props.seg;\n let timeFormat = options.eventTimeFormat || DEFAULT_TABLE_EVENT_TIME_FORMAT;\n let timeText = buildSegTimeText(seg, timeFormat, context, true, props.defaultDisplayEventEnd);\n return createElement(EventContainer, Object.assign({}, props, {\n elTag: \"a\",\n elClasses: ['fc-daygrid-event', 'fc-daygrid-dot-event'],\n elAttrs: getSegAnchorAttrs(props.seg, context),\n defaultGenerator: renderInnerContent,\n timeText: timeText,\n isResizing: false,\n isDateSelecting: false\n }));\n }\n}\nfunction renderInnerContent(renderProps) {\n return createElement(Fragment, null, createElement(\"div\", {\n className: \"fc-daygrid-event-dot\",\n style: {\n borderColor: renderProps.borderColor || renderProps.backgroundColor\n }\n }), renderProps.timeText && createElement(\"div\", {\n className: \"fc-event-time\"\n }, renderProps.timeText), createElement(\"div\", {\n className: \"fc-event-title\"\n }, renderProps.event.title || createElement(Fragment, null, \"\\u00A0\")));\n}\nclass TableCellMoreLink extends BaseComponent {\n constructor() {\n super(...arguments);\n this.compileSegs = memoize(compileSegs);\n }\n render() {\n let props = this.props;\n let _this$compileSegs = this.compileSegs(props.singlePlacements),\n allSegs = _this$compileSegs.allSegs,\n invisibleSegs = _this$compileSegs.invisibleSegs;\n return createElement(MoreLinkContainer, {\n elClasses: ['fc-daygrid-more-link'],\n dateProfile: props.dateProfile,\n todayRange: props.todayRange,\n allDayDate: props.allDayDate,\n moreCnt: props.moreCnt,\n allSegs: allSegs,\n hiddenSegs: invisibleSegs,\n alignmentElRef: props.alignmentElRef,\n alignGridTop: props.alignGridTop,\n extraDateSpan: props.extraDateSpan,\n popoverContent: () => {\n let isForcedInvisible = (props.eventDrag ? props.eventDrag.affectedInstances : null) || (props.eventResize ? props.eventResize.affectedInstances : null) || {};\n return createElement(Fragment, null, allSegs.map(seg => {\n let instanceId = seg.eventRange.instance.instanceId;\n return createElement(\"div\", {\n className: \"fc-daygrid-event-harness\",\n key: instanceId,\n style: {\n visibility: isForcedInvisible[instanceId] ? 'hidden' : ''\n }\n }, hasListItemDisplay(seg) ? createElement(TableListItemEvent, Object.assign({\n seg: seg,\n isDragging: false,\n isSelected: instanceId === props.eventSelection,\n defaultDisplayEventEnd: false\n }, getSegMeta(seg, props.todayRange))) : createElement(TableBlockEvent, Object.assign({\n seg: seg,\n isDragging: false,\n isResizing: false,\n isDateSelecting: false,\n isSelected: instanceId === props.eventSelection,\n defaultDisplayEventEnd: false\n }, getSegMeta(seg, props.todayRange))));\n }));\n }\n });\n }\n}\nfunction compileSegs(singlePlacements) {\n let allSegs = [];\n let invisibleSegs = [];\n for (let placement of singlePlacements) {\n allSegs.push(placement.seg);\n if (!placement.isVisible) {\n invisibleSegs.push(placement.seg);\n }\n }\n return {\n allSegs,\n invisibleSegs\n };\n}\nconst DEFAULT_WEEK_NUM_FORMAT = createFormatter({\n week: 'narrow'\n});\nclass TableCell extends DateComponent {\n constructor() {\n super(...arguments);\n this.rootElRef = createRef();\n this.state = {\n dayNumberId: getUniqueDomId()\n };\n this.handleRootEl = el => {\n setRef(this.rootElRef, el);\n setRef(this.props.elRef, el);\n };\n }\n render() {\n let context = this.context,\n props = this.props,\n state = this.state,\n rootElRef = this.rootElRef;\n let options = context.options,\n dateEnv = context.dateEnv;\n let date = props.date,\n dateProfile = props.dateProfile;\n // TODO: memoize this?\n const isMonthStart = props.showDayNumber && shouldDisplayMonthStart(date, dateProfile.currentRange, dateEnv);\n return createElement(DayCellContainer, {\n elTag: \"td\",\n elRef: this.handleRootEl,\n elClasses: ['fc-daygrid-day', ...(props.extraClassNames || [])],\n elAttrs: Object.assign(Object.assign(Object.assign({}, props.extraDataAttrs), props.showDayNumber ? {\n 'aria-labelledby': state.dayNumberId\n } : {}), {\n role: 'gridcell'\n }),\n defaultGenerator: renderTopInner,\n date: date,\n dateProfile: dateProfile,\n todayRange: props.todayRange,\n showDayNumber: props.showDayNumber,\n isMonthStart: isMonthStart,\n extraRenderProps: props.extraRenderProps\n }, (InnerContent, renderProps) => createElement(\"div\", {\n ref: props.innerElRef,\n className: \"fc-daygrid-day-frame fc-scrollgrid-sync-inner\",\n style: {\n minHeight: props.minHeight\n }\n }, props.showWeekNumber && createElement(WeekNumberContainer, {\n elTag: \"a\",\n elClasses: ['fc-daygrid-week-number'],\n elAttrs: buildNavLinkAttrs(context, date, 'week'),\n date: date,\n defaultFormat: DEFAULT_WEEK_NUM_FORMAT\n }), !renderProps.isDisabled && (props.showDayNumber || hasCustomDayCellContent(options) || props.forceDayTop) ? createElement(\"div\", {\n className: \"fc-daygrid-day-top\"\n }, createElement(InnerContent, {\n elTag: \"a\",\n elClasses: ['fc-daygrid-day-number', isMonthStart && 'fc-daygrid-month-start'],\n elAttrs: Object.assign(Object.assign({}, buildNavLinkAttrs(context, date)), {\n id: state.dayNumberId\n })\n })) : props.showDayNumber ?\n // for creating correct amount of space (see issue #7162)\n createElement(\"div\", {\n className: \"fc-daygrid-day-top\",\n style: {\n visibility: 'hidden'\n }\n }, createElement(\"a\", {\n className: \"fc-daygrid-day-number\"\n }, \"\\u00A0\")) : undefined, createElement(\"div\", {\n className: \"fc-daygrid-day-events\",\n ref: props.fgContentElRef\n }, props.fgContent, createElement(\"div\", {\n className: \"fc-daygrid-day-bottom\",\n style: {\n marginTop: props.moreMarginTop\n }\n }, createElement(TableCellMoreLink, {\n allDayDate: date,\n singlePlacements: props.singlePlacements,\n moreCnt: props.moreCnt,\n alignmentElRef: rootElRef,\n alignGridTop: !props.showDayNumber,\n extraDateSpan: props.extraDateSpan,\n dateProfile: props.dateProfile,\n eventSelection: props.eventSelection,\n eventDrag: props.eventDrag,\n eventResize: props.eventResize,\n todayRange: props.todayRange\n }))), createElement(\"div\", {\n className: \"fc-daygrid-day-bg\"\n }, props.bgContent)));\n }\n}\nfunction renderTopInner(props) {\n return props.dayNumberText || createElement(Fragment, null, \"\\u00A0\");\n}\nfunction shouldDisplayMonthStart(date, currentRange, dateEnv) {\n const currentStart = currentRange.start,\n currentEnd = currentRange.end;\n const currentEndIncl = addMs(currentEnd, -1);\n const currentFirstYear = dateEnv.getYear(currentStart);\n const currentFirstMonth = dateEnv.getMonth(currentStart);\n const currentLastYear = dateEnv.getYear(currentEndIncl);\n const currentLastMonth = dateEnv.getMonth(currentEndIncl);\n // spans more than one month?\n return !(currentFirstYear === currentLastYear && currentFirstMonth === currentLastMonth) && Boolean(\n // first date in current view?\n date.valueOf() === currentStart.valueOf() ||\n // a month-start that's within the current range?\n dateEnv.getDay(date) === 1 && date.valueOf() < currentEnd.valueOf());\n}\nfunction generateSegKey(seg) {\n return seg.eventRange.instance.instanceId + ':' + seg.firstCol;\n}\nfunction generateSegUid(seg) {\n return generateSegKey(seg) + ':' + seg.lastCol;\n}\nfunction computeFgSegPlacement(segs,\n// assumed already sorted\ndayMaxEvents, dayMaxEventRows, strictOrder, segHeights, maxContentHeight, cells) {\n let hierarchy = new DayGridSegHierarchy(segEntry => {\n // TODO: more DRY with generateSegUid\n let segUid = segs[segEntry.index].eventRange.instance.instanceId + ':' + segEntry.span.start + ':' + (segEntry.span.end - 1);\n // if no thickness known, assume 1 (if 0, so small it always fits)\n return segHeights[segUid] || 1;\n });\n hierarchy.allowReslicing = true;\n hierarchy.strictOrder = strictOrder;\n if (dayMaxEvents === true || dayMaxEventRows === true) {\n hierarchy.maxCoord = maxContentHeight;\n hierarchy.hiddenConsumes = true;\n } else if (typeof dayMaxEvents === 'number') {\n hierarchy.maxStackCnt = dayMaxEvents;\n } else if (typeof dayMaxEventRows === 'number') {\n hierarchy.maxStackCnt = dayMaxEventRows;\n hierarchy.hiddenConsumes = true;\n }\n // create segInputs only for segs with known heights\n let segInputs = [];\n let unknownHeightSegs = [];\n for (let i = 0; i < segs.length; i += 1) {\n let seg = segs[i];\n let segUid = generateSegUid(seg);\n let eventHeight = segHeights[segUid];\n if (eventHeight != null) {\n segInputs.push({\n index: i,\n span: {\n start: seg.firstCol,\n end: seg.lastCol + 1\n }\n });\n } else {\n unknownHeightSegs.push(seg);\n }\n }\n let hiddenEntries = hierarchy.addSegs(segInputs);\n let segRects = hierarchy.toRects();\n let _placeRects = placeRects(segRects, segs, cells),\n singleColPlacements = _placeRects.singleColPlacements,\n multiColPlacements = _placeRects.multiColPlacements,\n leftoverMargins = _placeRects.leftoverMargins;\n let moreCnts = [];\n let moreMarginTops = [];\n // add segs with unknown heights\n for (let seg of unknownHeightSegs) {\n multiColPlacements[seg.firstCol].push({\n seg,\n isVisible: false,\n isAbsolute: true,\n absoluteTop: 0,\n marginTop: 0\n });\n for (let col = seg.firstCol; col <= seg.lastCol; col += 1) {\n singleColPlacements[col].push({\n seg: resliceSeg(seg, col, col + 1, cells),\n isVisible: false,\n isAbsolute: false,\n absoluteTop: 0,\n marginTop: 0\n });\n }\n }\n // add the hidden entries\n for (let col = 0; col < cells.length; col += 1) {\n moreCnts.push(0);\n }\n for (let hiddenEntry of hiddenEntries) {\n let seg = segs[hiddenEntry.index];\n let hiddenSpan = hiddenEntry.span;\n multiColPlacements[hiddenSpan.start].push({\n seg: resliceSeg(seg, hiddenSpan.start, hiddenSpan.end, cells),\n isVisible: false,\n isAbsolute: true,\n absoluteTop: 0,\n marginTop: 0\n });\n for (let col = hiddenSpan.start; col < hiddenSpan.end; col += 1) {\n moreCnts[col] += 1;\n singleColPlacements[col].push({\n seg: resliceSeg(seg, col, col + 1, cells),\n isVisible: false,\n isAbsolute: false,\n absoluteTop: 0,\n marginTop: 0\n });\n }\n }\n // deal with leftover margins\n for (let col = 0; col < cells.length; col += 1) {\n moreMarginTops.push(leftoverMargins[col]);\n }\n return {\n singleColPlacements,\n multiColPlacements,\n moreCnts,\n moreMarginTops\n };\n}\n// rects ordered by top coord, then left\nfunction placeRects(allRects, segs, cells) {\n let rectsByEachCol = groupRectsByEachCol(allRects, cells.length);\n let singleColPlacements = [];\n let multiColPlacements = [];\n let leftoverMargins = [];\n for (let col = 0; col < cells.length; col += 1) {\n let rects = rectsByEachCol[col];\n // compute all static segs in singlePlacements\n let singlePlacements = [];\n let currentHeight = 0;\n let currentMarginTop = 0;\n for (let rect of rects) {\n let seg = segs[rect.index];\n singlePlacements.push({\n seg: resliceSeg(seg, col, col + 1, cells),\n isVisible: true,\n isAbsolute: false,\n absoluteTop: rect.levelCoord,\n marginTop: rect.levelCoord - currentHeight\n });\n currentHeight = rect.levelCoord + rect.thickness;\n }\n // compute mixed static/absolute segs in multiPlacements\n let multiPlacements = [];\n currentHeight = 0;\n currentMarginTop = 0;\n for (let rect of rects) {\n let seg = segs[rect.index];\n let isAbsolute = rect.span.end - rect.span.start > 1; // multi-column?\n let isFirstCol = rect.span.start === col;\n currentMarginTop += rect.levelCoord - currentHeight; // amount of space since bottom of previous seg\n currentHeight = rect.levelCoord + rect.thickness; // height will now be bottom of current seg\n if (isAbsolute) {\n currentMarginTop += rect.thickness;\n if (isFirstCol) {\n multiPlacements.push({\n seg: resliceSeg(seg, rect.span.start, rect.span.end, cells),\n isVisible: true,\n isAbsolute: true,\n absoluteTop: rect.levelCoord,\n marginTop: 0\n });\n }\n } else if (isFirstCol) {\n multiPlacements.push({\n seg: resliceSeg(seg, rect.span.start, rect.span.end, cells),\n isVisible: true,\n isAbsolute: false,\n absoluteTop: rect.levelCoord,\n marginTop: currentMarginTop // claim the margin\n });\n currentMarginTop = 0;\n }\n }\n singleColPlacements.push(singlePlacements);\n multiColPlacements.push(multiPlacements);\n leftoverMargins.push(currentMarginTop);\n }\n return {\n singleColPlacements,\n multiColPlacements,\n leftoverMargins\n };\n}\nfunction groupRectsByEachCol(rects, colCnt) {\n let rectsByEachCol = [];\n for (let col = 0; col < colCnt; col += 1) {\n rectsByEachCol.push([]);\n }\n for (let rect of rects) {\n for (let col = rect.span.start; col < rect.span.end; col += 1) {\n rectsByEachCol[col].push(rect);\n }\n }\n return rectsByEachCol;\n}\nfunction resliceSeg(seg, spanStart, spanEnd, cells) {\n if (seg.firstCol === spanStart && seg.lastCol === spanEnd - 1) {\n return seg;\n }\n let eventRange = seg.eventRange;\n let origRange = eventRange.range;\n let slicedRange = intersectRanges(origRange, {\n start: cells[spanStart].date,\n end: addDays(cells[spanEnd - 1].date, 1)\n });\n return Object.assign(Object.assign({}, seg), {\n firstCol: spanStart,\n lastCol: spanEnd - 1,\n eventRange: {\n def: eventRange.def,\n ui: Object.assign(Object.assign({}, eventRange.ui), {\n durationEditable: false\n }),\n instance: eventRange.instance,\n range: slicedRange\n },\n isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(),\n isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf()\n });\n}\nclass DayGridSegHierarchy extends SegHierarchy {\n constructor() {\n super(...arguments);\n // config\n this.hiddenConsumes = false;\n // allows us to keep hidden entries in the hierarchy so they take up space\n this.forceHidden = {};\n }\n addSegs(segInputs) {\n const hiddenSegs = super.addSegs(segInputs);\n const entriesByLevel = this.entriesByLevel;\n const excludeHidden = entry => !this.forceHidden[buildEntryKey(entry)];\n // remove the forced-hidden segs\n for (let level = 0; level < entriesByLevel.length; level += 1) {\n entriesByLevel[level] = entriesByLevel[level].filter(excludeHidden);\n }\n return hiddenSegs;\n }\n handleInvalidInsertion(insertion, entry, hiddenEntries) {\n const entriesByLevel = this.entriesByLevel,\n forceHidden = this.forceHidden;\n const touchingEntry = insertion.touchingEntry,\n touchingLevel = insertion.touchingLevel,\n touchingLateral = insertion.touchingLateral;\n // the entry that the new insertion is touching must be hidden\n if (this.hiddenConsumes && touchingEntry) {\n const touchingEntryId = buildEntryKey(touchingEntry);\n if (!forceHidden[touchingEntryId]) {\n if (this.allowReslicing) {\n // split up the touchingEntry, reinsert it\n const hiddenEntry = Object.assign(Object.assign({}, touchingEntry), {\n span: intersectSpans(touchingEntry.span, entry.span)\n });\n // reinsert the area that turned into a \"more\" link (so no other entries try to\n // occupy the space) but mark it forced-hidden\n const hiddenEntryId = buildEntryKey(hiddenEntry);\n forceHidden[hiddenEntryId] = true;\n entriesByLevel[touchingLevel][touchingLateral] = hiddenEntry;\n hiddenEntries.push(hiddenEntry);\n this.splitEntry(touchingEntry, entry, hiddenEntries);\n } else {\n forceHidden[touchingEntryId] = true;\n hiddenEntries.push(touchingEntry);\n }\n }\n }\n // will try to reslice...\n super.handleInvalidInsertion(insertion, entry, hiddenEntries);\n }\n}\nclass TableRow extends DateComponent {\n constructor() {\n super(...arguments);\n this.cellElRefs = new RefMap(); // the <td>\n this.frameElRefs = new RefMap(); // the fc-daygrid-day-frame\n this.fgElRefs = new RefMap(); // the fc-daygrid-day-events\n this.segHarnessRefs = new RefMap(); // indexed by \"instanceId:firstCol\"\n this.rootElRef = createRef();\n this.state = {\n framePositions: null,\n maxContentHeight: null,\n segHeights: {}\n };\n this.handleResize = isForced => {\n if (isForced) {\n this.updateSizing(true); // isExternal=true\n }\n };\n }\n render() {\n let props = this.props,\n state = this.state,\n context = this.context;\n let options = context.options;\n let colCnt = props.cells.length;\n let businessHoursByCol = splitSegsByFirstCol(props.businessHourSegs, colCnt);\n let bgEventSegsByCol = splitSegsByFirstCol(props.bgEventSegs, colCnt);\n let highlightSegsByCol = splitSegsByFirstCol(this.getHighlightSegs(), colCnt);\n let mirrorSegsByCol = splitSegsByFirstCol(this.getMirrorSegs(), colCnt);\n let _computeFgSegPlacemen = computeFgSegPlacement(sortEventSegs(props.fgEventSegs, options.eventOrder), props.dayMaxEvents, props.dayMaxEventRows, options.eventOrderStrict, state.segHeights, state.maxContentHeight, props.cells),\n singleColPlacements = _computeFgSegPlacemen.singleColPlacements,\n multiColPlacements = _computeFgSegPlacemen.multiColPlacements,\n moreCnts = _computeFgSegPlacemen.moreCnts,\n moreMarginTops = _computeFgSegPlacemen.moreMarginTops;\n let isForcedInvisible =\n // TODO: messy way to compute this\n props.eventDrag && props.eventDrag.affectedInstances || props.eventResize && props.eventResize.affectedInstances || {};\n return createElement(\"tr\", {\n ref: this.rootElRef,\n role: \"row\"\n }, props.renderIntro && props.renderIntro(), props.cells.map((cell, col) => {\n let normalFgNodes = this.renderFgSegs(col, props.forPrint ? singleColPlacements[col] : multiColPlacements[col], props.todayRange, isForcedInvisible);\n let mirrorFgNodes = this.renderFgSegs(col, buildMirrorPlacements(mirrorSegsByCol[col], multiColPlacements), props.todayRange, {}, Boolean(props.eventDrag), Boolean(props.eventResize), false);\n return createElement(TableCell, {\n key: cell.key,\n elRef: this.cellElRefs.createRef(cell.key),\n innerElRef: this.frameElRefs.createRef(cell.key) /* FF <td> problem, but okay to use for left/right. TODO: rename prop */,\n dateProfile: props.dateProfile,\n date: cell.date,\n showDayNumber: props.showDayNumbers,\n showWeekNumber: props.showWeekNumbers && col === 0,\n forceDayTop: props.showWeekNumbers /* even displaying weeknum for row, not necessarily day */,\n todayRange: props.todayRange,\n eventSelection: props.eventSelection,\n eventDrag: props.eventDrag,\n eventResize: props.eventResize,\n extraRenderProps: cell.extraRenderProps,\n extraDataAttrs: cell.extraDataAttrs,\n extraClassNames: cell.extraClassNames,\n extraDateSpan: cell.extraDateSpan,\n moreCnt: moreCnts[col],\n moreMarginTop: moreMarginTops[col],\n singlePlacements: singleColPlacements[col],\n fgContentElRef: this.fgElRefs.createRef(cell.key),\n fgContent:\n // Fragment scopes the keys\n createElement(Fragment, null, createElement(Fragment, null, normalFgNodes), createElement(Fragment, null, mirrorFgNodes)),\n bgContent:\n // Fragment scopes the keys\n createElement(Fragment, null, this.renderFillSegs(highlightSegsByCol[col], 'highlight'), this.renderFillSegs(businessHoursByCol[col], 'non-business'), this.renderFillSegs(bgEventSegsByCol[col], 'bg-event')),\n minHeight: props.cellMinHeight\n });\n }));\n }\n componentDidMount() {\n this.updateSizing(true);\n this.context.addResizeHandler(this.handleResize);\n }\n componentDidUpdate(prevProps, prevState) {\n let currentProps = this.props;\n this.updateSizing(!isPropsEqual(prevProps, currentProps));\n }\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleResize);\n }\n getHighlightSegs() {\n let props = this.props;\n if (props.eventDrag && props.eventDrag.segs.length) {\n // messy check\n return props.eventDrag.segs;\n }\n if (props.eventResize && props.eventResize.segs.length) {\n // messy check\n return props.eventResize.segs;\n }\n return props.dateSelectionSegs;\n }\n getMirrorSegs() {\n let props = this.props;\n if (props.eventResize && props.eventResize.segs.length) {\n // messy check\n return props.eventResize.segs;\n }\n return [];\n }\n renderFgSegs(col, segPlacements, todayRange, isForcedInvisible, isDragging, isResizing, isDateSelecting) {\n let context = this.context;\n let eventSelection = this.props.eventSelection;\n let framePositions = this.state.framePositions;\n let defaultDisplayEventEnd = this.props.cells.length === 1; // colCnt === 1\n let isMirror = isDragging || isResizing || isDateSelecting;\n let nodes = [];\n if (framePositions) {\n for (let placement of segPlacements) {\n let seg = placement.seg;\n let instanceId = seg.eventRange.instance.instanceId;\n let isVisible = placement.isVisible && !isForcedInvisible[instanceId];\n let isAbsolute = placement.isAbsolute;\n let left = '';\n let right = '';\n if (isAbsolute) {\n if (context.isRtl) {\n right = 0;\n left = framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol];\n } else {\n left = 0;\n right = framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol];\n }\n }\n /*\n known bug: events that are force to be list-item but span multiple days still take up space in later columns\n todo: in print view, for multi-day events, don't display title within non-start/end segs\n */\n nodes.push(createElement(\"div\", {\n className: 'fc-daygrid-event-harness' + (isAbsolute ? ' fc-daygrid-event-harness-abs' : ''),\n key: generateSegKey(seg),\n ref: isMirror ? null : this.segHarnessRefs.createRef(generateSegUid(seg)),\n style: {\n visibility: isVisible ? '' : 'hidden',\n marginTop: isAbsolute ? '' : placement.marginTop,\n top: isAbsolute ? placement.absoluteTop : '',\n left,\n right\n }\n }, hasListItemDisplay(seg) ? createElement(TableListItemEvent, Object.assign({\n seg: seg,\n isDragging: isDragging,\n isSelected: instanceId === eventSelection,\n defaultDisplayEventEnd: defaultDisplayEventEnd\n }, getSegMeta(seg, todayRange))) : createElement(TableBlockEvent, Object.assign({\n seg: seg,\n isDragging: isDragging,\n isResizing: isResizing,\n isDateSelecting: isDateSelecting,\n isSelected: instanceId === eventSelection,\n defaultDisplayEventEnd: defaultDisplayEventEnd\n }, getSegMeta(seg, todayRange)))));\n }\n }\n return nodes;\n }\n renderFillSegs(segs, fillType) {\n let isRtl = this.context.isRtl;\n let todayRange = this.props.todayRange;\n let framePositions = this.state.framePositions;\n let nodes = [];\n if (framePositions) {\n for (let seg of segs) {\n let leftRightCss = isRtl ? {\n right: 0,\n left: framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol]\n } : {\n left: 0,\n right: framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol]\n };\n nodes.push(createElement(\"div\", {\n key: buildEventRangeKey(seg.eventRange),\n className: \"fc-daygrid-bg-harness\",\n style: leftRightCss\n }, fillType === 'bg-event' ? createElement(BgEvent, Object.assign({\n seg: seg\n }, getSegMeta(seg, todayRange))) : renderFill(fillType)));\n }\n }\n return createElement(Fragment, {}, ...nodes);\n }\n updateSizing(isExternalSizingChange) {\n let props = this.props,\n state = this.state,\n frameElRefs = this.frameElRefs;\n if (!props.forPrint && props.clientWidth !== null // positioning ready?\n ) {\n if (isExternalSizingChange) {\n let frameEls = props.cells.map(cell => frameElRefs.currentMap[cell.key]);\n if (frameEls.length) {\n let originEl = this.rootElRef.current;\n let newPositionCache = new PositionCache(originEl, frameEls, true,\n // isHorizontal\n false);\n if (!state.framePositions || !state.framePositions.similarTo(newPositionCache)) {\n this.setState({\n framePositions: new PositionCache(originEl, frameEls, true,\n // isHorizontal\n false)\n });\n }\n }\n }\n const oldSegHeights = this.state.segHeights;\n const newSegHeights = this.querySegHeights();\n const limitByContentHeight = props.dayMaxEvents === true || props.dayMaxEventRows === true;\n this.safeSetState({\n // HACK to prevent oscillations of events being shown/hidden from max-event-rows\n // Essentially, once you compute an element's height, never null-out.\n // TODO: always display all events, as visibility:hidden?\n segHeights: Object.assign(Object.assign({}, oldSegHeights), newSegHeights),\n maxContentHeight: limitByContentHeight ? this.computeMaxContentHeight() : null\n });\n }\n }\n querySegHeights() {\n let segElMap = this.segHarnessRefs.currentMap;\n let segHeights = {};\n // get the max height amongst instance segs\n for (let segUid in segElMap) {\n let height = Math.round(segElMap[segUid].getBoundingClientRect().height);\n segHeights[segUid] = Math.max(segHeights[segUid] || 0, height);\n }\n return segHeights;\n }\n computeMaxContentHeight() {\n let firstKey = this.props.cells[0].key;\n let cellEl = this.cellElRefs.currentMap[firstKey];\n let fcContainerEl = this.fgElRefs.currentMap[firstKey];\n return cellEl.getBoundingClientRect().bottom - fcContainerEl.getBoundingClientRect().top;\n }\n getCellEls() {\n let elMap = this.cellElRefs.currentMap;\n return this.props.cells.map(cell => elMap[cell.key]);\n }\n}\nTableRow.addStateEquality({\n segHeights: isPropsEqual\n});\nfunction buildMirrorPlacements(mirrorSegs, colPlacements) {\n if (!mirrorSegs.length) {\n return [];\n }\n let topsByInstanceId = buildAbsoluteTopHash(colPlacements); // TODO: cache this at first render?\n return mirrorSegs.map(seg => ({\n seg,\n isVisible: true,\n isAbsolute: true,\n absoluteTop: topsByInstanceId[seg.eventRange.instance.instanceId],\n marginTop: 0\n }));\n}\nfunction buildAbsoluteTopHash(colPlacements) {\n let topsByInstanceId = {};\n for (let placements of colPlacements) {\n for (let placement of placements) {\n topsByInstanceId[placement.seg.eventRange.instance.instanceId] = placement.absoluteTop;\n }\n }\n return topsByInstanceId;\n}\nclass TableRows extends DateComponent {\n constructor() {\n super(...arguments);\n this.splitBusinessHourSegs = memoize(splitSegsByRow);\n this.splitBgEventSegs = memoize(splitSegsByRow);\n this.splitFgEventSegs = memoize(splitSegsByRow);\n this.splitDateSelectionSegs = memoize(splitSegsByRow);\n this.splitEventDrag = memoize(splitInteractionByRow);\n this.splitEventResize = memoize(splitInteractionByRow);\n this.rowRefs = new RefMap();\n }\n render() {\n let props = this.props,\n context = this.context;\n let rowCnt = props.cells.length;\n let businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, rowCnt);\n let bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, rowCnt);\n let fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, rowCnt);\n let dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, rowCnt);\n let eventDragByRow = this.splitEventDrag(props.eventDrag, rowCnt);\n let eventResizeByRow = this.splitEventResize(props.eventResize, rowCnt);\n // for DayGrid view with many rows, force a min-height on cells so doesn't appear squished\n // choose 7 because a month view will have max 6 rows\n let cellMinHeight = rowCnt >= 7 && props.clientWidth ? props.clientWidth / context.options.aspectRatio / 6 : null;\n return createElement(NowTimer, {\n unit: \"day\"\n }, (nowDate, todayRange) => createElement(Fragment, null, props.cells.map((cells, row) => createElement(TableRow, {\n ref: this.rowRefs.createRef(row),\n key: cells.length ? cells[0].date.toISOString() /* best? or put key on cell? or use diff formatter? */ : row // in case there are no cells (like when resource view is loading)\n ,\n showDayNumbers: rowCnt > 1,\n showWeekNumbers: props.showWeekNumbers,\n todayRange: todayRange,\n dateProfile: props.dateProfile,\n cells: cells,\n renderIntro: props.renderRowIntro,\n businessHourSegs: businessHourSegsByRow[row],\n eventSelection: props.eventSelection,\n bgEventSegs: bgEventSegsByRow[row].filter(isSegAllDay) /* hack */,\n fgEventSegs: fgEventSegsByRow[row],\n dateSelectionSegs: dateSelectionSegsByRow[row],\n eventDrag: eventDragByRow[row],\n eventResize: eventResizeByRow[row],\n dayMaxEvents: props.dayMaxEvents,\n dayMaxEventRows: props.dayMaxEventRows,\n clientWidth: props.clientWidth,\n clientHeight: props.clientHeight,\n cellMinHeight: cellMinHeight,\n forPrint: props.forPrint\n }))));\n }\n componentDidMount() {\n this.registerInteractiveComponent();\n }\n componentDidUpdate() {\n // for if started with zero cells\n this.registerInteractiveComponent();\n }\n registerInteractiveComponent() {\n if (!this.rootEl) {\n // HACK: need a daygrid wrapper parent to do positioning\n // NOTE: a daygrid resource view w/o resources can have zero cells\n const firstCellEl = this.rowRefs.currentMap[0].getCellEls()[0];\n const rootEl = firstCellEl ? firstCellEl.closest('.fc-daygrid-body') : null;\n if (rootEl) {\n this.rootEl = rootEl;\n this.context.registerInteractiveComponent(this, {\n el: rootEl,\n isHitComboAllowed: this.props.isHitComboAllowed\n });\n }\n }\n }\n componentWillUnmount() {\n if (this.rootEl) {\n this.context.unregisterInteractiveComponent(this);\n this.rootEl = null;\n }\n }\n // Hit System\n // ----------------------------------------------------------------------------------------------------\n prepareHits() {\n this.rowPositions = new PositionCache(this.rootEl, this.rowRefs.collect().map(rowObj => rowObj.getCellEls()[0]),\n // first cell el in each row. TODO: not optimal\n false, true);\n this.colPositions = new PositionCache(this.rootEl, this.rowRefs.currentMap[0].getCellEls(),\n // cell els in first row\n true,\n // horizontal\n false);\n }\n queryHit(positionLeft, positionTop) {\n let colPositions = this.colPositions,\n rowPositions = this.rowPositions;\n let col = colPositions.leftToIndex(positionLeft);\n let row = rowPositions.topToIndex(positionTop);\n if (row != null && col != null) {\n let cell = this.props.cells[row][col];\n return {\n dateProfile: this.props.dateProfile,\n dateSpan: Object.assign({\n range: this.getCellRange(row, col),\n allDay: true\n }, cell.extraDateSpan),\n dayEl: this.getCellEl(row, col),\n rect: {\n left: colPositions.lefts[col],\n right: colPositions.rights[col],\n top: rowPositions.tops[row],\n bottom: rowPositions.bottoms[row]\n },\n layer: 0\n };\n }\n return null;\n }\n getCellEl(row, col) {\n return this.rowRefs.currentMap[row].getCellEls()[col]; // TODO: not optimal\n }\n getCellRange(row, col) {\n let start = this.props.cells[row][col].date;\n let end = addDays(start, 1);\n return {\n start,\n end\n };\n }\n}\nfunction isSegAllDay(seg) {\n return seg.eventRange.def.allDay;\n}\nclass Table extends DateComponent {\n constructor() {\n super(...arguments);\n this.elRef = createRef();\n this.needsScrollReset = false;\n }\n render() {\n let props = this.props;\n let dayMaxEventRows = props.dayMaxEventRows,\n dayMaxEvents = props.dayMaxEvents,\n expandRows = props.expandRows;\n let limitViaBalanced = dayMaxEvents === true || dayMaxEventRows === true;\n // if rows can't expand to fill fixed height, can't do balanced-height event limit\n // TODO: best place to normalize these options?\n if (limitViaBalanced && !expandRows) {\n limitViaBalanced = false;\n dayMaxEventRows = null;\n dayMaxEvents = null;\n }\n let classNames = ['fc-daygrid-body', limitViaBalanced ? 'fc-daygrid-body-balanced' : 'fc-daygrid-body-unbalanced', expandRows ? '' : 'fc-daygrid-body-natural' // will height of one row depend on the others?\n ];\n return createElement(\"div\", {\n ref: this.elRef,\n className: classNames.join(' '),\n style: {\n // these props are important to give this wrapper correct dimensions for interactions\n // TODO: if we set it here, can we avoid giving to inner tables?\n width: props.clientWidth,\n minWidth: props.tableMinWidth\n }\n }, createElement(\"table\", {\n role: \"presentation\",\n className: \"fc-scrollgrid-sync-table\",\n style: {\n width: props.clientWidth,\n minWidth: props.tableMinWidth,\n height: expandRows ? props.clientHeight : ''\n }\n }, props.colGroupNode, createElement(\"tbody\", {\n role: \"presentation\"\n }, createElement(TableRows, {\n dateProfile: props.dateProfile,\n cells: props.cells,\n renderRowIntro: props.renderRowIntro,\n showWeekNumbers: props.showWeekNumbers,\n clientWidth: props.clientWidth,\n clientHeight: props.clientHeight,\n businessHourSegs: props.businessHourSegs,\n bgEventSegs: props.bgEventSegs,\n fgEventSegs: props.fgEventSegs,\n dateSelectionSegs: props.dateSelectionSegs,\n eventSelection: props.eventSelection,\n eventDrag: props.eventDrag,\n eventResize: props.eventResize,\n dayMaxEvents: dayMaxEvents,\n dayMaxEventRows: dayMaxEventRows,\n forPrint: props.forPrint,\n isHitComboAllowed: props.isHitComboAllowed\n }))));\n }\n componentDidMount() {\n this.requestScrollReset();\n }\n componentDidUpdate(prevProps) {\n if (prevProps.dateProfile !== this.props.dateProfile) {\n this.requestScrollReset();\n } else {\n this.flushScrollReset();\n }\n }\n requestScrollReset() {\n this.needsScrollReset = true;\n this.flushScrollReset();\n }\n flushScrollReset() {\n if (this.needsScrollReset && this.props.clientWidth // sizes computed?\n ) {\n const subjectEl = getScrollSubjectEl(this.elRef.current, this.props.dateProfile);\n if (subjectEl) {\n const originEl = subjectEl.closest('.fc-daygrid-body');\n const scrollEl = originEl.closest('.fc-scroller');\n const scrollTop = subjectEl.getBoundingClientRect().top - originEl.getBoundingClientRect().top;\n scrollEl.scrollTop = scrollTop ? scrollTop + 1 : 0; // overcome border\n }\n this.needsScrollReset = false;\n }\n }\n}\nfunction getScrollSubjectEl(containerEl, dateProfile) {\n let el;\n if (dateProfile.currentRangeUnit.match(/year|month/)) {\n el = containerEl.querySelector(`[data-date=\"${formatIsoMonthStr(dateProfile.currentDate)}-01\"]`);\n // even if view is month-based, first-of-month might be hidden...\n }\n if (!el) {\n el = containerEl.querySelector(`[data-date=\"${formatDayString(dateProfile.currentDate)}\"]`);\n // could still be hidden if an interior-view hidden day\n }\n return el;\n}\nclass DayTableSlicer extends Slicer {\n constructor() {\n super(...arguments);\n this.forceDayIfListItem = true;\n }\n sliceRange(dateRange, dayTableModel) {\n return dayTableModel.sliceRange(dateRange);\n }\n}\nclass DayTable extends DateComponent {\n constructor() {\n super(...arguments);\n this.slicer = new DayTableSlicer();\n this.tableRef = createRef();\n }\n render() {\n let props = this.props,\n context = this.context;\n return createElement(Table, Object.assign({\n ref: this.tableRef\n }, this.slicer.sliceProps(props, props.dateProfile, props.nextDayThreshold, context, props.dayTableModel), {\n dateProfile: props.dateProfile,\n cells: props.dayTableModel.cells,\n colGroupNode: props.colGroupNode,\n tableMinWidth: props.tableMinWidth,\n renderRowIntro: props.renderRowIntro,\n dayMaxEvents: props.dayMaxEvents,\n dayMaxEventRows: props.dayMaxEventRows,\n showWeekNumbers: props.showWeekNumbers,\n expandRows: props.expandRows,\n headerAlignElRef: props.headerAlignElRef,\n clientWidth: props.clientWidth,\n clientHeight: props.clientHeight,\n forPrint: props.forPrint\n }));\n }\n}\nclass DayTableView extends TableView {\n constructor() {\n super(...arguments);\n this.buildDayTableModel = memoize(buildDayTableModel);\n this.headerRef = createRef();\n this.tableRef = createRef();\n // can't override any lifecycle methods from parent\n }\n render() {\n let _this$context = this.context,\n options = _this$context.options,\n dateProfileGenerator = _this$context.dateProfileGenerator;\n let props = this.props;\n let dayTableModel = this.buildDayTableModel(props.dateProfile, dateProfileGenerator);\n let headerContent = options.dayHeaders && createElement(DayHeader, {\n ref: this.headerRef,\n dateProfile: props.dateProfile,\n dates: dayTableModel.headerDates,\n datesRepDistinctDays: dayTableModel.rowCnt === 1\n });\n let bodyContent = contentArg => createElement(DayTable, {\n ref: this.tableRef,\n dateProfile: props.dateProfile,\n dayTableModel: dayTableModel,\n businessHours: props.businessHours,\n dateSelection: props.dateSelection,\n eventStore: props.eventStore,\n eventUiBases: props.eventUiBases,\n eventSelection: props.eventSelection,\n eventDrag: props.eventDrag,\n eventResize: props.eventResize,\n nextDayThreshold: options.nextDayThreshold,\n colGroupNode: contentArg.tableColGroupNode,\n tableMinWidth: contentArg.tableMinWidth,\n dayMaxEvents: options.dayMaxEvents,\n dayMaxEventRows: options.dayMaxEventRows,\n showWeekNumbers: options.weekNumbers,\n expandRows: !props.isHeightAuto,\n headerAlignElRef: this.headerElRef,\n clientWidth: contentArg.clientWidth,\n clientHeight: contentArg.clientHeight,\n forPrint: props.forPrint\n });\n return options.dayMinWidth ? this.renderHScrollLayout(headerContent, bodyContent, dayTableModel.colCnt, options.dayMinWidth) : this.renderSimpleLayout(headerContent, bodyContent);\n }\n}\nfunction buildDayTableModel(dateProfile, dateProfileGenerator) {\n let daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator);\n return new DayTableModel(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit));\n}\nclass TableDateProfileGenerator extends DateProfileGenerator {\n // Computes the date range that will be rendered\n buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay) {\n let renderRange = super.buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay);\n let props = this.props;\n return buildDayTableRenderRange({\n currentRange: renderRange,\n snapToWeek: /^(year|month)$/.test(currentRangeUnit),\n fixedWeekCount: props.fixedWeekCount,\n dateEnv: props.dateEnv\n });\n }\n}\nfunction buildDayTableRenderRange(props) {\n let dateEnv = props.dateEnv,\n currentRange = props.currentRange;\n let start = currentRange.start,\n end = currentRange.end;\n let endOfWeek;\n // year and month views should be aligned with weeks. this is already done for week\n if (props.snapToWeek) {\n start = dateEnv.startOfWeek(start);\n // make end-of-week if not already\n endOfWeek = dateEnv.startOfWeek(end);\n if (endOfWeek.valueOf() !== end.valueOf()) {\n end = addWeeks(endOfWeek, 1);\n }\n }\n // ensure 6 weeks\n if (props.fixedWeekCount) {\n // TODO: instead of these date-math gymnastics (for multimonth view),\n // compute dateprofiles of all months, then use start of first and end of last.\n let lastMonthRenderStart = dateEnv.startOfWeek(dateEnv.startOfMonth(addDays(currentRange.end, -1)));\n let rowCnt = Math.ceil(\n // could be partial weeks due to hiddenDays\n diffWeeks(lastMonthRenderStart, end));\n end = addWeeks(end, 6 - rowCnt);\n }\n return {\n start,\n end\n };\n}\nvar css_248z = \":root{--fc-daygrid-event-dot-width:8px}.fc-daygrid-day-events:after,.fc-daygrid-day-events:before,.fc-daygrid-day-frame:after,.fc-daygrid-day-frame:before,.fc-daygrid-event-harness:after,.fc-daygrid-event-harness:before{clear:both;content:\\\"\\\";display:table}.fc .fc-daygrid-body{position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-daygrid-day-frame{min-height:100%;position:relative}.fc .fc-daygrid-day-top{display:flex;flex-direction:row-reverse}.fc .fc-day-other .fc-daygrid-day-top{opacity:.3}.fc .fc-daygrid-day-number{padding:4px;position:relative;z-index:4}.fc .fc-daygrid-month-start{font-size:1.1em;font-weight:700}.fc .fc-daygrid-day-events{margin-top:1px}.fc .fc-daygrid-body-balanced .fc-daygrid-day-events{left:0;position:absolute;right:0}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{min-height:2em;position:relative}.fc .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:1em}.fc .fc-daygrid-event-harness{position:relative}.fc .fc-daygrid-event-harness-abs{left:0;position:absolute;right:0;top:0}.fc .fc-daygrid-bg-harness{bottom:0;position:absolute;top:0}.fc .fc-daygrid-day-bg .fc-non-business{z-index:1}.fc .fc-daygrid-day-bg .fc-bg-event{z-index:2}.fc .fc-daygrid-day-bg .fc-highlight{z-index:3}.fc .fc-daygrid-event{margin-top:1px;z-index:6}.fc .fc-daygrid-event.fc-event-mirror{z-index:7}.fc .fc-daygrid-day-bottom{font-size:.85em;margin:0 2px}.fc .fc-daygrid-day-bottom:after,.fc .fc-daygrid-day-bottom:before{clear:both;content:\\\"\\\";display:table}.fc .fc-daygrid-more-link{border-radius:3px;cursor:pointer;line-height:1;margin-top:1px;max-width:100%;overflow:hidden;padding:2px;position:relative;white-space:nowrap;z-index:4}.fc .fc-daygrid-more-link:hover{background-color:rgba(0,0,0,.1)}.fc .fc-daygrid-week-number{background-color:var(--fc-neutral-bg-color);color:var(--fc-neutral-text-color);min-width:1.5em;padding:2px;position:absolute;text-align:center;top:0;z-index:5}.fc .fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-more-link{float:left}.fc-direction-ltr .fc-daygrid-week-number{border-radius:0 0 3px 0;left:0}.fc-direction-rtl .fc-daygrid-more-link{float:right}.fc-direction-rtl .fc-daygrid-week-number{border-radius:0 0 0 3px;right:0}.fc-liquid-hack .fc-daygrid-day-frame{position:static}.fc-daygrid-event{border-radius:3px;font-size:var(--fc-small-font-size);position:relative;white-space:nowrap}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{align-items:center;display:flex;padding:2px 0}.fc-daygrid-dot-event .fc-event-title{flex-grow:1;flex-shrink:1;font-weight:700;min-width:0;overflow:hidden}.fc-daygrid-dot-event.fc-event-mirror,.fc-daygrid-dot-event:hover{background:rgba(0,0,0,.1)}.fc-daygrid-dot-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-daygrid-event-dot{border:calc(var(--fc-daygrid-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-daygrid-event-dot-width)/2);box-sizing:content-box;height:0;margin:0 4px;width:0}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}\";\ninjectStyles(css_248z);\nexport { DayTableView as DayGridView, DayTable, DayTableSlicer, Table, TableDateProfileGenerator, TableRows, TableView, buildDayTableModel, buildDayTableRenderRange };","import { createPlugin } from '@fullcalendar/core/index.js';\nimport { DayGridView as DayTableView, TableDateProfileGenerator } from './internal.js';\nimport '@fullcalendar/core/internal.js';\nimport '@fullcalendar/core/preact.js';\nvar index = createPlugin({\n name: '@fullcalendar/daygrid',\n initialView: 'dayGridMonth',\n views: {\n dayGrid: {\n component: DayTableView,\n dateProfileGeneratorClass: TableDateProfileGenerator\n },\n dayGridDay: {\n type: 'dayGrid',\n duration: {\n days: 1\n }\n },\n dayGridWeek: {\n type: 'dayGrid',\n duration: {\n weeks: 1\n }\n },\n dayGridMonth: {\n type: 'dayGrid',\n duration: {\n months: 1\n },\n fixedWeekCount: true\n },\n dayGridYear: {\n type: 'dayGrid',\n duration: {\n years: 1\n }\n }\n }\n});\nexport { index as default };","import { Splitter, hasBgRendering, createFormatter, ViewContextType, ContentContainer, BaseComponent, DateComponent, diffDays, buildNavLinkAttrs, WeekNumberContainer, getStickyHeaderDates, ViewContainer, SimpleScrollGrid, getStickyFooterScrollbar, NowTimer, NowIndicatorContainer, renderScrollShim, rangeContainsMarker, startOfDay, asRoughMs, createDuration, RefMap, PositionCache, MoreLinkContainer, SegHierarchy, groupIntersectingEntries, binarySearch, getEntrySpanEnd, buildEntryKey, StandardEvent, memoize, sortEventSegs, DayCellContainer, hasCustomDayCellContent, getSegMeta, buildIsoString, computeEarliestSegStart, buildEventRangeKey, BgEvent, renderFill, addDurations, multiplyDuration, wholeDivideDurations, Slicer, intersectRanges, formatIsoTimeString, DayHeader, DaySeriesModel, DayTableModel, injectStyles } from '@fullcalendar/core/internal.js';\nimport { createElement, createRef, Fragment } from '@fullcalendar/core/preact.js';\nimport { DayTable } from '@fullcalendar/daygrid/internal.js';\nclass AllDaySplitter extends Splitter {\n getKeyInfo() {\n return {\n allDay: {},\n timed: {}\n };\n }\n getKeysForDateSpan(dateSpan) {\n if (dateSpan.allDay) {\n return ['allDay'];\n }\n return ['timed'];\n }\n getKeysForEventDef(eventDef) {\n if (!eventDef.allDay) {\n return ['timed'];\n }\n if (hasBgRendering(eventDef)) {\n return ['timed', 'allDay'];\n }\n return ['allDay'];\n }\n}\nconst DEFAULT_SLAT_LABEL_FORMAT = createFormatter({\n hour: 'numeric',\n minute: '2-digit',\n omitZeroMinute: true,\n meridiem: 'short'\n});\nfunction TimeColsAxisCell(props) {\n let classNames = ['fc-timegrid-slot', 'fc-timegrid-slot-label', props.isLabeled ? 'fc-scrollgrid-shrink' : 'fc-timegrid-slot-minor'];\n return createElement(ViewContextType.Consumer, null, context => {\n if (!props.isLabeled) {\n return createElement(\"td\", {\n className: classNames.join(' '),\n \"data-time\": props.isoTimeStr\n });\n }\n let dateEnv = context.dateEnv,\n options = context.options,\n viewApi = context.viewApi;\n let labelFormat =\n // TODO: fully pre-parse\n options.slotLabelFormat == null ? DEFAULT_SLAT_LABEL_FORMAT : Array.isArray(options.slotLabelFormat) ? createFormatter(options.slotLabelFormat[0]) : createFormatter(options.slotLabelFormat);\n let renderProps = {\n level: 0,\n time: props.time,\n date: dateEnv.toDate(props.date),\n view: viewApi,\n text: dateEnv.format(props.date, labelFormat)\n };\n return createElement(ContentContainer, {\n elTag: \"td\",\n elClasses: classNames,\n elAttrs: {\n 'data-time': props.isoTimeStr\n },\n renderProps: renderProps,\n generatorName: \"slotLabelContent\",\n customGenerator: options.slotLabelContent,\n defaultGenerator: renderInnerContent,\n classNameGenerator: options.slotLabelClassNames,\n didMount: options.slotLabelDidMount,\n willUnmount: options.slotLabelWillUnmount\n }, InnerContent => createElement(\"div\", {\n className: \"fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame\"\n }, createElement(InnerContent, {\n elTag: \"div\",\n elClasses: ['fc-timegrid-slot-label-cushion', 'fc-scrollgrid-shrink-cushion']\n })));\n });\n}\nfunction renderInnerContent(props) {\n return props.text;\n}\nclass TimeBodyAxis extends BaseComponent {\n render() {\n return this.props.slatMetas.map(slatMeta => createElement(\"tr\", {\n key: slatMeta.key\n }, createElement(TimeColsAxisCell, Object.assign({}, slatMeta))));\n }\n}\nconst DEFAULT_WEEK_NUM_FORMAT = createFormatter({\n week: 'short'\n});\nconst AUTO_ALL_DAY_MAX_EVENT_ROWS = 5;\nclass TimeColsView extends DateComponent {\n constructor() {\n var _this;\n super(...arguments);\n _this = this;\n this.allDaySplitter = new AllDaySplitter(); // for use by subclasses\n this.headerElRef = createRef();\n this.rootElRef = createRef();\n this.scrollerElRef = createRef();\n this.state = {\n slatCoords: null\n };\n this.handleScrollTopRequest = scrollTop => {\n let scrollerEl = this.scrollerElRef.current;\n if (scrollerEl) {\n // TODO: not sure how this could ever be null. weirdness with the reducer\n scrollerEl.scrollTop = scrollTop;\n }\n };\n /* Header Render Methods\n ------------------------------------------------------------------------------------------------------------------*/\n this.renderHeadAxis = function (rowKey) {\n let frameHeight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n let options = _this.context.options;\n let dateProfile = _this.props.dateProfile;\n let range = dateProfile.renderRange;\n let dayCnt = diffDays(range.start, range.end);\n // only do in day views (to avoid doing in week views that dont need it)\n let navLinkAttrs = dayCnt === 1 ? buildNavLinkAttrs(_this.context, range.start, 'week') : {};\n if (options.weekNumbers && rowKey === 'day') {\n return createElement(WeekNumberContainer, {\n elTag: \"th\",\n elClasses: ['fc-timegrid-axis', 'fc-scrollgrid-shrink'],\n elAttrs: {\n 'aria-hidden': true\n },\n date: range.start,\n defaultFormat: DEFAULT_WEEK_NUM_FORMAT\n }, InnerContent => createElement(\"div\", {\n className: ['fc-timegrid-axis-frame', 'fc-scrollgrid-shrink-frame', 'fc-timegrid-axis-frame-liquid'].join(' '),\n style: {\n height: frameHeight\n }\n }, createElement(InnerContent, {\n elTag: \"a\",\n elClasses: ['fc-timegrid-axis-cushion', 'fc-scrollgrid-shrink-cushion', 'fc-scrollgrid-sync-inner'],\n elAttrs: navLinkAttrs\n })));\n }\n return createElement(\"th\", {\n \"aria-hidden\": true,\n className: \"fc-timegrid-axis\"\n }, createElement(\"div\", {\n className: \"fc-timegrid-axis-frame\",\n style: {\n height: frameHeight\n }\n }));\n };\n /* Table Component Render Methods\n ------------------------------------------------------------------------------------------------------------------*/\n // only a one-way height sync. we don't send the axis inner-content height to the DayGrid,\n // but DayGrid still needs to have classNames on inner elements in order to measure.\n this.renderTableRowAxis = rowHeight => {\n let _this$context = this.context,\n options = _this$context.options,\n viewApi = _this$context.viewApi;\n let renderProps = {\n text: options.allDayText,\n view: viewApi\n };\n return (\n // TODO: make reusable hook. used in list view too\n createElement(ContentContainer, {\n elTag: \"td\",\n elClasses: ['fc-timegrid-axis', 'fc-scrollgrid-shrink'],\n elAttrs: {\n 'aria-hidden': true\n },\n renderProps: renderProps,\n generatorName: \"allDayContent\",\n customGenerator: options.allDayContent,\n defaultGenerator: renderAllDayInner,\n classNameGenerator: options.allDayClassNames,\n didMount: options.allDayDidMount,\n willUnmount: options.allDayWillUnmount\n }, InnerContent => createElement(\"div\", {\n className: ['fc-timegrid-axis-frame', 'fc-scrollgrid-shrink-frame', rowHeight == null ? ' fc-timegrid-axis-frame-liquid' : ''].join(' '),\n style: {\n height: rowHeight\n }\n }, createElement(InnerContent, {\n elTag: \"span\",\n elClasses: ['fc-timegrid-axis-cushion', 'fc-scrollgrid-shrink-cushion', 'fc-scrollgrid-sync-inner']\n })))\n );\n };\n this.handleSlatCoords = slatCoords => {\n this.setState({\n slatCoords\n });\n };\n }\n // rendering\n // ----------------------------------------------------------------------------------------------------\n renderSimpleLayout(headerRowContent, allDayContent, timeContent) {\n let context = this.context,\n props = this.props;\n let sections = [];\n let stickyHeaderDates = getStickyHeaderDates(context.options);\n if (headerRowContent) {\n sections.push({\n type: 'header',\n key: 'header',\n isSticky: stickyHeaderDates,\n chunk: {\n elRef: this.headerElRef,\n tableClassName: 'fc-col-header',\n rowContent: headerRowContent\n }\n });\n }\n if (allDayContent) {\n sections.push({\n type: 'body',\n key: 'all-day',\n chunk: {\n content: allDayContent\n }\n });\n sections.push({\n type: 'body',\n key: 'all-day-divider',\n outerContent:\n // TODO: rename to cellContent so don't need to define <tr>?\n createElement(\"tr\", {\n role: \"presentation\",\n className: \"fc-scrollgrid-section\"\n }, createElement(\"td\", {\n className: 'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded')\n }))\n });\n }\n sections.push({\n type: 'body',\n key: 'body',\n liquid: true,\n expandRows: Boolean(context.options.expandRows),\n chunk: {\n scrollerElRef: this.scrollerElRef,\n content: timeContent\n }\n });\n return createElement(ViewContainer, {\n elRef: this.rootElRef,\n elClasses: ['fc-timegrid'],\n viewSpec: context.viewSpec\n }, createElement(SimpleScrollGrid, {\n liquid: !props.isHeightAuto && !props.forPrint,\n collapsibleWidth: props.forPrint,\n cols: [{\n width: 'shrink'\n }],\n sections: sections\n }));\n }\n renderHScrollLayout(headerRowContent, allDayContent, timeContent, colCnt, dayMinWidth, slatMetas, slatCoords) {\n let ScrollGrid = this.context.pluginHooks.scrollGridImpl;\n if (!ScrollGrid) {\n throw new Error('No ScrollGrid implementation');\n }\n let context = this.context,\n props = this.props;\n let stickyHeaderDates = !props.forPrint && getStickyHeaderDates(context.options);\n let stickyFooterScrollbar = !props.forPrint && getStickyFooterScrollbar(context.options);\n let sections = [];\n if (headerRowContent) {\n sections.push({\n type: 'header',\n key: 'header',\n isSticky: stickyHeaderDates,\n syncRowHeights: true,\n chunks: [{\n key: 'axis',\n rowContent: arg => createElement(\"tr\", {\n role: \"presentation\"\n }, this.renderHeadAxis('day', arg.rowSyncHeights[0]))\n }, {\n key: 'cols',\n elRef: this.headerElRef,\n tableClassName: 'fc-col-header',\n rowContent: headerRowContent\n }]\n });\n }\n if (allDayContent) {\n sections.push({\n type: 'body',\n key: 'all-day',\n syncRowHeights: true,\n chunks: [{\n key: 'axis',\n rowContent: contentArg => createElement(\"tr\", {\n role: \"presentation\"\n }, this.renderTableRowAxis(contentArg.rowSyncHeights[0]))\n }, {\n key: 'cols',\n content: allDayContent\n }]\n });\n sections.push({\n key: 'all-day-divider',\n type: 'body',\n outerContent:\n // TODO: rename to cellContent so don't need to define <tr>?\n createElement(\"tr\", {\n role: \"presentation\",\n className: \"fc-scrollgrid-section\"\n }, createElement(\"td\", {\n colSpan: 2,\n className: 'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded')\n }))\n });\n }\n let isNowIndicator = context.options.nowIndicator;\n sections.push({\n type: 'body',\n key: 'body',\n liquid: true,\n expandRows: Boolean(context.options.expandRows),\n chunks: [{\n key: 'axis',\n content: arg =>\n // TODO: make this now-indicator arrow more DRY with TimeColsContent\n createElement(\"div\", {\n className: \"fc-timegrid-axis-chunk\"\n }, createElement(\"table\", {\n \"aria-hidden\": true,\n style: {\n height: arg.expandRows ? arg.clientHeight : ''\n }\n }, arg.tableColGroupNode, createElement(\"tbody\", null, createElement(TimeBodyAxis, {\n slatMetas: slatMetas\n }))), createElement(\"div\", {\n className: \"fc-timegrid-now-indicator-container\"\n }, createElement(NowTimer, {\n unit: isNowIndicator ? 'minute' : 'day' /* hacky */\n }, nowDate => {\n let nowIndicatorTop = isNowIndicator && slatCoords && slatCoords.safeComputeTop(nowDate); // might return void\n if (typeof nowIndicatorTop === 'number') {\n return createElement(NowIndicatorContainer, {\n elClasses: ['fc-timegrid-now-indicator-arrow'],\n elStyle: {\n top: nowIndicatorTop\n },\n isAxis: true,\n date: nowDate\n });\n }\n return null;\n })))\n }, {\n key: 'cols',\n scrollerElRef: this.scrollerElRef,\n content: timeContent\n }]\n });\n if (stickyFooterScrollbar) {\n sections.push({\n key: 'footer',\n type: 'footer',\n isSticky: true,\n chunks: [{\n key: 'axis',\n content: renderScrollShim\n }, {\n key: 'cols',\n content: renderScrollShim\n }]\n });\n }\n return createElement(ViewContainer, {\n elRef: this.rootElRef,\n elClasses: ['fc-timegrid'],\n viewSpec: context.viewSpec\n }, createElement(ScrollGrid, {\n liquid: !props.isHeightAuto && !props.forPrint,\n forPrint: props.forPrint,\n collapsibleWidth: false,\n colGroups: [{\n width: 'shrink',\n cols: [{\n width: 'shrink'\n }]\n }, {\n cols: [{\n span: colCnt,\n minWidth: dayMinWidth\n }]\n }],\n sections: sections\n }));\n }\n /* Dimensions\n ------------------------------------------------------------------------------------------------------------------*/\n getAllDayMaxEventProps() {\n let _this$context$options = this.context.options,\n dayMaxEvents = _this$context$options.dayMaxEvents,\n dayMaxEventRows = _this$context$options.dayMaxEventRows;\n if (dayMaxEvents === true || dayMaxEventRows === true) {\n // is auto?\n dayMaxEvents = undefined;\n dayMaxEventRows = AUTO_ALL_DAY_MAX_EVENT_ROWS; // make sure \"auto\" goes to a real number\n }\n return {\n dayMaxEvents,\n dayMaxEventRows\n };\n }\n}\nfunction renderAllDayInner(renderProps) {\n return renderProps.text;\n}\nclass TimeColsSlatsCoords {\n constructor(positions, dateProfile, slotDuration) {\n this.positions = positions;\n this.dateProfile = dateProfile;\n this.slotDuration = slotDuration;\n }\n safeComputeTop(date) {\n let dateProfile = this.dateProfile;\n if (rangeContainsMarker(dateProfile.currentRange, date)) {\n let startOfDayDate = startOfDay(date);\n let timeMs = date.valueOf() - startOfDayDate.valueOf();\n if (timeMs >= asRoughMs(dateProfile.slotMinTime) && timeMs < asRoughMs(dateProfile.slotMaxTime)) {\n return this.computeTimeTop(createDuration(timeMs));\n }\n }\n return null;\n }\n // Computes the top coordinate, relative to the bounds of the grid, of the given date.\n // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight.\n computeDateTop(when, startOfDayDate) {\n if (!startOfDayDate) {\n startOfDayDate = startOfDay(when);\n }\n return this.computeTimeTop(createDuration(when.valueOf() - startOfDayDate.valueOf()));\n }\n // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration).\n // This is a makeshify way to compute the time-top. Assumes all slatMetas dates are uniform.\n // Eventually allow computation with arbirary slat dates.\n computeTimeTop(duration) {\n let positions = this.positions,\n dateProfile = this.dateProfile;\n let len = positions.els.length;\n // floating-point value of # of slots covered\n let slatCoverage = (duration.milliseconds - asRoughMs(dateProfile.slotMinTime)) / asRoughMs(this.slotDuration);\n let slatIndex;\n let slatRemainder;\n // compute a floating-point number for how many slats should be progressed through.\n // from 0 to number of slats (inclusive)\n // constrained because slotMinTime/slotMaxTime might be customized.\n slatCoverage = Math.max(0, slatCoverage);\n slatCoverage = Math.min(len, slatCoverage);\n // an integer index of the furthest whole slat\n // from 0 to number slats (*exclusive*, so len-1)\n slatIndex = Math.floor(slatCoverage);\n slatIndex = Math.min(slatIndex, len - 1);\n // how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition.\n // could be 1.0 if slatCoverage is covering *all* the slots\n slatRemainder = slatCoverage - slatIndex;\n return positions.tops[slatIndex] + positions.getHeight(slatIndex) * slatRemainder;\n }\n}\nclass TimeColsSlatsBody extends BaseComponent {\n render() {\n let props = this.props,\n context = this.context;\n let options = context.options;\n let slatElRefs = props.slatElRefs;\n return createElement(\"tbody\", null, props.slatMetas.map((slatMeta, i) => {\n let renderProps = {\n time: slatMeta.time,\n date: context.dateEnv.toDate(slatMeta.date),\n view: context.viewApi\n };\n return createElement(\"tr\", {\n key: slatMeta.key,\n ref: slatElRefs.createRef(slatMeta.key)\n }, props.axis && createElement(TimeColsAxisCell, Object.assign({}, slatMeta)), createElement(ContentContainer, {\n elTag: \"td\",\n elClasses: ['fc-timegrid-slot', 'fc-timegrid-slot-lane', !slatMeta.isLabeled && 'fc-timegrid-slot-minor'],\n elAttrs: {\n 'data-time': slatMeta.isoTimeStr\n },\n renderProps: renderProps,\n generatorName: \"slotLaneContent\",\n customGenerator: options.slotLaneContent,\n classNameGenerator: options.slotLaneClassNames,\n didMount: options.slotLaneDidMount,\n willUnmount: options.slotLaneWillUnmount\n }));\n }));\n }\n}\n\n/*\nfor the horizontal \"slats\" that run width-wise. Has a time axis on a side. Depends on RTL.\n*/\nclass TimeColsSlats extends BaseComponent {\n constructor() {\n super(...arguments);\n this.rootElRef = createRef();\n this.slatElRefs = new RefMap();\n }\n render() {\n let props = this.props,\n context = this.context;\n return createElement(\"div\", {\n ref: this.rootElRef,\n className: \"fc-timegrid-slots\"\n }, createElement(\"table\", {\n \"aria-hidden\": true,\n className: context.theme.getClass('table'),\n style: {\n minWidth: props.tableMinWidth,\n width: props.clientWidth,\n height: props.minHeight\n }\n }, props.tableColGroupNode /* relies on there only being a single <col> for the axis */, createElement(TimeColsSlatsBody, {\n slatElRefs: this.slatElRefs,\n axis: props.axis,\n slatMetas: props.slatMetas\n })));\n }\n componentDidMount() {\n this.updateSizing();\n }\n componentDidUpdate() {\n this.updateSizing();\n }\n componentWillUnmount() {\n if (this.props.onCoords) {\n this.props.onCoords(null);\n }\n }\n updateSizing() {\n let context = this.context,\n props = this.props;\n if (props.onCoords && props.clientWidth !== null // means sizing has stabilized\n ) {\n let rootEl = this.rootElRef.current;\n if (rootEl.offsetHeight) {\n // not hidden by css\n props.onCoords(new TimeColsSlatsCoords(new PositionCache(this.rootElRef.current, collectSlatEls(this.slatElRefs.currentMap, props.slatMetas), false, true), this.props.dateProfile, context.options.slotDuration));\n }\n }\n }\n}\nfunction collectSlatEls(elMap, slatMetas) {\n return slatMetas.map(slatMeta => elMap[slatMeta.key]);\n}\nfunction splitSegsByCol(segs, colCnt) {\n let segsByCol = [];\n let i;\n for (i = 0; i < colCnt; i += 1) {\n segsByCol.push([]);\n }\n if (segs) {\n for (i = 0; i < segs.length; i += 1) {\n segsByCol[segs[i].col].push(segs[i]);\n }\n }\n return segsByCol;\n}\nfunction splitInteractionByCol(ui, colCnt) {\n let byRow = [];\n if (!ui) {\n for (let i = 0; i < colCnt; i += 1) {\n byRow[i] = null;\n }\n } else {\n for (let i = 0; i < colCnt; i += 1) {\n byRow[i] = {\n affectedInstances: ui.affectedInstances,\n isEvent: ui.isEvent,\n segs: []\n };\n }\n for (let seg of ui.segs) {\n byRow[seg.col].segs.push(seg);\n }\n }\n return byRow;\n}\nclass TimeColMoreLink extends BaseComponent {\n render() {\n let props = this.props;\n return createElement(MoreLinkContainer, {\n elClasses: ['fc-timegrid-more-link'],\n elStyle: {\n top: props.top,\n bottom: props.bottom\n },\n allDayDate: null,\n moreCnt: props.hiddenSegs.length,\n allSegs: props.hiddenSegs,\n hiddenSegs: props.hiddenSegs,\n extraDateSpan: props.extraDateSpan,\n dateProfile: props.dateProfile,\n todayRange: props.todayRange,\n popoverContent: () => renderPlainFgSegs(props.hiddenSegs, props),\n defaultGenerator: renderMoreLinkInner,\n forceTimed: true\n }, InnerContent => createElement(InnerContent, {\n elTag: \"div\",\n elClasses: ['fc-timegrid-more-link-inner', 'fc-sticky']\n }));\n }\n}\nfunction renderMoreLinkInner(props) {\n return props.shortText;\n}\n\n// segInputs assumed sorted\nfunction buildPositioning(segInputs, strictOrder, maxStackCnt) {\n let hierarchy = new SegHierarchy();\n if (strictOrder != null) {\n hierarchy.strictOrder = strictOrder;\n }\n if (maxStackCnt != null) {\n hierarchy.maxStackCnt = maxStackCnt;\n }\n let hiddenEntries = hierarchy.addSegs(segInputs);\n let hiddenGroups = groupIntersectingEntries(hiddenEntries);\n let web = buildWeb(hierarchy);\n web = stretchWeb(web, 1); // all levelCoords/thickness will have 0.0-1.0\n let segRects = webToRects(web);\n return {\n segRects,\n hiddenGroups\n };\n}\nfunction buildWeb(hierarchy) {\n const entriesByLevel = hierarchy.entriesByLevel;\n const buildNode = cacheable((level, lateral) => level + ':' + lateral, (level, lateral) => {\n let siblingRange = findNextLevelSegs(hierarchy, level, lateral);\n let nextLevelRes = buildNodes(siblingRange, buildNode);\n let entry = entriesByLevel[level][lateral];\n return [Object.assign(Object.assign({}, entry), {\n nextLevelNodes: nextLevelRes[0]\n }), entry.thickness + nextLevelRes[1] // the pressure builds\n ];\n });\n return buildNodes(entriesByLevel.length ? {\n level: 0,\n lateralStart: 0,\n lateralEnd: entriesByLevel[0].length\n } : null, buildNode)[0];\n}\nfunction buildNodes(siblingRange, buildNode) {\n if (!siblingRange) {\n return [[], 0];\n }\n let level = siblingRange.level,\n lateralStart = siblingRange.lateralStart,\n lateralEnd = siblingRange.lateralEnd;\n let lateral = lateralStart;\n let pairs = [];\n while (lateral < lateralEnd) {\n pairs.push(buildNode(level, lateral));\n lateral += 1;\n }\n pairs.sort(cmpDescPressures);\n return [pairs.map(extractNode), pairs[0][1] // first item's pressure\n ];\n}\nfunction cmpDescPressures(a, b) {\n return b[1] - a[1];\n}\nfunction extractNode(a) {\n return a[0];\n}\nfunction findNextLevelSegs(hierarchy, subjectLevel, subjectLateral) {\n let levelCoords = hierarchy.levelCoords,\n entriesByLevel = hierarchy.entriesByLevel;\n let subjectEntry = entriesByLevel[subjectLevel][subjectLateral];\n let afterSubject = levelCoords[subjectLevel] + subjectEntry.thickness;\n let levelCnt = levelCoords.length;\n let level = subjectLevel;\n // skip past levels that are too high up\n for (; level < levelCnt && levelCoords[level] < afterSubject; level += 1); // do nothing\n for (; level < levelCnt; level += 1) {\n let entries = entriesByLevel[level];\n let entry;\n let searchIndex = binarySearch(entries, subjectEntry.span.start, getEntrySpanEnd);\n let lateralStart = searchIndex[0] + searchIndex[1]; // if exact match (which doesn't collide), go to next one\n let lateralEnd = lateralStart;\n while (\n // loop through entries that horizontally intersect\n (entry = entries[lateralEnd]) &&\n // but not past the whole seg list\n entry.span.start < subjectEntry.span.end) {\n lateralEnd += 1;\n }\n if (lateralStart < lateralEnd) {\n return {\n level,\n lateralStart,\n lateralEnd\n };\n }\n }\n return null;\n}\nfunction stretchWeb(topLevelNodes, totalThickness) {\n const stretchNode = cacheable((node, startCoord, prevThickness) => buildEntryKey(node), (node, startCoord, prevThickness) => {\n let nextLevelNodes = node.nextLevelNodes,\n thickness = node.thickness;\n let allThickness = thickness + prevThickness;\n let thicknessFraction = thickness / allThickness;\n let endCoord;\n let newChildren = [];\n if (!nextLevelNodes.length) {\n endCoord = totalThickness;\n } else {\n for (let childNode of nextLevelNodes) {\n if (endCoord === undefined) {\n let res = stretchNode(childNode, startCoord, allThickness);\n endCoord = res[0];\n newChildren.push(res[1]);\n } else {\n let res = stretchNode(childNode, endCoord, 0);\n newChildren.push(res[1]);\n }\n }\n }\n let newThickness = (endCoord - startCoord) * thicknessFraction;\n return [endCoord - newThickness, Object.assign(Object.assign({}, node), {\n thickness: newThickness,\n nextLevelNodes: newChildren\n })];\n });\n return topLevelNodes.map(node => stretchNode(node, 0, 0)[1]);\n}\n// not sorted in any particular order\nfunction webToRects(topLevelNodes) {\n let rects = [];\n const processNode = cacheable((node, levelCoord, stackDepth) => buildEntryKey(node), (node, levelCoord, stackDepth) => {\n let rect = Object.assign(Object.assign({}, node), {\n levelCoord,\n stackDepth,\n stackForward: 0\n });\n rects.push(rect);\n return rect.stackForward = processNodes(node.nextLevelNodes, levelCoord + node.thickness, stackDepth + 1) + 1;\n });\n function processNodes(nodes, levelCoord, stackDepth) {\n let stackForward = 0;\n for (let node of nodes) {\n stackForward = Math.max(processNode(node, levelCoord, stackDepth), stackForward);\n }\n return stackForward;\n }\n processNodes(topLevelNodes, 0, 0);\n return rects; // TODO: sort rects by levelCoord to be consistent with toRects?\n}\n// TODO: move to general util\nfunction cacheable(keyFunc, workFunc) {\n const cache = {};\n return function () {\n let key = keyFunc(...arguments);\n return key in cache ? cache[key] : cache[key] = workFunc(...arguments);\n };\n}\nfunction computeSegVCoords(segs, colDate) {\n let slatCoords = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n let eventMinHeight = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n let vcoords = [];\n if (slatCoords) {\n for (let i = 0; i < segs.length; i += 1) {\n let seg = segs[i];\n let spanStart = slatCoords.computeDateTop(seg.start, colDate);\n let spanEnd = Math.max(spanStart + (eventMinHeight || 0),\n // :(\n slatCoords.computeDateTop(seg.end, colDate));\n vcoords.push({\n start: Math.round(spanStart),\n end: Math.round(spanEnd) //\n });\n }\n }\n return vcoords;\n}\nfunction computeFgSegPlacements(segs, segVCoords,\n// might not have for every seg\neventOrderStrict, eventMaxStack) {\n let segInputs = [];\n let dumbSegs = []; // segs without coords\n for (let i = 0; i < segs.length; i += 1) {\n let vcoords = segVCoords[i];\n if (vcoords) {\n segInputs.push({\n index: i,\n thickness: 1,\n span: vcoords\n });\n } else {\n dumbSegs.push(segs[i]);\n }\n }\n let _buildPositioning = buildPositioning(segInputs, eventOrderStrict, eventMaxStack),\n segRects = _buildPositioning.segRects,\n hiddenGroups = _buildPositioning.hiddenGroups;\n let segPlacements = [];\n for (let segRect of segRects) {\n segPlacements.push({\n seg: segs[segRect.index],\n rect: segRect\n });\n }\n for (let dumbSeg of dumbSegs) {\n segPlacements.push({\n seg: dumbSeg,\n rect: null\n });\n }\n return {\n segPlacements,\n hiddenGroups\n };\n}\nconst DEFAULT_TIME_FORMAT = createFormatter({\n hour: 'numeric',\n minute: '2-digit',\n meridiem: false\n});\nclass TimeColEvent extends BaseComponent {\n render() {\n return createElement(StandardEvent, Object.assign({}, this.props, {\n elClasses: ['fc-timegrid-event', 'fc-v-event', this.props.isShort && 'fc-timegrid-event-short'],\n defaultTimeFormat: DEFAULT_TIME_FORMAT\n }));\n }\n}\nclass TimeCol extends BaseComponent {\n constructor() {\n super(...arguments);\n this.sortEventSegs = memoize(sortEventSegs);\n }\n // TODO: memoize event-placement?\n render() {\n let props = this.props,\n context = this.context;\n let options = context.options;\n let isSelectMirror = options.selectMirror;\n let mirrorSegs =\n // yuck\n props.eventDrag && props.eventDrag.segs || props.eventResize && props.eventResize.segs || isSelectMirror && props.dateSelectionSegs || [];\n let interactionAffectedInstances =\n // TODO: messy way to compute this\n props.eventDrag && props.eventDrag.affectedInstances || props.eventResize && props.eventResize.affectedInstances || {};\n let sortedFgSegs = this.sortEventSegs(props.fgEventSegs, options.eventOrder);\n return createElement(DayCellContainer, {\n elTag: \"td\",\n elRef: props.elRef,\n elClasses: ['fc-timegrid-col', ...(props.extraClassNames || [])],\n elAttrs: Object.assign({\n role: 'gridcell'\n }, props.extraDataAttrs),\n date: props.date,\n dateProfile: props.dateProfile,\n todayRange: props.todayRange,\n extraRenderProps: props.extraRenderProps\n }, InnerContent => createElement(\"div\", {\n className: \"fc-timegrid-col-frame\"\n }, createElement(\"div\", {\n className: \"fc-timegrid-col-bg\"\n }, this.renderFillSegs(props.businessHourSegs, 'non-business'), this.renderFillSegs(props.bgEventSegs, 'bg-event'), this.renderFillSegs(props.dateSelectionSegs, 'highlight')), createElement(\"div\", {\n className: \"fc-timegrid-col-events\"\n }, this.renderFgSegs(sortedFgSegs, interactionAffectedInstances, false, false, false)), createElement(\"div\", {\n className: \"fc-timegrid-col-events\"\n }, this.renderFgSegs(mirrorSegs, {}, Boolean(props.eventDrag), Boolean(props.eventResize), Boolean(isSelectMirror), 'mirror')), createElement(\"div\", {\n className: \"fc-timegrid-now-indicator-container\"\n }, this.renderNowIndicator(props.nowIndicatorSegs)), hasCustomDayCellContent(options) && createElement(InnerContent, {\n elTag: \"div\",\n elClasses: ['fc-timegrid-col-misc']\n })));\n }\n renderFgSegs(sortedFgSegs, segIsInvisible, isDragging, isResizing, isDateSelecting, forcedKey) {\n let props = this.props;\n if (props.forPrint) {\n return renderPlainFgSegs(sortedFgSegs, props);\n }\n return this.renderPositionedFgSegs(sortedFgSegs, segIsInvisible, isDragging, isResizing, isDateSelecting, forcedKey);\n }\n renderPositionedFgSegs(segs,\n // if not mirror, needs to be sorted\n segIsInvisible, isDragging, isResizing, isDateSelecting, forcedKey) {\n let _this$context$options2 = this.context.options,\n eventMaxStack = _this$context$options2.eventMaxStack,\n eventShortHeight = _this$context$options2.eventShortHeight,\n eventOrderStrict = _this$context$options2.eventOrderStrict,\n eventMinHeight = _this$context$options2.eventMinHeight;\n let _this$props = this.props,\n date = _this$props.date,\n slatCoords = _this$props.slatCoords,\n eventSelection = _this$props.eventSelection,\n todayRange = _this$props.todayRange,\n nowDate = _this$props.nowDate;\n let isMirror = isDragging || isResizing || isDateSelecting;\n let segVCoords = computeSegVCoords(segs, date, slatCoords, eventMinHeight);\n let _computeFgSegPlacemen = computeFgSegPlacements(segs, segVCoords, eventOrderStrict, eventMaxStack),\n segPlacements = _computeFgSegPlacemen.segPlacements,\n hiddenGroups = _computeFgSegPlacemen.hiddenGroups;\n return createElement(Fragment, null, this.renderHiddenGroups(hiddenGroups, segs), segPlacements.map(segPlacement => {\n let seg = segPlacement.seg,\n rect = segPlacement.rect;\n let instanceId = seg.eventRange.instance.instanceId;\n let isVisible = isMirror || Boolean(!segIsInvisible[instanceId] && rect);\n let vStyle = computeSegVStyle(rect && rect.span);\n let hStyle = !isMirror && rect ? this.computeSegHStyle(rect) : {\n left: 0,\n right: 0\n };\n let isInset = Boolean(rect) && rect.stackForward > 0;\n let isShort = Boolean(rect) && rect.span.end - rect.span.start < eventShortHeight; // look at other places for this problem\n return createElement(\"div\", {\n className: 'fc-timegrid-event-harness' + (isInset ? ' fc-timegrid-event-harness-inset' : ''),\n key: forcedKey || instanceId,\n style: Object.assign(Object.assign({\n visibility: isVisible ? '' : 'hidden'\n }, vStyle), hStyle)\n }, createElement(TimeColEvent, Object.assign({\n seg: seg,\n isDragging: isDragging,\n isResizing: isResizing,\n isDateSelecting: isDateSelecting,\n isSelected: instanceId === eventSelection,\n isShort: isShort\n }, getSegMeta(seg, todayRange, nowDate))));\n }));\n }\n // will already have eventMinHeight applied because segInputs already had it\n renderHiddenGroups(hiddenGroups, segs) {\n let _this$props2 = this.props,\n extraDateSpan = _this$props2.extraDateSpan,\n dateProfile = _this$props2.dateProfile,\n todayRange = _this$props2.todayRange,\n nowDate = _this$props2.nowDate,\n eventSelection = _this$props2.eventSelection,\n eventDrag = _this$props2.eventDrag,\n eventResize = _this$props2.eventResize;\n return createElement(Fragment, null, hiddenGroups.map(hiddenGroup => {\n let positionCss = computeSegVStyle(hiddenGroup.span);\n let hiddenSegs = compileSegsFromEntries(hiddenGroup.entries, segs);\n return createElement(TimeColMoreLink, {\n key: buildIsoString(computeEarliestSegStart(hiddenSegs)),\n hiddenSegs: hiddenSegs,\n top: positionCss.top,\n bottom: positionCss.bottom,\n extraDateSpan: extraDateSpan,\n dateProfile: dateProfile,\n todayRange: todayRange,\n nowDate: nowDate,\n eventSelection: eventSelection,\n eventDrag: eventDrag,\n eventResize: eventResize\n });\n }));\n }\n renderFillSegs(segs, fillType) {\n let props = this.props,\n context = this.context;\n let segVCoords = computeSegVCoords(segs, props.date, props.slatCoords, context.options.eventMinHeight); // don't assume all populated\n let children = segVCoords.map((vcoords, i) => {\n let seg = segs[i];\n return createElement(\"div\", {\n key: buildEventRangeKey(seg.eventRange),\n className: \"fc-timegrid-bg-harness\",\n style: computeSegVStyle(vcoords)\n }, fillType === 'bg-event' ? createElement(BgEvent, Object.assign({\n seg: seg\n }, getSegMeta(seg, props.todayRange, props.nowDate))) : renderFill(fillType));\n });\n return createElement(Fragment, null, children);\n }\n renderNowIndicator(segs) {\n let _this$props3 = this.props,\n slatCoords = _this$props3.slatCoords,\n date = _this$props3.date;\n if (!slatCoords) {\n return null;\n }\n return segs.map((seg, i) => createElement(NowIndicatorContainer\n // key doesn't matter. will only ever be one\n , {\n // key doesn't matter. will only ever be one\n key: i,\n elClasses: ['fc-timegrid-now-indicator-line'],\n elStyle: {\n top: slatCoords.computeDateTop(seg.start, date)\n },\n isAxis: false,\n date: date\n }));\n }\n computeSegHStyle(segHCoords) {\n let _this$context2 = this.context,\n isRtl = _this$context2.isRtl,\n options = _this$context2.options;\n let shouldOverlap = options.slotEventOverlap;\n let nearCoord = segHCoords.levelCoord; // the left side if LTR. the right side if RTL. floating-point\n let farCoord = segHCoords.levelCoord + segHCoords.thickness; // the right side if LTR. the left side if RTL. floating-point\n let left; // amount of space from left edge, a fraction of the total width\n let right; // amount of space from right edge, a fraction of the total width\n if (shouldOverlap) {\n // double the width, but don't go beyond the maximum forward coordinate (1.0)\n farCoord = Math.min(1, nearCoord + (farCoord - nearCoord) * 2);\n }\n if (isRtl) {\n left = 1 - farCoord;\n right = nearCoord;\n } else {\n left = nearCoord;\n right = 1 - farCoord;\n }\n let props = {\n zIndex: segHCoords.stackDepth + 1,\n left: left * 100 + '%',\n right: right * 100 + '%'\n };\n if (shouldOverlap && !segHCoords.stackForward) {\n // add padding to the edge so that forward stacked events don't cover the resizer's icon\n props[isRtl ? 'marginLeft' : 'marginRight'] = 10 * 2; // 10 is a guesstimate of the icon's width\n }\n return props;\n }\n}\nfunction renderPlainFgSegs(sortedFgSegs, _ref) {\n let todayRange = _ref.todayRange,\n nowDate = _ref.nowDate,\n eventSelection = _ref.eventSelection,\n eventDrag = _ref.eventDrag,\n eventResize = _ref.eventResize;\n let hiddenInstances = (eventDrag ? eventDrag.affectedInstances : null) || (eventResize ? eventResize.affectedInstances : null) || {};\n return createElement(Fragment, null, sortedFgSegs.map(seg => {\n let instanceId = seg.eventRange.instance.instanceId;\n return createElement(\"div\", {\n key: instanceId,\n style: {\n visibility: hiddenInstances[instanceId] ? 'hidden' : ''\n }\n }, createElement(TimeColEvent, Object.assign({\n seg: seg,\n isDragging: false,\n isResizing: false,\n isDateSelecting: false,\n isSelected: instanceId === eventSelection,\n isShort: false\n }, getSegMeta(seg, todayRange, nowDate))));\n }));\n}\nfunction computeSegVStyle(segVCoords) {\n if (!segVCoords) {\n return {\n top: '',\n bottom: ''\n };\n }\n return {\n top: segVCoords.start,\n bottom: -segVCoords.end\n };\n}\nfunction compileSegsFromEntries(segEntries, allSegs) {\n return segEntries.map(segEntry => allSegs[segEntry.index]);\n}\nclass TimeColsContent extends BaseComponent {\n constructor() {\n super(...arguments);\n this.splitFgEventSegs = memoize(splitSegsByCol);\n this.splitBgEventSegs = memoize(splitSegsByCol);\n this.splitBusinessHourSegs = memoize(splitSegsByCol);\n this.splitNowIndicatorSegs = memoize(splitSegsByCol);\n this.splitDateSelectionSegs = memoize(splitSegsByCol);\n this.splitEventDrag = memoize(splitInteractionByCol);\n this.splitEventResize = memoize(splitInteractionByCol);\n this.rootElRef = createRef();\n this.cellElRefs = new RefMap();\n }\n render() {\n let props = this.props,\n context = this.context;\n let nowIndicatorTop = context.options.nowIndicator && props.slatCoords && props.slatCoords.safeComputeTop(props.nowDate); // might return void\n let colCnt = props.cells.length;\n let fgEventSegsByRow = this.splitFgEventSegs(props.fgEventSegs, colCnt);\n let bgEventSegsByRow = this.splitBgEventSegs(props.bgEventSegs, colCnt);\n let businessHourSegsByRow = this.splitBusinessHourSegs(props.businessHourSegs, colCnt);\n let nowIndicatorSegsByRow = this.splitNowIndicatorSegs(props.nowIndicatorSegs, colCnt);\n let dateSelectionSegsByRow = this.splitDateSelectionSegs(props.dateSelectionSegs, colCnt);\n let eventDragByRow = this.splitEventDrag(props.eventDrag, colCnt);\n let eventResizeByRow = this.splitEventResize(props.eventResize, colCnt);\n return createElement(\"div\", {\n className: \"fc-timegrid-cols\",\n ref: this.rootElRef\n }, createElement(\"table\", {\n role: \"presentation\",\n style: {\n minWidth: props.tableMinWidth,\n width: props.clientWidth\n }\n }, props.tableColGroupNode, createElement(\"tbody\", {\n role: \"presentation\"\n }, createElement(\"tr\", {\n role: \"row\"\n }, props.axis && createElement(\"td\", {\n \"aria-hidden\": true,\n className: \"fc-timegrid-col fc-timegrid-axis\"\n }, createElement(\"div\", {\n className: \"fc-timegrid-col-frame\"\n }, createElement(\"div\", {\n className: \"fc-timegrid-now-indicator-container\"\n }, typeof nowIndicatorTop === 'number' && createElement(NowIndicatorContainer, {\n elClasses: ['fc-timegrid-now-indicator-arrow'],\n elStyle: {\n top: nowIndicatorTop\n },\n isAxis: true,\n date: props.nowDate\n })))), props.cells.map((cell, i) => createElement(TimeCol, {\n key: cell.key,\n elRef: this.cellElRefs.createRef(cell.key),\n dateProfile: props.dateProfile,\n date: cell.date,\n nowDate: props.nowDate,\n todayRange: props.todayRange,\n extraRenderProps: cell.extraRenderProps,\n extraDataAttrs: cell.extraDataAttrs,\n extraClassNames: cell.extraClassNames,\n extraDateSpan: cell.extraDateSpan,\n fgEventSegs: fgEventSegsByRow[i],\n bgEventSegs: bgEventSegsByRow[i],\n businessHourSegs: businessHourSegsByRow[i],\n nowIndicatorSegs: nowIndicatorSegsByRow[i],\n dateSelectionSegs: dateSelectionSegsByRow[i],\n eventDrag: eventDragByRow[i],\n eventResize: eventResizeByRow[i],\n slatCoords: props.slatCoords,\n eventSelection: props.eventSelection,\n forPrint: props.forPrint\n }))))));\n }\n componentDidMount() {\n this.updateCoords();\n }\n componentDidUpdate() {\n this.updateCoords();\n }\n updateCoords() {\n let props = this.props;\n if (props.onColCoords && props.clientWidth !== null // means sizing has stabilized\n ) {\n props.onColCoords(new PositionCache(this.rootElRef.current, collectCellEls(this.cellElRefs.currentMap, props.cells), true,\n // horizontal\n false));\n }\n }\n}\nfunction collectCellEls(elMap, cells) {\n return cells.map(cell => elMap[cell.key]);\n}\n\n/* A component that renders one or more columns of vertical time slots\n----------------------------------------------------------------------------------------------------------------------*/\nclass TimeCols extends DateComponent {\n constructor() {\n super(...arguments);\n this.processSlotOptions = memoize(processSlotOptions);\n this.state = {\n slatCoords: null\n };\n this.handleRootEl = el => {\n if (el) {\n this.context.registerInteractiveComponent(this, {\n el,\n isHitComboAllowed: this.props.isHitComboAllowed\n });\n } else {\n this.context.unregisterInteractiveComponent(this);\n }\n };\n this.handleScrollRequest = request => {\n let onScrollTopRequest = this.props.onScrollTopRequest;\n let slatCoords = this.state.slatCoords;\n if (onScrollTopRequest && slatCoords) {\n if (request.time) {\n let top = slatCoords.computeTimeTop(request.time);\n top = Math.ceil(top); // zoom can give weird floating-point values. rather scroll a little bit further\n if (top) {\n top += 1; // to overcome top border that slots beyond the first have. looks better\n }\n onScrollTopRequest(top);\n }\n return true;\n }\n return false;\n };\n this.handleColCoords = colCoords => {\n this.colCoords = colCoords;\n };\n this.handleSlatCoords = slatCoords => {\n this.setState({\n slatCoords\n });\n if (this.props.onSlatCoords) {\n this.props.onSlatCoords(slatCoords);\n }\n };\n }\n render() {\n let props = this.props,\n state = this.state;\n return createElement(\"div\", {\n className: \"fc-timegrid-body\",\n ref: this.handleRootEl,\n style: {\n // these props are important to give this wrapper correct dimensions for interactions\n // TODO: if we set it here, can we avoid giving to inner tables?\n width: props.clientWidth,\n minWidth: props.tableMinWidth\n }\n }, createElement(TimeColsSlats, {\n axis: props.axis,\n dateProfile: props.dateProfile,\n slatMetas: props.slatMetas,\n clientWidth: props.clientWidth,\n minHeight: props.expandRows ? props.clientHeight : '',\n tableMinWidth: props.tableMinWidth,\n tableColGroupNode: props.axis ? props.tableColGroupNode : null /* axis depends on the colgroup's shrinking */,\n onCoords: this.handleSlatCoords\n }), createElement(TimeColsContent, {\n cells: props.cells,\n axis: props.axis,\n dateProfile: props.dateProfile,\n businessHourSegs: props.businessHourSegs,\n bgEventSegs: props.bgEventSegs,\n fgEventSegs: props.fgEventSegs,\n dateSelectionSegs: props.dateSelectionSegs,\n eventSelection: props.eventSelection,\n eventDrag: props.eventDrag,\n eventResize: props.eventResize,\n todayRange: props.todayRange,\n nowDate: props.nowDate,\n nowIndicatorSegs: props.nowIndicatorSegs,\n clientWidth: props.clientWidth,\n tableMinWidth: props.tableMinWidth,\n tableColGroupNode: props.tableColGroupNode,\n slatCoords: state.slatCoords,\n onColCoords: this.handleColCoords,\n forPrint: props.forPrint\n }));\n }\n componentDidMount() {\n this.scrollResponder = this.context.createScrollResponder(this.handleScrollRequest);\n }\n componentDidUpdate(prevProps) {\n this.scrollResponder.update(prevProps.dateProfile !== this.props.dateProfile);\n }\n componentWillUnmount() {\n this.scrollResponder.detach();\n }\n queryHit(positionLeft, positionTop) {\n let _this$context3 = this.context,\n dateEnv = _this$context3.dateEnv,\n options = _this$context3.options;\n let colCoords = this.colCoords;\n let dateProfile = this.props.dateProfile;\n let slatCoords = this.state.slatCoords;\n let _this$processSlotOpti = this.processSlotOptions(this.props.slotDuration, options.snapDuration),\n snapDuration = _this$processSlotOpti.snapDuration,\n snapsPerSlot = _this$processSlotOpti.snapsPerSlot;\n let colIndex = colCoords.leftToIndex(positionLeft);\n let slatIndex = slatCoords.positions.topToIndex(positionTop);\n if (colIndex != null && slatIndex != null) {\n let cell = this.props.cells[colIndex];\n let slatTop = slatCoords.positions.tops[slatIndex];\n let slatHeight = slatCoords.positions.getHeight(slatIndex);\n let partial = (positionTop - slatTop) / slatHeight; // floating point number between 0 and 1\n let localSnapIndex = Math.floor(partial * snapsPerSlot); // the snap # relative to start of slat\n let snapIndex = slatIndex * snapsPerSlot + localSnapIndex;\n let dayDate = this.props.cells[colIndex].date;\n let time = addDurations(dateProfile.slotMinTime, multiplyDuration(snapDuration, snapIndex));\n let start = dateEnv.add(dayDate, time);\n let end = dateEnv.add(start, snapDuration);\n return {\n dateProfile,\n dateSpan: Object.assign({\n range: {\n start,\n end\n },\n allDay: false\n }, cell.extraDateSpan),\n dayEl: colCoords.els[colIndex],\n rect: {\n left: colCoords.lefts[colIndex],\n right: colCoords.rights[colIndex],\n top: slatTop,\n bottom: slatTop + slatHeight\n },\n layer: 0\n };\n }\n return null;\n }\n}\nfunction processSlotOptions(slotDuration, snapDurationOverride) {\n let snapDuration = snapDurationOverride || slotDuration;\n let snapsPerSlot = wholeDivideDurations(slotDuration, snapDuration);\n if (snapsPerSlot === null) {\n snapDuration = slotDuration;\n snapsPerSlot = 1;\n // TODO: say warning?\n }\n return {\n snapDuration,\n snapsPerSlot\n };\n}\nclass DayTimeColsSlicer extends Slicer {\n sliceRange(range, dayRanges) {\n let segs = [];\n for (let col = 0; col < dayRanges.length; col += 1) {\n let segRange = intersectRanges(range, dayRanges[col]);\n if (segRange) {\n segs.push({\n start: segRange.start,\n end: segRange.end,\n isStart: segRange.start.valueOf() === range.start.valueOf(),\n isEnd: segRange.end.valueOf() === range.end.valueOf(),\n col\n });\n }\n }\n return segs;\n }\n}\nclass DayTimeCols extends DateComponent {\n constructor() {\n super(...arguments);\n this.buildDayRanges = memoize(buildDayRanges);\n this.slicer = new DayTimeColsSlicer();\n this.timeColsRef = createRef();\n }\n render() {\n let props = this.props,\n context = this.context;\n let dateProfile = props.dateProfile,\n dayTableModel = props.dayTableModel;\n let _context$options = context.options,\n nowIndicator = _context$options.nowIndicator,\n nextDayThreshold = _context$options.nextDayThreshold;\n let dayRanges = this.buildDayRanges(dayTableModel, dateProfile, context.dateEnv);\n // give it the first row of cells\n // TODO: would move this further down hierarchy, but sliceNowDate needs it\n return createElement(NowTimer, {\n unit: nowIndicator ? 'minute' : 'day'\n }, (nowDate, todayRange) => createElement(TimeCols, Object.assign({\n ref: this.timeColsRef\n }, this.slicer.sliceProps(props, dateProfile, null, context, dayRanges), {\n forPrint: props.forPrint,\n axis: props.axis,\n dateProfile: dateProfile,\n slatMetas: props.slatMetas,\n slotDuration: props.slotDuration,\n cells: dayTableModel.cells[0],\n tableColGroupNode: props.tableColGroupNode,\n tableMinWidth: props.tableMinWidth,\n clientWidth: props.clientWidth,\n clientHeight: props.clientHeight,\n expandRows: props.expandRows,\n nowDate: nowDate,\n nowIndicatorSegs: nowIndicator && this.slicer.sliceNowDate(nowDate, dateProfile, nextDayThreshold, context, dayRanges),\n todayRange: todayRange,\n onScrollTopRequest: props.onScrollTopRequest,\n onSlatCoords: props.onSlatCoords\n })));\n }\n}\nfunction buildDayRanges(dayTableModel, dateProfile, dateEnv) {\n let ranges = [];\n for (let date of dayTableModel.headerDates) {\n ranges.push({\n start: dateEnv.add(date, dateProfile.slotMinTime),\n end: dateEnv.add(date, dateProfile.slotMaxTime)\n });\n }\n return ranges;\n}\n\n// potential nice values for the slot-duration and interval-duration\n// from largest to smallest\nconst STOCK_SUB_DURATIONS = [{\n hours: 1\n}, {\n minutes: 30\n}, {\n minutes: 15\n}, {\n seconds: 30\n}, {\n seconds: 15\n}];\nfunction buildSlatMetas(slotMinTime, slotMaxTime, explicitLabelInterval, slotDuration, dateEnv) {\n let dayStart = new Date(0);\n let slatTime = slotMinTime;\n let slatIterator = createDuration(0);\n let labelInterval = explicitLabelInterval || computeLabelInterval(slotDuration);\n let metas = [];\n while (asRoughMs(slatTime) < asRoughMs(slotMaxTime)) {\n let date = dateEnv.add(dayStart, slatTime);\n let isLabeled = wholeDivideDurations(slatIterator, labelInterval) !== null;\n metas.push({\n date,\n time: slatTime,\n key: date.toISOString(),\n isoTimeStr: formatIsoTimeString(date),\n isLabeled\n });\n slatTime = addDurations(slatTime, slotDuration);\n slatIterator = addDurations(slatIterator, slotDuration);\n }\n return metas;\n}\n// Computes an automatic value for slotLabelInterval\nfunction computeLabelInterval(slotDuration) {\n let i;\n let labelInterval;\n let slotsPerLabel;\n // find the smallest stock label interval that results in more than one slots-per-label\n for (i = STOCK_SUB_DURATIONS.length - 1; i >= 0; i -= 1) {\n labelInterval = createDuration(STOCK_SUB_DURATIONS[i]);\n slotsPerLabel = wholeDivideDurations(labelInterval, slotDuration);\n if (slotsPerLabel !== null && slotsPerLabel > 1) {\n return labelInterval;\n }\n }\n return slotDuration; // fall back\n}\nclass DayTimeColsView extends TimeColsView {\n constructor() {\n super(...arguments);\n this.buildTimeColsModel = memoize(buildTimeColsModel);\n this.buildSlatMetas = memoize(buildSlatMetas);\n }\n render() {\n let _this$context4 = this.context,\n options = _this$context4.options,\n dateEnv = _this$context4.dateEnv,\n dateProfileGenerator = _this$context4.dateProfileGenerator;\n let props = this.props;\n let dateProfile = props.dateProfile;\n let dayTableModel = this.buildTimeColsModel(dateProfile, dateProfileGenerator);\n let splitProps = this.allDaySplitter.splitProps(props);\n let slatMetas = this.buildSlatMetas(dateProfile.slotMinTime, dateProfile.slotMaxTime, options.slotLabelInterval, options.slotDuration, dateEnv);\n let dayMinWidth = options.dayMinWidth;\n let hasAttachedAxis = !dayMinWidth;\n let hasDetachedAxis = dayMinWidth;\n let headerContent = options.dayHeaders && createElement(DayHeader, {\n dates: dayTableModel.headerDates,\n dateProfile: dateProfile,\n datesRepDistinctDays: true,\n renderIntro: hasAttachedAxis ? this.renderHeadAxis : null\n });\n let allDayContent = options.allDaySlot !== false && (contentArg => createElement(DayTable, Object.assign({}, splitProps.allDay, {\n dateProfile: dateProfile,\n dayTableModel: dayTableModel,\n nextDayThreshold: options.nextDayThreshold,\n tableMinWidth: contentArg.tableMinWidth,\n colGroupNode: contentArg.tableColGroupNode,\n renderRowIntro: hasAttachedAxis ? this.renderTableRowAxis : null,\n showWeekNumbers: false,\n expandRows: false,\n headerAlignElRef: this.headerElRef,\n clientWidth: contentArg.clientWidth,\n clientHeight: contentArg.clientHeight,\n forPrint: props.forPrint\n }, this.getAllDayMaxEventProps())));\n let timeGridContent = contentArg => createElement(DayTimeCols, Object.assign({}, splitProps.timed, {\n dayTableModel: dayTableModel,\n dateProfile: dateProfile,\n axis: hasAttachedAxis,\n slotDuration: options.slotDuration,\n slatMetas: slatMetas,\n forPrint: props.forPrint,\n tableColGroupNode: contentArg.tableColGroupNode,\n tableMinWidth: contentArg.tableMinWidth,\n clientWidth: contentArg.clientWidth,\n clientHeight: contentArg.clientHeight,\n onSlatCoords: this.handleSlatCoords,\n expandRows: contentArg.expandRows,\n onScrollTopRequest: this.handleScrollTopRequest\n }));\n return hasDetachedAxis ? this.renderHScrollLayout(headerContent, allDayContent, timeGridContent, dayTableModel.colCnt, dayMinWidth, slatMetas, this.state.slatCoords) : this.renderSimpleLayout(headerContent, allDayContent, timeGridContent);\n }\n}\nfunction buildTimeColsModel(dateProfile, dateProfileGenerator) {\n let daySeries = new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator);\n return new DayTableModel(daySeries, false);\n}\nvar css_248z = \".fc-v-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-v-event .fc-event-main{color:var(--fc-event-text-color);height:100%}.fc-v-event .fc-event-main-frame{display:flex;flex-direction:column;height:100%}.fc-v-event .fc-event-time{flex-grow:0;flex-shrink:0;max-height:100%;overflow:hidden}.fc-v-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-height:0}.fc-v-event .fc-event-title{bottom:0;max-height:100%;overflow:hidden;top:0}.fc-v-event:not(.fc-event-start){border-top-left-radius:0;border-top-right-radius:0;border-top-width:0}.fc-v-event:not(.fc-event-end){border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-width:0}.fc-v-event.fc-event-selected:before{left:-10px;right:-10px}.fc-v-event .fc-event-resizer-start{cursor:n-resize}.fc-v-event .fc-event-resizer-end{cursor:s-resize}.fc-v-event:not(.fc-event-selected) .fc-event-resizer{height:var(--fc-event-resizer-thickness);left:0;right:0}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start{top:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer{left:50%;margin-left:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-start{top:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc .fc-timegrid .fc-daygrid-body{z-index:2}.fc .fc-timegrid-divider{padding:0 0 2px}.fc .fc-timegrid-body{min-height:100%;position:relative;z-index:1}.fc .fc-timegrid-axis-chunk{position:relative}.fc .fc-timegrid-axis-chunk>table,.fc .fc-timegrid-slots{position:relative;z-index:1}.fc .fc-timegrid-slot{border-bottom:0;height:1.5em}.fc .fc-timegrid-slot:empty:before{content:\\\"\\\\00a0\\\"}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{display:inline-block;white-space:nowrap}.fc .fc-timegrid-slot-label{vertical-align:middle}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{padding:0 4px}.fc .fc-timegrid-axis-frame-liquid{height:100%}.fc .fc-timegrid-axis-frame{align-items:center;display:flex;justify-content:flex-end;overflow:hidden}.fc .fc-timegrid-axis-cushion{flex-shrink:0;max-width:60px}.fc-direction-ltr .fc-timegrid-slot-label-frame{text-align:right}.fc-direction-rtl .fc-timegrid-slot-label-frame{text-align:left}.fc-liquid-hack .fc-timegrid-axis-frame-liquid{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-timegrid-col-frame{min-height:100%;position:relative}.fc-media-screen.fc-liquid-hack .fc-timegrid-col-frame{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols{bottom:0;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols>table{height:100%}.fc-media-screen .fc-timegrid-col-bg,.fc-media-screen .fc-timegrid-col-events,.fc-media-screen .fc-timegrid-now-indicator-container{left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col-bg{z-index:2}.fc .fc-timegrid-col-bg .fc-non-business{z-index:1}.fc .fc-timegrid-col-bg .fc-bg-event{z-index:2}.fc .fc-timegrid-col-bg .fc-highlight{z-index:3}.fc .fc-timegrid-bg-harness{left:0;position:absolute;right:0}.fc .fc-timegrid-col-events{z-index:3}.fc .fc-timegrid-now-indicator-container{bottom:0;overflow:hidden}.fc-direction-ltr .fc-timegrid-col-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-col-events{margin:0 2px 0 2.5%}.fc-timegrid-event-harness{position:absolute}.fc-timegrid-event-harness>.fc-timegrid-event{bottom:0;left:0;position:absolute;right:0;top:0}.fc-timegrid-event-harness-inset .fc-timegrid-event,.fc-timegrid-event.fc-event-mirror,.fc-timegrid-more-link{box-shadow:0 0 0 1px var(--fc-page-bg-color)}.fc-timegrid-event,.fc-timegrid-more-link{border-radius:3px;font-size:var(--fc-small-font-size)}.fc-timegrid-event{margin-bottom:1px}.fc-timegrid-event .fc-event-main{padding:1px 1px 0}.fc-timegrid-event .fc-event-time{font-size:var(--fc-small-font-size);margin-bottom:1px;white-space:nowrap}.fc-timegrid-event-short .fc-event-main-frame{flex-direction:row;overflow:hidden}.fc-timegrid-event-short .fc-event-time:after{content:\\\"\\\\00a0-\\\\00a0\\\"}.fc-timegrid-event-short .fc-event-title{font-size:var(--fc-small-font-size)}.fc-timegrid-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;margin-bottom:1px;position:absolute;z-index:9999}.fc-timegrid-more-link-inner{padding:3px 2px;top:0}.fc-direction-ltr .fc-timegrid-more-link{right:0}.fc-direction-rtl .fc-timegrid-more-link{left:0}.fc .fc-timegrid-now-indicator-arrow,.fc .fc-timegrid-now-indicator-line{pointer-events:none}.fc .fc-timegrid-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;border-width:1px 0 0;left:0;position:absolute;right:0;z-index:4}.fc .fc-timegrid-now-indicator-arrow{border-color:var(--fc-now-indicator-color);border-style:solid;margin-top:-5px;position:absolute;z-index:4}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 0 5px 6px;left:0}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 6px 5px 0;right:0}\";\ninjectStyles(css_248z);\nexport { DayTimeCols, DayTimeColsSlicer, DayTimeColsView, TimeCols, TimeColsSlatsCoords, TimeColsView, buildDayRanges, buildSlatMetas, buildTimeColsModel };","import { createPlugin } from '@fullcalendar/core/index.js';\nimport { DayTimeColsView } from './internal.js';\nimport '@fullcalendar/core/internal.js';\nimport '@fullcalendar/core/preact.js';\nimport '@fullcalendar/daygrid/internal.js';\nconst OPTION_REFINERS = {\n allDaySlot: Boolean\n};\nvar index = createPlugin({\n name: '@fullcalendar/timegrid',\n initialView: 'timeGridWeek',\n optionRefiners: OPTION_REFINERS,\n views: {\n timeGrid: {\n component: DayTimeColsView,\n usesMinMaxTime: true,\n allDaySlot: true,\n slotDuration: '00:30:00',\n slotEventOverlap: true // a bad name. confused with overlap/constraint system\n },\n timeGridDay: {\n type: 'timeGrid',\n duration: {\n days: 1\n }\n },\n timeGridWeek: {\n type: 'timeGrid',\n duration: {\n weeks: 1\n }\n }\n }\n});\nexport { index as default };","import { BaseComponent, getUniqueDomId, getDateMeta, buildNavLinkAttrs, ContentContainer, getDayClassNames, formatDayString, createFormatter, EventContainer, getSegAnchorAttrs, isMultiDayRange, buildSegTimeText, DateComponent, memoize, ViewContainer, Scroller, NowTimer, sortEventSegs, getSegMeta, sliceEventStore, intersectRanges, startOfDay, addDays, injectStyles } from '@fullcalendar/core/internal.js';\nimport { createElement, Fragment } from '@fullcalendar/core/preact.js';\nclass ListViewHeaderRow extends BaseComponent {\n constructor() {\n super(...arguments);\n this.state = {\n textId: getUniqueDomId()\n };\n }\n render() {\n let _this$context = this.context,\n theme = _this$context.theme,\n dateEnv = _this$context.dateEnv,\n options = _this$context.options,\n viewApi = _this$context.viewApi;\n let _this$props = this.props,\n cellId = _this$props.cellId,\n dayDate = _this$props.dayDate,\n todayRange = _this$props.todayRange;\n let textId = this.state.textId;\n let dayMeta = getDateMeta(dayDate, todayRange);\n // will ever be falsy?\n let text = options.listDayFormat ? dateEnv.format(dayDate, options.listDayFormat) : '';\n // will ever be falsy? also, BAD NAME \"alt\"\n let sideText = options.listDaySideFormat ? dateEnv.format(dayDate, options.listDaySideFormat) : '';\n let renderProps = Object.assign({\n date: dateEnv.toDate(dayDate),\n view: viewApi,\n textId,\n text,\n sideText,\n navLinkAttrs: buildNavLinkAttrs(this.context, dayDate),\n sideNavLinkAttrs: buildNavLinkAttrs(this.context, dayDate, 'day', false)\n }, dayMeta);\n // TODO: make a reusable HOC for dayHeader (used in daygrid/timegrid too)\n return createElement(ContentContainer, {\n elTag: \"tr\",\n elClasses: ['fc-list-day', ...getDayClassNames(dayMeta, theme)],\n elAttrs: {\n 'data-date': formatDayString(dayDate)\n },\n renderProps: renderProps,\n generatorName: \"dayHeaderContent\",\n customGenerator: options.dayHeaderContent,\n defaultGenerator: renderInnerContent,\n classNameGenerator: options.dayHeaderClassNames,\n didMount: options.dayHeaderDidMount,\n willUnmount: options.dayHeaderWillUnmount\n }, InnerContent =>\n // TODO: force-hide top border based on :first-child\n createElement(\"th\", {\n scope: \"colgroup\",\n colSpan: 3,\n id: cellId,\n \"aria-labelledby\": textId\n }, createElement(InnerContent, {\n elTag: \"div\",\n elClasses: ['fc-list-day-cushion', theme.getClass('tableCellShaded')]\n })));\n }\n}\nfunction renderInnerContent(props) {\n return createElement(Fragment, null, props.text && createElement(\"a\", Object.assign({\n id: props.textId,\n className: \"fc-list-day-text\"\n }, props.navLinkAttrs), props.text), props.sideText && (/* not keyboard tabbable */createElement(\"a\", Object.assign({\n \"aria-hidden\": true,\n className: \"fc-list-day-side-text\"\n }, props.sideNavLinkAttrs), props.sideText)));\n}\nconst DEFAULT_TIME_FORMAT = createFormatter({\n hour: 'numeric',\n minute: '2-digit',\n meridiem: 'short'\n});\nclass ListViewEventRow extends BaseComponent {\n render() {\n let props = this.props,\n context = this.context;\n let options = context.options;\n let seg = props.seg,\n timeHeaderId = props.timeHeaderId,\n eventHeaderId = props.eventHeaderId,\n dateHeaderId = props.dateHeaderId;\n let timeFormat = options.eventTimeFormat || DEFAULT_TIME_FORMAT;\n return createElement(EventContainer, Object.assign({}, props, {\n elTag: \"tr\",\n elClasses: ['fc-list-event', seg.eventRange.def.url && 'fc-event-forced-url'],\n defaultGenerator: () => renderEventInnerContent(seg, context) /* weird */,\n seg: seg,\n timeText: \"\",\n disableDragging: true,\n disableResizing: true\n }), (InnerContent, eventContentArg) => createElement(Fragment, null, buildTimeContent(seg, timeFormat, context, timeHeaderId, dateHeaderId), createElement(\"td\", {\n \"aria-hidden\": true,\n className: \"fc-list-event-graphic\"\n }, createElement(\"span\", {\n className: \"fc-list-event-dot\",\n style: {\n borderColor: eventContentArg.borderColor || eventContentArg.backgroundColor\n }\n })), createElement(InnerContent, {\n elTag: \"td\",\n elClasses: ['fc-list-event-title'],\n elAttrs: {\n headers: `${eventHeaderId} ${dateHeaderId}`\n }\n })));\n }\n}\nfunction renderEventInnerContent(seg, context) {\n let interactiveAttrs = getSegAnchorAttrs(seg, context);\n return createElement(\"a\", Object.assign({}, interactiveAttrs), seg.eventRange.def.title);\n}\nfunction buildTimeContent(seg, timeFormat, context, timeHeaderId, dateHeaderId) {\n let options = context.options;\n if (options.displayEventTime !== false) {\n let eventDef = seg.eventRange.def;\n let eventInstance = seg.eventRange.instance;\n let doAllDay = false;\n let timeText;\n if (eventDef.allDay) {\n doAllDay = true;\n } else if (isMultiDayRange(seg.eventRange.range)) {\n // TODO: use (!isStart || !isEnd) instead?\n if (seg.isStart) {\n timeText = buildSegTimeText(seg, timeFormat, context, null, null, eventInstance.range.start, seg.end);\n } else if (seg.isEnd) {\n timeText = buildSegTimeText(seg, timeFormat, context, null, null, seg.start, eventInstance.range.end);\n } else {\n doAllDay = true;\n }\n } else {\n timeText = buildSegTimeText(seg, timeFormat, context);\n }\n if (doAllDay) {\n let renderProps = {\n text: context.options.allDayText,\n view: context.viewApi\n };\n return createElement(ContentContainer, {\n elTag: \"td\",\n elClasses: ['fc-list-event-time'],\n elAttrs: {\n headers: `${timeHeaderId} ${dateHeaderId}`\n },\n renderProps: renderProps,\n generatorName: \"allDayContent\",\n customGenerator: options.allDayContent,\n defaultGenerator: renderAllDayInner,\n classNameGenerator: options.allDayClassNames,\n didMount: options.allDayDidMount,\n willUnmount: options.allDayWillUnmount\n });\n }\n return createElement(\"td\", {\n className: \"fc-list-event-time\"\n }, timeText);\n }\n return null;\n}\nfunction renderAllDayInner(renderProps) {\n return renderProps.text;\n}\n\n/*\nResponsible for the scroller, and forwarding event-related actions into the \"grid\".\n*/\nclass ListView extends DateComponent {\n constructor() {\n super(...arguments);\n this.computeDateVars = memoize(computeDateVars);\n this.eventStoreToSegs = memoize(this._eventStoreToSegs);\n this.state = {\n timeHeaderId: getUniqueDomId(),\n eventHeaderId: getUniqueDomId(),\n dateHeaderIdRoot: getUniqueDomId()\n };\n this.setRootEl = rootEl => {\n if (rootEl) {\n this.context.registerInteractiveComponent(this, {\n el: rootEl\n });\n } else {\n this.context.unregisterInteractiveComponent(this);\n }\n };\n }\n render() {\n let props = this.props,\n context = this.context;\n let _this$computeDateVars = this.computeDateVars(props.dateProfile),\n dayDates = _this$computeDateVars.dayDates,\n dayRanges = _this$computeDateVars.dayRanges;\n let eventSegs = this.eventStoreToSegs(props.eventStore, props.eventUiBases, dayRanges);\n return createElement(ViewContainer, {\n elRef: this.setRootEl,\n elClasses: ['fc-list', context.theme.getClass('table'), context.options.stickyHeaderDates !== false ? 'fc-list-sticky' : ''],\n viewSpec: context.viewSpec\n }, createElement(Scroller, {\n liquid: !props.isHeightAuto,\n overflowX: props.isHeightAuto ? 'visible' : 'hidden',\n overflowY: props.isHeightAuto ? 'visible' : 'auto'\n }, eventSegs.length > 0 ? this.renderSegList(eventSegs, dayDates) : this.renderEmptyMessage()));\n }\n renderEmptyMessage() {\n let _this$context2 = this.context,\n options = _this$context2.options,\n viewApi = _this$context2.viewApi;\n let renderProps = {\n text: options.noEventsText,\n view: viewApi\n };\n return createElement(ContentContainer, {\n elTag: \"div\",\n elClasses: ['fc-list-empty'],\n renderProps: renderProps,\n generatorName: \"noEventsContent\",\n customGenerator: options.noEventsContent,\n defaultGenerator: renderNoEventsInner,\n classNameGenerator: options.noEventsClassNames,\n didMount: options.noEventsDidMount,\n willUnmount: options.noEventsWillUnmount\n }, InnerContent => createElement(InnerContent, {\n elTag: \"div\",\n elClasses: ['fc-list-empty-cushion']\n }));\n }\n renderSegList(allSegs, dayDates) {\n let _this$context3 = this.context,\n theme = _this$context3.theme,\n options = _this$context3.options;\n let _this$state = this.state,\n timeHeaderId = _this$state.timeHeaderId,\n eventHeaderId = _this$state.eventHeaderId,\n dateHeaderIdRoot = _this$state.dateHeaderIdRoot;\n let segsByDay = groupSegsByDay(allSegs); // sparse array\n return createElement(NowTimer, {\n unit: \"day\"\n }, (nowDate, todayRange) => {\n let innerNodes = [];\n for (let dayIndex = 0; dayIndex < segsByDay.length; dayIndex += 1) {\n let daySegs = segsByDay[dayIndex];\n if (daySegs) {\n // sparse array, so might be undefined\n let dayStr = formatDayString(dayDates[dayIndex]);\n let dateHeaderId = dateHeaderIdRoot + '-' + dayStr;\n // append a day header\n innerNodes.push(createElement(ListViewHeaderRow, {\n key: dayStr,\n cellId: dateHeaderId,\n dayDate: dayDates[dayIndex],\n todayRange: todayRange\n }));\n daySegs = sortEventSegs(daySegs, options.eventOrder);\n for (let seg of daySegs) {\n innerNodes.push(createElement(ListViewEventRow, Object.assign({\n key: dayStr + ':' + seg.eventRange.instance.instanceId /* are multiple segs for an instanceId */,\n seg: seg,\n isDragging: false,\n isResizing: false,\n isDateSelecting: false,\n isSelected: false,\n timeHeaderId: timeHeaderId,\n eventHeaderId: eventHeaderId,\n dateHeaderId: dateHeaderId\n }, getSegMeta(seg, todayRange, nowDate))));\n }\n }\n }\n return createElement(\"table\", {\n className: 'fc-list-table ' + theme.getClass('table')\n }, createElement(\"thead\", null, createElement(\"tr\", null, createElement(\"th\", {\n scope: \"col\",\n id: timeHeaderId\n }, options.timeHint), createElement(\"th\", {\n scope: \"col\",\n \"aria-hidden\": true\n }), createElement(\"th\", {\n scope: \"col\",\n id: eventHeaderId\n }, options.eventHint))), createElement(\"tbody\", null, innerNodes));\n });\n }\n _eventStoreToSegs(eventStore, eventUiBases, dayRanges) {\n return this.eventRangesToSegs(sliceEventStore(eventStore, eventUiBases, this.props.dateProfile.activeRange, this.context.options.nextDayThreshold).fg, dayRanges);\n }\n eventRangesToSegs(eventRanges, dayRanges) {\n let segs = [];\n for (let eventRange of eventRanges) {\n segs.push(...this.eventRangeToSegs(eventRange, dayRanges));\n }\n return segs;\n }\n eventRangeToSegs(eventRange, dayRanges) {\n let dateEnv = this.context.dateEnv;\n let nextDayThreshold = this.context.options.nextDayThreshold;\n let range = eventRange.range;\n let allDay = eventRange.def.allDay;\n let dayIndex;\n let segRange;\n let seg;\n let segs = [];\n for (dayIndex = 0; dayIndex < dayRanges.length; dayIndex += 1) {\n segRange = intersectRanges(range, dayRanges[dayIndex]);\n if (segRange) {\n seg = {\n component: this,\n eventRange,\n start: segRange.start,\n end: segRange.end,\n isStart: eventRange.isStart && segRange.start.valueOf() === range.start.valueOf(),\n isEnd: eventRange.isEnd && segRange.end.valueOf() === range.end.valueOf(),\n dayIndex\n };\n segs.push(seg);\n // detect when range won't go fully into the next day,\n // and mutate the latest seg to the be the end.\n if (!seg.isEnd && !allDay && dayIndex + 1 < dayRanges.length && range.end < dateEnv.add(dayRanges[dayIndex + 1].start, nextDayThreshold)) {\n seg.end = range.end;\n seg.isEnd = true;\n break;\n }\n }\n }\n return segs;\n }\n}\nfunction renderNoEventsInner(renderProps) {\n return renderProps.text;\n}\nfunction computeDateVars(dateProfile) {\n let dayStart = startOfDay(dateProfile.renderRange.start);\n let viewEnd = dateProfile.renderRange.end;\n let dayDates = [];\n let dayRanges = [];\n while (dayStart < viewEnd) {\n dayDates.push(dayStart);\n dayRanges.push({\n start: dayStart,\n end: addDays(dayStart, 1)\n });\n dayStart = addDays(dayStart, 1);\n }\n return {\n dayDates,\n dayRanges\n };\n}\n// Returns a sparse array of arrays, segs grouped by their dayIndex\nfunction groupSegsByDay(segs) {\n let segsByDay = []; // sparse array\n let i;\n let seg;\n for (i = 0; i < segs.length; i += 1) {\n seg = segs[i];\n (segsByDay[seg.dayIndex] || (segsByDay[seg.dayIndex] = [])).push(seg);\n }\n return segsByDay;\n}\nvar css_248z = \":root{--fc-list-event-dot-width:10px;--fc-list-event-hover-bg-color:#f5f5f5}.fc-theme-standard .fc-list{border:1px solid var(--fc-border-color)}.fc .fc-list-empty{align-items:center;background-color:var(--fc-neutral-bg-color);display:flex;height:100%;justify-content:center}.fc .fc-list-empty-cushion{margin:5em 0}.fc .fc-list-table{border-style:hidden;width:100%}.fc .fc-list-table tr>*{border-left:0;border-right:0}.fc .fc-list-sticky .fc-list-day>*{background:var(--fc-page-bg-color);position:sticky;top:0}.fc .fc-list-table thead{left:-10000px;position:absolute}.fc .fc-list-table tbody>tr:first-child th{border-top:0}.fc .fc-list-table th{padding:0}.fc .fc-list-day-cushion,.fc .fc-list-table td{padding:8px 14px}.fc .fc-list-day-cushion:after{clear:both;content:\\\"\\\";display:table}.fc-theme-standard .fc-list-day-cushion{background-color:var(--fc-neutral-bg-color)}.fc-direction-ltr .fc-list-day-text,.fc-direction-rtl .fc-list-day-side-text{float:left}.fc-direction-ltr .fc-list-day-side-text,.fc-direction-rtl .fc-list-day-text{float:right}.fc-direction-ltr .fc-list-table .fc-list-event-graphic{padding-right:0}.fc-direction-rtl .fc-list-table .fc-list-event-graphic{padding-left:0}.fc .fc-list-event.fc-event-forced-url{cursor:pointer}.fc .fc-list-event:hover td{background-color:var(--fc-list-event-hover-bg-color)}.fc .fc-list-event-graphic,.fc .fc-list-event-time{white-space:nowrap;width:1px}.fc .fc-list-event-dot{border:calc(var(--fc-list-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-list-event-dot-width)/2);box-sizing:content-box;display:inline-block;height:0;width:0}.fc .fc-list-event-title a{color:inherit;text-decoration:none}.fc .fc-list-event.fc-event-forced-url:hover a{text-decoration:underline}\";\ninjectStyles(css_248z);\nexport { ListView };","import { createPlugin } from '@fullcalendar/core/index.js';\nimport { ListView } from './internal.js';\nimport { identity, createFormatter } from '@fullcalendar/core/internal.js';\nimport '@fullcalendar/core/preact.js';\nconst OPTION_REFINERS = {\n listDayFormat: createFalsableFormatter,\n listDaySideFormat: createFalsableFormatter,\n noEventsClassNames: identity,\n noEventsContent: identity,\n noEventsDidMount: identity,\n noEventsWillUnmount: identity\n // noEventsText is defined in base options\n};\nfunction createFalsableFormatter(input) {\n return input === false ? null : createFormatter(input);\n}\nvar index = createPlugin({\n name: '@fullcalendar/list',\n optionRefiners: OPTION_REFINERS,\n views: {\n list: {\n component: ListView,\n buttonTextKey: 'list',\n listDayFormat: {\n month: 'long',\n day: 'numeric',\n year: 'numeric'\n } // like \"January 1, 2016\"\n },\n listDay: {\n type: 'list',\n duration: {\n days: 1\n },\n listDayFormat: {\n weekday: 'long'\n } // day-of-week is all we need. full date is probably in headerToolbar\n },\n listWeek: {\n type: 'list',\n duration: {\n weeks: 1\n },\n listDayFormat: {\n weekday: 'long'\n },\n listDaySideFormat: {\n month: 'long',\n day: 'numeric',\n year: 'numeric'\n }\n },\n listMonth: {\n type: 'list',\n duration: {\n month: 1\n },\n listDaySideFormat: {\n weekday: 'long'\n } // day-of-week is nice-to-have\n },\n listYear: {\n type: 'list',\n duration: {\n year: 1\n },\n listDaySideFormat: {\n weekday: 'long'\n } // day-of-week is nice-to-have\n }\n }\n});\nexport { index as default };","import { createPlugin } from '@fullcalendar/core/index.js';\nimport { buildDayTableModel, DayTableSlicer, TableRows, buildDayTableRenderRange, TableDateProfileGenerator } from '@fullcalendar/daygrid/internal.js';\nimport { DateComponent, memoize, getUniqueDomId, DayHeader, ViewContainer, formatIsoMonthStr, isPropsEqual, createDuration, intersectRanges, createFormatter, injectStyles } from '@fullcalendar/core/internal.js';\nimport { createElement, createRef } from '@fullcalendar/core/preact.js';\nclass SingleMonth extends DateComponent {\n constructor() {\n super(...arguments);\n this.buildDayTableModel = memoize(buildDayTableModel);\n this.slicer = new DayTableSlicer();\n this.state = {\n labelId: getUniqueDomId()\n };\n }\n render() {\n const props = this.props,\n state = this.state,\n context = this.context;\n const dateProfile = props.dateProfile,\n forPrint = props.forPrint;\n const options = context.options;\n const dayTableModel = this.buildDayTableModel(dateProfile, context.dateProfileGenerator);\n const slicedProps = this.slicer.sliceProps(props, dateProfile, options.nextDayThreshold, context, dayTableModel);\n // ensure single-month has aspect ratio\n const tableHeight = props.tableWidth != null ? props.tableWidth / options.aspectRatio : null;\n const rowCnt = dayTableModel.cells.length;\n const rowHeight = tableHeight != null ? tableHeight / rowCnt : null;\n return createElement(\"div\", {\n ref: props.elRef,\n \"data-date\": props.isoDateStr,\n className: \"fc-multimonth-month\",\n style: {\n width: props.width\n },\n role: \"grid\",\n \"aria-labelledby\": state.labelId\n }, createElement(\"div\", {\n className: \"fc-multimonth-header\",\n style: {\n marginBottom: rowHeight\n },\n role: \"presentation\"\n }, createElement(\"div\", {\n className: \"fc-multimonth-title\",\n id: state.labelId\n }, context.dateEnv.format(props.dateProfile.currentRange.start, props.titleFormat)), createElement(\"table\", {\n className: ['fc-multimonth-header-table', context.theme.getClass('table')].join(' '),\n role: \"presentation\"\n }, createElement(\"thead\", {\n role: \"rowgroup\"\n }, createElement(DayHeader, {\n dateProfile: props.dateProfile,\n dates: dayTableModel.headerDates,\n datesRepDistinctDays: false\n })))), createElement(\"div\", {\n className: ['fc-multimonth-daygrid', 'fc-daygrid', 'fc-daygrid-body', !forPrint && 'fc-daygrid-body-balanced', forPrint && 'fc-daygrid-body-unbalanced', forPrint && 'fc-daygrid-body-natural'].join(' '),\n style: {\n marginTop: -rowHeight\n }\n }, createElement(\"table\", {\n className: ['fc-multimonth-daygrid-table', context.theme.getClass('table')].join(' '),\n style: {\n height: forPrint ? '' : tableHeight\n },\n role: \"presentation\"\n }, createElement(\"tbody\", {\n role: \"rowgroup\"\n }, createElement(TableRows, Object.assign({}, slicedProps, {\n dateProfile: dateProfile,\n cells: dayTableModel.cells,\n eventSelection: props.eventSelection,\n dayMaxEvents: !forPrint,\n dayMaxEventRows: !forPrint,\n showWeekNumbers: options.weekNumbers,\n clientWidth: props.clientWidth,\n clientHeight: props.clientHeight,\n forPrint: forPrint\n }))))));\n }\n}\nclass MultiMonthView extends DateComponent {\n constructor() {\n super(...arguments);\n this.splitDateProfileByMonth = memoize(splitDateProfileByMonth);\n this.buildMonthFormat = memoize(buildMonthFormat);\n this.scrollElRef = createRef();\n this.firstMonthElRef = createRef();\n this.needsScrollReset = false;\n this.handleSizing = isForced => {\n if (isForced) {\n this.updateSize();\n }\n };\n }\n render() {\n const context = this.context,\n props = this.props,\n state = this.state;\n const options = context.options;\n const clientWidth = state.clientWidth,\n clientHeight = state.clientHeight;\n const monthHPadding = state.monthHPadding || 0;\n const colCount = Math.min(clientWidth != null ? Math.floor(clientWidth / (options.multiMonthMinWidth + monthHPadding)) : 1, options.multiMonthMaxColumns) || 1;\n const monthWidthPct = 100 / colCount + '%';\n const monthTableWidth = clientWidth == null ? null : clientWidth / colCount - monthHPadding;\n const isLegitSingleCol = clientWidth != null && colCount === 1;\n const monthDateProfiles = this.splitDateProfileByMonth(context.dateProfileGenerator, props.dateProfile, context.dateEnv, isLegitSingleCol ? false : options.fixedWeekCount, options.showNonCurrentDates);\n const monthTitleFormat = this.buildMonthFormat(options.multiMonthTitleFormat, monthDateProfiles);\n const rootClassNames = ['fc-multimonth', isLegitSingleCol ? 'fc-multimonth-singlecol' : 'fc-multimonth-multicol', monthTableWidth != null && monthTableWidth < 400 ? 'fc-multimonth-compact' : '', props.isHeightAuto ? '' : 'fc-scroller' // for AutoScroller\n ];\n return createElement(ViewContainer, {\n elRef: this.scrollElRef,\n elClasses: rootClassNames,\n viewSpec: context.viewSpec\n }, monthDateProfiles.map((monthDateProfile, i) => {\n const monthStr = formatIsoMonthStr(monthDateProfile.currentRange.start);\n return createElement(SingleMonth, Object.assign({}, props, {\n key: monthStr,\n isoDateStr: monthStr,\n elRef: i === 0 ? this.firstMonthElRef : undefined,\n titleFormat: monthTitleFormat,\n dateProfile: monthDateProfile,\n width: monthWidthPct,\n tableWidth: monthTableWidth,\n clientWidth: clientWidth,\n clientHeight: clientHeight\n }));\n }));\n }\n componentDidMount() {\n this.updateSize();\n this.context.addResizeHandler(this.handleSizing);\n this.requestScrollReset();\n }\n componentDidUpdate(prevProps) {\n if (!isPropsEqual(prevProps, this.props)) {\n // an external change?\n this.handleSizing(false);\n }\n if (prevProps.dateProfile !== this.props.dateProfile) {\n this.requestScrollReset();\n } else {\n this.flushScrollReset();\n }\n }\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleSizing);\n }\n updateSize() {\n const scrollEl = this.scrollElRef.current;\n const firstMonthEl = this.firstMonthElRef.current;\n if (scrollEl) {\n this.setState({\n clientWidth: scrollEl.clientWidth,\n clientHeight: scrollEl.clientHeight\n });\n }\n if (firstMonthEl && scrollEl) {\n if (this.state.monthHPadding == null) {\n // always remember initial non-zero value\n this.setState({\n monthHPadding: scrollEl.clientWidth -\n // go within padding\n firstMonthEl.firstChild.offsetWidth\n });\n }\n }\n }\n requestScrollReset() {\n this.needsScrollReset = true;\n this.flushScrollReset();\n }\n flushScrollReset() {\n if (this.needsScrollReset && this.state.monthHPadding != null // indicates sizing already happened\n ) {\n const currentDate = this.props.dateProfile.currentDate;\n const scrollEl = this.scrollElRef.current;\n const monthEl = scrollEl.querySelector(`[data-date=\"${formatIsoMonthStr(currentDate)}\"]`);\n scrollEl.scrollTop = monthEl.getBoundingClientRect().top - this.firstMonthElRef.current.getBoundingClientRect().top;\n this.needsScrollReset = false;\n }\n }\n // workaround for when queued setState render (w/ clientWidth) gets cancelled because\n // subsequent update and shouldComponentUpdate says not to render :(\n shouldComponentUpdate() {\n return true;\n }\n}\n// date profile\n// -------------------------------------------------------------------------------------------------\nconst oneMonthDuration = createDuration(1, 'month');\nfunction splitDateProfileByMonth(dateProfileGenerator, dateProfile, dateEnv, fixedWeekCount, showNonCurrentDates) {\n const _dateProfile$currentR = dateProfile.currentRange,\n start = _dateProfile$currentR.start,\n end = _dateProfile$currentR.end;\n let monthStart = start;\n const monthDateProfiles = [];\n while (monthStart.valueOf() < end.valueOf()) {\n const monthEnd = dateEnv.add(monthStart, oneMonthDuration);\n const currentRange = {\n // yuck\n start: dateProfileGenerator.skipHiddenDays(monthStart),\n end: dateProfileGenerator.skipHiddenDays(monthEnd, -1, true)\n };\n let renderRange = buildDayTableRenderRange({\n currentRange,\n snapToWeek: true,\n fixedWeekCount,\n dateEnv\n });\n renderRange = {\n // yuck\n start: dateProfileGenerator.skipHiddenDays(renderRange.start),\n end: dateProfileGenerator.skipHiddenDays(renderRange.end, -1, true)\n };\n const activeRange = dateProfile.activeRange ? intersectRanges(dateProfile.activeRange, showNonCurrentDates ? renderRange : currentRange) : null;\n monthDateProfiles.push({\n currentDate: dateProfile.currentDate,\n isValid: dateProfile.isValid,\n validRange: dateProfile.validRange,\n renderRange,\n activeRange,\n currentRange,\n currentRangeUnit: 'month',\n isRangeAllDay: true,\n dateIncrement: dateProfile.dateIncrement,\n slotMinTime: dateProfile.slotMaxTime,\n slotMaxTime: dateProfile.slotMinTime\n });\n monthStart = monthEnd;\n }\n return monthDateProfiles;\n}\n// date formatting\n// -------------------------------------------------------------------------------------------------\nconst YEAR_MONTH_FORMATTER = createFormatter({\n year: 'numeric',\n month: 'long'\n});\nconst YEAR_FORMATTER = createFormatter({\n month: 'long'\n});\nfunction buildMonthFormat(formatOverride, monthDateProfiles) {\n return formatOverride || (monthDateProfiles[0].currentRange.start.getUTCFullYear() !== monthDateProfiles[monthDateProfiles.length - 1].currentRange.start.getUTCFullYear() ? YEAR_MONTH_FORMATTER : YEAR_FORMATTER);\n}\nconst OPTION_REFINERS = {\n multiMonthTitleFormat: createFormatter,\n multiMonthMaxColumns: Number,\n multiMonthMinWidth: Number\n};\nvar css_248z = \".fc .fc-multimonth{border:1px solid var(--fc-border-color);display:flex;flex-wrap:wrap;overflow-x:hidden;overflow-y:auto}.fc .fc-multimonth-title{font-size:1.2em;font-weight:700;padding:1em 0;text-align:center}.fc .fc-multimonth-daygrid{background:var(--fc-page-bg-color)}.fc .fc-multimonth-daygrid-table,.fc .fc-multimonth-header-table{table-layout:fixed;width:100%}.fc .fc-multimonth-daygrid-table{border-top-style:hidden!important}.fc .fc-multimonth-singlecol .fc-multimonth{position:relative}.fc .fc-multimonth-singlecol .fc-multimonth-header{background:var(--fc-page-bg-color);position:relative;top:0;z-index:2}.fc .fc-multimonth-singlecol .fc-multimonth-daygrid{position:relative;z-index:1}.fc .fc-multimonth-singlecol .fc-multimonth-daygrid-table,.fc .fc-multimonth-singlecol .fc-multimonth-header-table{border-left-style:hidden;border-right-style:hidden}.fc .fc-multimonth-singlecol .fc-multimonth-month:last-child .fc-multimonth-daygrid-table{border-bottom-style:hidden}.fc .fc-multimonth-multicol{line-height:1}.fc .fc-multimonth-multicol .fc-multimonth-month{padding:0 1.2em 1.2em}.fc .fc-multimonth-multicol .fc-daygrid-more-link{border:1px solid var(--fc-event-border-color);display:block;float:none;padding:1px}.fc .fc-multimonth-compact{line-height:1}.fc .fc-multimonth-compact .fc-multimonth-daygrid-table,.fc .fc-multimonth-compact .fc-multimonth-header-table{font-size:.9em}.fc-media-screen .fc-multimonth-singlecol .fc-multimonth-header{position:sticky}.fc-media-print .fc-multimonth{overflow:visible}\";\ninjectStyles(css_248z);\nvar index = createPlugin({\n name: '@fullcalendar/multimonth',\n initialView: 'multiMonthYear',\n optionRefiners: OPTION_REFINERS,\n views: {\n multiMonth: {\n component: MultiMonthView,\n dateProfileGeneratorClass: TableDateProfileGenerator,\n multiMonthMinWidth: 350,\n multiMonthMaxColumns: 3\n },\n multiMonthYear: {\n type: 'multiMonth',\n duration: {\n years: 1\n },\n fixedWeekCount: true,\n showNonCurrentDates: false\n }\n }\n});\nexport { index as default };","import { globalPlugins } from '@fullcalendar/core/index.js';\nexport * from '@fullcalendar/core/index.js';\nimport interactionPlugin__default from '@fullcalendar/interaction/index.js';\nexport * from '@fullcalendar/interaction/index.js';\nimport dayGridPlugin from '@fullcalendar/daygrid/index.js';\nimport timeGridPlugin from '@fullcalendar/timegrid/index.js';\nimport listPlugin from '@fullcalendar/list/index.js';\nimport multiMonthPlugin from '@fullcalendar/multimonth/index.js';\nglobalPlugins.push(interactionPlugin__default, dayGridPlugin, timeGridPlugin, listPlugin, multiMonthPlugin);"],"sourceRoot":""}