[SPIP] ~spip v3.2.0-->v3.2.1
[lhc/web/www.git] / www / plugins-dist / organiseur / lib / moment / moment-with-locales.js
1 ;(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3 typeof define === 'function' && define.amd ? define(factory) :
4 global.moment = factory()
5 }(this, (function () { 'use strict';
6
7 var hookCallback;
8
9 function hooks () {
10 return hookCallback.apply(null, arguments);
11 }
12
13 // This is done to register the method called with moment()
14 // without creating circular dependencies.
15 function setHookCallback (callback) {
16 hookCallback = callback;
17 }
18
19 function isArray(input) {
20 return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';
21 }
22
23 function isObject(input) {
24 // IE8 will treat undefined and null as object if it wasn't for
25 // input != null
26 return input != null && Object.prototype.toString.call(input) === '[object Object]';
27 }
28
29 function isObjectEmpty(obj) {
30 var k;
31 for (k in obj) {
32 // even if its not own property I'd still call it non-empty
33 return false;
34 }
35 return true;
36 }
37
38 function isUndefined(input) {
39 return input === void 0;
40 }
41
42 function isNumber(input) {
43 return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';
44 }
45
46 function isDate(input) {
47 return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
48 }
49
50 function map(arr, fn) {
51 var res = [], i;
52 for (i = 0; i < arr.length; ++i) {
53 res.push(fn(arr[i], i));
54 }
55 return res;
56 }
57
58 function hasOwnProp(a, b) {
59 return Object.prototype.hasOwnProperty.call(a, b);
60 }
61
62 function extend(a, b) {
63 for (var i in b) {
64 if (hasOwnProp(b, i)) {
65 a[i] = b[i];
66 }
67 }
68
69 if (hasOwnProp(b, 'toString')) {
70 a.toString = b.toString;
71 }
72
73 if (hasOwnProp(b, 'valueOf')) {
74 a.valueOf = b.valueOf;
75 }
76
77 return a;
78 }
79
80 function createUTC (input, format, locale, strict) {
81 return createLocalOrUTC(input, format, locale, strict, true).utc();
82 }
83
84 function defaultParsingFlags() {
85 // We need to deep clone this object.
86 return {
87 empty : false,
88 unusedTokens : [],
89 unusedInput : [],
90 overflow : -2,
91 charsLeftOver : 0,
92 nullInput : false,
93 invalidMonth : null,
94 invalidFormat : false,
95 userInvalidated : false,
96 iso : false,
97 parsedDateParts : [],
98 meridiem : null,
99 rfc2822 : false,
100 weekdayMismatch : false
101 };
102 }
103
104 function getParsingFlags(m) {
105 if (m._pf == null) {
106 m._pf = defaultParsingFlags();
107 }
108 return m._pf;
109 }
110
111 var some;
112 if (Array.prototype.some) {
113 some = Array.prototype.some;
114 } else {
115 some = function (fun) {
116 var t = Object(this);
117 var len = t.length >>> 0;
118
119 for (var i = 0; i < len; i++) {
120 if (i in t && fun.call(this, t[i], i, t)) {
121 return true;
122 }
123 }
124
125 return false;
126 };
127 }
128
129 var some$1 = some;
130
131 function isValid(m) {
132 if (m._isValid == null) {
133 var flags = getParsingFlags(m);
134 var parsedParts = some$1.call(flags.parsedDateParts, function (i) {
135 return i != null;
136 });
137 var isNowValid = !isNaN(m._d.getTime()) &&
138 flags.overflow < 0 &&
139 !flags.empty &&
140 !flags.invalidMonth &&
141 !flags.invalidWeekday &&
142 !flags.nullInput &&
143 !flags.invalidFormat &&
144 !flags.userInvalidated &&
145 (!flags.meridiem || (flags.meridiem && parsedParts));
146
147 if (m._strict) {
148 isNowValid = isNowValid &&
149 flags.charsLeftOver === 0 &&
150 flags.unusedTokens.length === 0 &&
151 flags.bigHour === undefined;
152 }
153
154 if (Object.isFrozen == null || !Object.isFrozen(m)) {
155 m._isValid = isNowValid;
156 }
157 else {
158 return isNowValid;
159 }
160 }
161 return m._isValid;
162 }
163
164 function createInvalid (flags) {
165 var m = createUTC(NaN);
166 if (flags != null) {
167 extend(getParsingFlags(m), flags);
168 }
169 else {
170 getParsingFlags(m).userInvalidated = true;
171 }
172
173 return m;
174 }
175
176 // Plugins that add properties should also add the key here (null value),
177 // so we can properly clone ourselves.
178 var momentProperties = hooks.momentProperties = [];
179
180 function copyConfig(to, from) {
181 var i, prop, val;
182
183 if (!isUndefined(from._isAMomentObject)) {
184 to._isAMomentObject = from._isAMomentObject;
185 }
186 if (!isUndefined(from._i)) {
187 to._i = from._i;
188 }
189 if (!isUndefined(from._f)) {
190 to._f = from._f;
191 }
192 if (!isUndefined(from._l)) {
193 to._l = from._l;
194 }
195 if (!isUndefined(from._strict)) {
196 to._strict = from._strict;
197 }
198 if (!isUndefined(from._tzm)) {
199 to._tzm = from._tzm;
200 }
201 if (!isUndefined(from._isUTC)) {
202 to._isUTC = from._isUTC;
203 }
204 if (!isUndefined(from._offset)) {
205 to._offset = from._offset;
206 }
207 if (!isUndefined(from._pf)) {
208 to._pf = getParsingFlags(from);
209 }
210 if (!isUndefined(from._locale)) {
211 to._locale = from._locale;
212 }
213
214 if (momentProperties.length > 0) {
215 for (i = 0; i < momentProperties.length; i++) {
216 prop = momentProperties[i];
217 val = from[prop];
218 if (!isUndefined(val)) {
219 to[prop] = val;
220 }
221 }
222 }
223
224 return to;
225 }
226
227 var updateInProgress = false;
228
229 // Moment prototype object
230 function Moment(config) {
231 copyConfig(this, config);
232 this._d = new Date(config._d != null ? config._d.getTime() : NaN);
233 if (!this.isValid()) {
234 this._d = new Date(NaN);
235 }
236 // Prevent infinite loop in case updateOffset creates new moment
237 // objects.
238 if (updateInProgress === false) {
239 updateInProgress = true;
240 hooks.updateOffset(this);
241 updateInProgress = false;
242 }
243 }
244
245 function isMoment (obj) {
246 return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
247 }
248
249 function absFloor (number) {
250 if (number < 0) {
251 // -0 -> 0
252 return Math.ceil(number) || 0;
253 } else {
254 return Math.floor(number);
255 }
256 }
257
258 function toInt(argumentForCoercion) {
259 var coercedNumber = +argumentForCoercion,
260 value = 0;
261
262 if (coercedNumber !== 0 && isFinite(coercedNumber)) {
263 value = absFloor(coercedNumber);
264 }
265
266 return value;
267 }
268
269 // compare two arrays, return the number of differences
270 function compareArrays(array1, array2, dontConvert) {
271 var len = Math.min(array1.length, array2.length),
272 lengthDiff = Math.abs(array1.length - array2.length),
273 diffs = 0,
274 i;
275 for (i = 0; i < len; i++) {
276 if ((dontConvert && array1[i] !== array2[i]) ||
277 (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
278 diffs++;
279 }
280 }
281 return diffs + lengthDiff;
282 }
283
284 function warn(msg) {
285 if (hooks.suppressDeprecationWarnings === false &&
286 (typeof console !== 'undefined') && console.warn) {
287 console.warn('Deprecation warning: ' + msg);
288 }
289 }
290
291 function deprecate(msg, fn) {
292 var firstTime = true;
293
294 return extend(function () {
295 if (hooks.deprecationHandler != null) {
296 hooks.deprecationHandler(null, msg);
297 }
298 if (firstTime) {
299 var args = [];
300 var arg;
301 for (var i = 0; i < arguments.length; i++) {
302 arg = '';
303 if (typeof arguments[i] === 'object') {
304 arg += '\n[' + i + '] ';
305 for (var key in arguments[0]) {
306 arg += key + ': ' + arguments[0][key] + ', ';
307 }
308 arg = arg.slice(0, -2); // Remove trailing comma and space
309 } else {
310 arg = arguments[i];
311 }
312 args.push(arg);
313 }
314 warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack);
315 firstTime = false;
316 }
317 return fn.apply(this, arguments);
318 }, fn);
319 }
320
321 var deprecations = {};
322
323 function deprecateSimple(name, msg) {
324 if (hooks.deprecationHandler != null) {
325 hooks.deprecationHandler(name, msg);
326 }
327 if (!deprecations[name]) {
328 warn(msg);
329 deprecations[name] = true;
330 }
331 }
332
333 hooks.suppressDeprecationWarnings = false;
334 hooks.deprecationHandler = null;
335
336 function isFunction(input) {
337 return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
338 }
339
340 function set (config) {
341 var prop, i;
342 for (i in config) {
343 prop = config[i];
344 if (isFunction(prop)) {
345 this[i] = prop;
346 } else {
347 this['_' + i] = prop;
348 }
349 }
350 this._config = config;
351 // Lenient ordinal parsing accepts just a number in addition to
352 // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
353 // TODO: Remove "ordinalParse" fallback in next major release.
354 this._dayOfMonthOrdinalParseLenient = new RegExp(
355 (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
356 '|' + (/\d{1,2}/).source);
357 }
358
359 function mergeConfigs(parentConfig, childConfig) {
360 var res = extend({}, parentConfig), prop;
361 for (prop in childConfig) {
362 if (hasOwnProp(childConfig, prop)) {
363 if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
364 res[prop] = {};
365 extend(res[prop], parentConfig[prop]);
366 extend(res[prop], childConfig[prop]);
367 } else if (childConfig[prop] != null) {
368 res[prop] = childConfig[prop];
369 } else {
370 delete res[prop];
371 }
372 }
373 }
374 for (prop in parentConfig) {
375 if (hasOwnProp(parentConfig, prop) &&
376 !hasOwnProp(childConfig, prop) &&
377 isObject(parentConfig[prop])) {
378 // make sure changes to properties don't modify parent config
379 res[prop] = extend({}, res[prop]);
380 }
381 }
382 return res;
383 }
384
385 function Locale(config) {
386 if (config != null) {
387 this.set(config);
388 }
389 }
390
391 var keys;
392
393 if (Object.keys) {
394 keys = Object.keys;
395 } else {
396 keys = function (obj) {
397 var i, res = [];
398 for (i in obj) {
399 if (hasOwnProp(obj, i)) {
400 res.push(i);
401 }
402 }
403 return res;
404 };
405 }
406
407 var keys$1 = keys;
408
409 var defaultCalendar = {
410 sameDay : '[Today at] LT',
411 nextDay : '[Tomorrow at] LT',
412 nextWeek : 'dddd [at] LT',
413 lastDay : '[Yesterday at] LT',
414 lastWeek : '[Last] dddd [at] LT',
415 sameElse : 'L'
416 };
417
418 function calendar (key, mom, now) {
419 var output = this._calendar[key] || this._calendar['sameElse'];
420 return isFunction(output) ? output.call(mom, now) : output;
421 }
422
423 var defaultLongDateFormat = {
424 LTS : 'h:mm:ss A',
425 LT : 'h:mm A',
426 L : 'MM/DD/YYYY',
427 LL : 'MMMM D, YYYY',
428 LLL : 'MMMM D, YYYY h:mm A',
429 LLLL : 'dddd, MMMM D, YYYY h:mm A'
430 };
431
432 function longDateFormat (key) {
433 var format = this._longDateFormat[key],
434 formatUpper = this._longDateFormat[key.toUpperCase()];
435
436 if (format || !formatUpper) {
437 return format;
438 }
439
440 this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
441 return val.slice(1);
442 });
443
444 return this._longDateFormat[key];
445 }
446
447 var defaultInvalidDate = 'Invalid date';
448
449 function invalidDate () {
450 return this._invalidDate;
451 }
452
453 var defaultOrdinal = '%d';
454 var defaultDayOfMonthOrdinalParse = /\d{1,2}/;
455
456 function ordinal (number) {
457 return this._ordinal.replace('%d', number);
458 }
459
460 var defaultRelativeTime = {
461 future : 'in %s',
462 past : '%s ago',
463 s : 'a few seconds',
464 ss : '%d seconds',
465 m : 'a minute',
466 mm : '%d minutes',
467 h : 'an hour',
468 hh : '%d hours',
469 d : 'a day',
470 dd : '%d days',
471 M : 'a month',
472 MM : '%d months',
473 y : 'a year',
474 yy : '%d years'
475 };
476
477 function relativeTime (number, withoutSuffix, string, isFuture) {
478 var output = this._relativeTime[string];
479 return (isFunction(output)) ?
480 output(number, withoutSuffix, string, isFuture) :
481 output.replace(/%d/i, number);
482 }
483
484 function pastFuture (diff, output) {
485 var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
486 return isFunction(format) ? format(output) : format.replace(/%s/i, output);
487 }
488
489 var aliases = {};
490
491 function addUnitAlias (unit, shorthand) {
492 var lowerCase = unit.toLowerCase();
493 aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
494 }
495
496 function normalizeUnits(units) {
497 return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
498 }
499
500 function normalizeObjectUnits(inputObject) {
501 var normalizedInput = {},
502 normalizedProp,
503 prop;
504
505 for (prop in inputObject) {
506 if (hasOwnProp(inputObject, prop)) {
507 normalizedProp = normalizeUnits(prop);
508 if (normalizedProp) {
509 normalizedInput[normalizedProp] = inputObject[prop];
510 }
511 }
512 }
513
514 return normalizedInput;
515 }
516
517 var priorities = {};
518
519 function addUnitPriority(unit, priority) {
520 priorities[unit] = priority;
521 }
522
523 function getPrioritizedUnits(unitsObj) {
524 var units = [];
525 for (var u in unitsObj) {
526 units.push({unit: u, priority: priorities[u]});
527 }
528 units.sort(function (a, b) {
529 return a.priority - b.priority;
530 });
531 return units;
532 }
533
534 function makeGetSet (unit, keepTime) {
535 return function (value) {
536 if (value != null) {
537 set$1(this, unit, value);
538 hooks.updateOffset(this, keepTime);
539 return this;
540 } else {
541 return get(this, unit);
542 }
543 };
544 }
545
546 function get (mom, unit) {
547 return mom.isValid() ?
548 mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;
549 }
550
551 function set$1 (mom, unit, value) {
552 if (mom.isValid()) {
553 mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
554 }
555 }
556
557 // MOMENTS
558
559 function stringGet (units) {
560 units = normalizeUnits(units);
561 if (isFunction(this[units])) {
562 return this[units]();
563 }
564 return this;
565 }
566
567
568 function stringSet (units, value) {
569 if (typeof units === 'object') {
570 units = normalizeObjectUnits(units);
571 var prioritized = getPrioritizedUnits(units);
572 for (var i = 0; i < prioritized.length; i++) {
573 this[prioritized[i].unit](units[prioritized[i].unit]);
574 }
575 } else {
576 units = normalizeUnits(units);
577 if (isFunction(this[units])) {
578 return this[units](value);
579 }
580 }
581 return this;
582 }
583
584 function zeroFill(number, targetLength, forceSign) {
585 var absNumber = '' + Math.abs(number),
586 zerosToFill = targetLength - absNumber.length,
587 sign = number >= 0;
588 return (sign ? (forceSign ? '+' : '') : '-') +
589 Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
590 }
591
592 var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;
593
594 var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
595
596 var formatFunctions = {};
597
598 var formatTokenFunctions = {};
599
600 // token: 'M'
601 // padded: ['MM', 2]
602 // ordinal: 'Mo'
603 // callback: function () { this.month() + 1 }
604 function addFormatToken (token, padded, ordinal, callback) {
605 var func = callback;
606 if (typeof callback === 'string') {
607 func = function () {
608 return this[callback]();
609 };
610 }
611 if (token) {
612 formatTokenFunctions[token] = func;
613 }
614 if (padded) {
615 formatTokenFunctions[padded[0]] = function () {
616 return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
617 };
618 }
619 if (ordinal) {
620 formatTokenFunctions[ordinal] = function () {
621 return this.localeData().ordinal(func.apply(this, arguments), token);
622 };
623 }
624 }
625
626 function removeFormattingTokens(input) {
627 if (input.match(/\[[\s\S]/)) {
628 return input.replace(/^\[|\]$/g, '');
629 }
630 return input.replace(/\\/g, '');
631 }
632
633 function makeFormatFunction(format) {
634 var array = format.match(formattingTokens), i, length;
635
636 for (i = 0, length = array.length; i < length; i++) {
637 if (formatTokenFunctions[array[i]]) {
638 array[i] = formatTokenFunctions[array[i]];
639 } else {
640 array[i] = removeFormattingTokens(array[i]);
641 }
642 }
643
644 return function (mom) {
645 var output = '', i;
646 for (i = 0; i < length; i++) {
647 output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];
648 }
649 return output;
650 };
651 }
652
653 // format date using native date object
654 function formatMoment(m, format) {
655 if (!m.isValid()) {
656 return m.localeData().invalidDate();
657 }
658
659 format = expandFormat(format, m.localeData());
660 formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
661
662 return formatFunctions[format](m);
663 }
664
665 function expandFormat(format, locale) {
666 var i = 5;
667
668 function replaceLongDateFormatTokens(input) {
669 return locale.longDateFormat(input) || input;
670 }
671
672 localFormattingTokens.lastIndex = 0;
673 while (i >= 0 && localFormattingTokens.test(format)) {
674 format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
675 localFormattingTokens.lastIndex = 0;
676 i -= 1;
677 }
678
679 return format;
680 }
681
682 var match1 = /\d/; // 0 - 9
683 var match2 = /\d\d/; // 00 - 99
684 var match3 = /\d{3}/; // 000 - 999
685 var match4 = /\d{4}/; // 0000 - 9999
686 var match6 = /[+-]?\d{6}/; // -999999 - 999999
687 var match1to2 = /\d\d?/; // 0 - 99
688 var match3to4 = /\d\d\d\d?/; // 999 - 9999
689 var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999
690 var match1to3 = /\d{1,3}/; // 0 - 999
691 var match1to4 = /\d{1,4}/; // 0 - 9999
692 var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999
693
694 var matchUnsigned = /\d+/; // 0 - inf
695 var matchSigned = /[+-]?\d+/; // -inf - inf
696
697 var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z
698 var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z
699
700 var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123
701
702 // any word (or two) characters or numbers including two/three word month in arabic.
703 // includes scottish gaelic two word and hyphenated months
704 var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i;
705
706
707 var regexes = {};
708
709 function addRegexToken (token, regex, strictRegex) {
710 regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {
711 return (isStrict && strictRegex) ? strictRegex : regex;
712 };
713 }
714
715 function getParseRegexForToken (token, config) {
716 if (!hasOwnProp(regexes, token)) {
717 return new RegExp(unescapeFormat(token));
718 }
719
720 return regexes[token](config._strict, config._locale);
721 }
722
723 // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
724 function unescapeFormat(s) {
725 return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
726 return p1 || p2 || p3 || p4;
727 }));
728 }
729
730 function regexEscape(s) {
731 return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
732 }
733
734 var tokens = {};
735
736 function addParseToken (token, callback) {
737 var i, func = callback;
738 if (typeof token === 'string') {
739 token = [token];
740 }
741 if (isNumber(callback)) {
742 func = function (input, array) {
743 array[callback] = toInt(input);
744 };
745 }
746 for (i = 0; i < token.length; i++) {
747 tokens[token[i]] = func;
748 }
749 }
750
751 function addWeekParseToken (token, callback) {
752 addParseToken(token, function (input, array, config, token) {
753 config._w = config._w || {};
754 callback(input, config._w, config, token);
755 });
756 }
757
758 function addTimeToArrayFromToken(token, input, config) {
759 if (input != null && hasOwnProp(tokens, token)) {
760 tokens[token](input, config._a, config, token);
761 }
762 }
763
764 var YEAR = 0;
765 var MONTH = 1;
766 var DATE = 2;
767 var HOUR = 3;
768 var MINUTE = 4;
769 var SECOND = 5;
770 var MILLISECOND = 6;
771 var WEEK = 7;
772 var WEEKDAY = 8;
773
774 var indexOf;
775
776 if (Array.prototype.indexOf) {
777 indexOf = Array.prototype.indexOf;
778 } else {
779 indexOf = function (o) {
780 // I know
781 var i;
782 for (i = 0; i < this.length; ++i) {
783 if (this[i] === o) {
784 return i;
785 }
786 }
787 return -1;
788 };
789 }
790
791 var indexOf$1 = indexOf;
792
793 function daysInMonth(year, month) {
794 return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
795 }
796
797 // FORMATTING
798
799 addFormatToken('M', ['MM', 2], 'Mo', function () {
800 return this.month() + 1;
801 });
802
803 addFormatToken('MMM', 0, 0, function (format) {
804 return this.localeData().monthsShort(this, format);
805 });
806
807 addFormatToken('MMMM', 0, 0, function (format) {
808 return this.localeData().months(this, format);
809 });
810
811 // ALIASES
812
813 addUnitAlias('month', 'M');
814
815 // PRIORITY
816
817 addUnitPriority('month', 8);
818
819 // PARSING
820
821 addRegexToken('M', match1to2);
822 addRegexToken('MM', match1to2, match2);
823 addRegexToken('MMM', function (isStrict, locale) {
824 return locale.monthsShortRegex(isStrict);
825 });
826 addRegexToken('MMMM', function (isStrict, locale) {
827 return locale.monthsRegex(isStrict);
828 });
829
830 addParseToken(['M', 'MM'], function (input, array) {
831 array[MONTH] = toInt(input) - 1;
832 });
833
834 addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
835 var month = config._locale.monthsParse(input, token, config._strict);
836 // if we didn't find a month name, mark the date as invalid.
837 if (month != null) {
838 array[MONTH] = month;
839 } else {
840 getParsingFlags(config).invalidMonth = input;
841 }
842 });
843
844 // LOCALES
845
846 var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/;
847 var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
848 function localeMonths (m, format) {
849 if (!m) {
850 return isArray(this._months) ? this._months :
851 this._months['standalone'];
852 }
853 return isArray(this._months) ? this._months[m.month()] :
854 this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];
855 }
856
857 var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
858 function localeMonthsShort (m, format) {
859 if (!m) {
860 return isArray(this._monthsShort) ? this._monthsShort :
861 this._monthsShort['standalone'];
862 }
863 return isArray(this._monthsShort) ? this._monthsShort[m.month()] :
864 this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
865 }
866
867 function handleStrictParse(monthName, format, strict) {
868 var i, ii, mom, llc = monthName.toLocaleLowerCase();
869 if (!this._monthsParse) {
870 // this is not used
871 this._monthsParse = [];
872 this._longMonthsParse = [];
873 this._shortMonthsParse = [];
874 for (i = 0; i < 12; ++i) {
875 mom = createUTC([2000, i]);
876 this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();
877 this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
878 }
879 }
880
881 if (strict) {
882 if (format === 'MMM') {
883 ii = indexOf$1.call(this._shortMonthsParse, llc);
884 return ii !== -1 ? ii : null;
885 } else {
886 ii = indexOf$1.call(this._longMonthsParse, llc);
887 return ii !== -1 ? ii : null;
888 }
889 } else {
890 if (format === 'MMM') {
891 ii = indexOf$1.call(this._shortMonthsParse, llc);
892 if (ii !== -1) {
893 return ii;
894 }
895 ii = indexOf$1.call(this._longMonthsParse, llc);
896 return ii !== -1 ? ii : null;
897 } else {
898 ii = indexOf$1.call(this._longMonthsParse, llc);
899 if (ii !== -1) {
900 return ii;
901 }
902 ii = indexOf$1.call(this._shortMonthsParse, llc);
903 return ii !== -1 ? ii : null;
904 }
905 }
906 }
907
908 function localeMonthsParse (monthName, format, strict) {
909 var i, mom, regex;
910
911 if (this._monthsParseExact) {
912 return handleStrictParse.call(this, monthName, format, strict);
913 }
914
915 if (!this._monthsParse) {
916 this._monthsParse = [];
917 this._longMonthsParse = [];
918 this._shortMonthsParse = [];
919 }
920
921 // TODO: add sorting
922 // Sorting makes sure if one month (or abbr) is a prefix of another
923 // see sorting in computeMonthsParse
924 for (i = 0; i < 12; i++) {
925 // make the regex if we don't have it already
926 mom = createUTC([2000, i]);
927 if (strict && !this._longMonthsParse[i]) {
928 this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
929 this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
930 }
931 if (!strict && !this._monthsParse[i]) {
932 regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
933 this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
934 }
935 // test the regex
936 if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
937 return i;
938 } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
939 return i;
940 } else if (!strict && this._monthsParse[i].test(monthName)) {
941 return i;
942 }
943 }
944 }
945
946 // MOMENTS
947
948 function setMonth (mom, value) {
949 var dayOfMonth;
950
951 if (!mom.isValid()) {
952 // No op
953 return mom;
954 }
955
956 if (typeof value === 'string') {
957 if (/^\d+$/.test(value)) {
958 value = toInt(value);
959 } else {
960 value = mom.localeData().monthsParse(value);
961 // TODO: Another silent failure?
962 if (!isNumber(value)) {
963 return mom;
964 }
965 }
966 }
967
968 dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
969 mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
970 return mom;
971 }
972
973 function getSetMonth (value) {
974 if (value != null) {
975 setMonth(this, value);
976 hooks.updateOffset(this, true);
977 return this;
978 } else {
979 return get(this, 'Month');
980 }
981 }
982
983 function getDaysInMonth () {
984 return daysInMonth(this.year(), this.month());
985 }
986
987 var defaultMonthsShortRegex = matchWord;
988 function monthsShortRegex (isStrict) {
989 if (this._monthsParseExact) {
990 if (!hasOwnProp(this, '_monthsRegex')) {
991 computeMonthsParse.call(this);
992 }
993 if (isStrict) {
994 return this._monthsShortStrictRegex;
995 } else {
996 return this._monthsShortRegex;
997 }
998 } else {
999 if (!hasOwnProp(this, '_monthsShortRegex')) {
1000 this._monthsShortRegex = defaultMonthsShortRegex;
1001 }
1002 return this._monthsShortStrictRegex && isStrict ?
1003 this._monthsShortStrictRegex : this._monthsShortRegex;
1004 }
1005 }
1006
1007 var defaultMonthsRegex = matchWord;
1008 function monthsRegex (isStrict) {
1009 if (this._monthsParseExact) {
1010 if (!hasOwnProp(this, '_monthsRegex')) {
1011 computeMonthsParse.call(this);
1012 }
1013 if (isStrict) {
1014 return this._monthsStrictRegex;
1015 } else {
1016 return this._monthsRegex;
1017 }
1018 } else {
1019 if (!hasOwnProp(this, '_monthsRegex')) {
1020 this._monthsRegex = defaultMonthsRegex;
1021 }
1022 return this._monthsStrictRegex && isStrict ?
1023 this._monthsStrictRegex : this._monthsRegex;
1024 }
1025 }
1026
1027 function computeMonthsParse () {
1028 function cmpLenRev(a, b) {
1029 return b.length - a.length;
1030 }
1031
1032 var shortPieces = [], longPieces = [], mixedPieces = [],
1033 i, mom;
1034 for (i = 0; i < 12; i++) {
1035 // make the regex if we don't have it already
1036 mom = createUTC([2000, i]);
1037 shortPieces.push(this.monthsShort(mom, ''));
1038 longPieces.push(this.months(mom, ''));
1039 mixedPieces.push(this.months(mom, ''));
1040 mixedPieces.push(this.monthsShort(mom, ''));
1041 }
1042 // Sorting makes sure if one month (or abbr) is a prefix of another it
1043 // will match the longer piece.
1044 shortPieces.sort(cmpLenRev);
1045 longPieces.sort(cmpLenRev);
1046 mixedPieces.sort(cmpLenRev);
1047 for (i = 0; i < 12; i++) {
1048 shortPieces[i] = regexEscape(shortPieces[i]);
1049 longPieces[i] = regexEscape(longPieces[i]);
1050 }
1051 for (i = 0; i < 24; i++) {
1052 mixedPieces[i] = regexEscape(mixedPieces[i]);
1053 }
1054
1055 this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1056 this._monthsShortRegex = this._monthsRegex;
1057 this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
1058 this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
1059 }
1060
1061 // FORMATTING
1062
1063 addFormatToken('Y', 0, 0, function () {
1064 var y = this.year();
1065 return y <= 9999 ? '' + y : '+' + y;
1066 });
1067
1068 addFormatToken(0, ['YY', 2], 0, function () {
1069 return this.year() % 100;
1070 });
1071
1072 addFormatToken(0, ['YYYY', 4], 0, 'year');
1073 addFormatToken(0, ['YYYYY', 5], 0, 'year');
1074 addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
1075
1076 // ALIASES
1077
1078 addUnitAlias('year', 'y');
1079
1080 // PRIORITIES
1081
1082 addUnitPriority('year', 1);
1083
1084 // PARSING
1085
1086 addRegexToken('Y', matchSigned);
1087 addRegexToken('YY', match1to2, match2);
1088 addRegexToken('YYYY', match1to4, match4);
1089 addRegexToken('YYYYY', match1to6, match6);
1090 addRegexToken('YYYYYY', match1to6, match6);
1091
1092 addParseToken(['YYYYY', 'YYYYYY'], YEAR);
1093 addParseToken('YYYY', function (input, array) {
1094 array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
1095 });
1096 addParseToken('YY', function (input, array) {
1097 array[YEAR] = hooks.parseTwoDigitYear(input);
1098 });
1099 addParseToken('Y', function (input, array) {
1100 array[YEAR] = parseInt(input, 10);
1101 });
1102
1103 // HELPERS
1104
1105 function daysInYear(year) {
1106 return isLeapYear(year) ? 366 : 365;
1107 }
1108
1109 function isLeapYear(year) {
1110 return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
1111 }
1112
1113 // HOOKS
1114
1115 hooks.parseTwoDigitYear = function (input) {
1116 return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
1117 };
1118
1119 // MOMENTS
1120
1121 var getSetYear = makeGetSet('FullYear', true);
1122
1123 function getIsLeapYear () {
1124 return isLeapYear(this.year());
1125 }
1126
1127 function createDate (y, m, d, h, M, s, ms) {
1128 // can't just apply() to create a date:
1129 // https://stackoverflow.com/q/181348
1130 var date = new Date(y, m, d, h, M, s, ms);
1131
1132 // the date constructor remaps years 0-99 to 1900-1999
1133 if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {
1134 date.setFullYear(y);
1135 }
1136 return date;
1137 }
1138
1139 function createUTCDate (y) {
1140 var date = new Date(Date.UTC.apply(null, arguments));
1141
1142 // the Date.UTC function remaps years 0-99 to 1900-1999
1143 if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {
1144 date.setUTCFullYear(y);
1145 }
1146 return date;
1147 }
1148
1149 // start-of-first-week - start-of-year
1150 function firstWeekOffset(year, dow, doy) {
1151 var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
1152 fwd = 7 + dow - doy,
1153 // first-week day local weekday -- which local weekday is fwd
1154 fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
1155
1156 return -fwdlw + fwd - 1;
1157 }
1158
1159 // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
1160 function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
1161 var localWeekday = (7 + weekday - dow) % 7,
1162 weekOffset = firstWeekOffset(year, dow, doy),
1163 dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
1164 resYear, resDayOfYear;
1165
1166 if (dayOfYear <= 0) {
1167 resYear = year - 1;
1168 resDayOfYear = daysInYear(resYear) + dayOfYear;
1169 } else if (dayOfYear > daysInYear(year)) {
1170 resYear = year + 1;
1171 resDayOfYear = dayOfYear - daysInYear(year);
1172 } else {
1173 resYear = year;
1174 resDayOfYear = dayOfYear;
1175 }
1176
1177 return {
1178 year: resYear,
1179 dayOfYear: resDayOfYear
1180 };
1181 }
1182
1183 function weekOfYear(mom, dow, doy) {
1184 var weekOffset = firstWeekOffset(mom.year(), dow, doy),
1185 week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
1186 resWeek, resYear;
1187
1188 if (week < 1) {
1189 resYear = mom.year() - 1;
1190 resWeek = week + weeksInYear(resYear, dow, doy);
1191 } else if (week > weeksInYear(mom.year(), dow, doy)) {
1192 resWeek = week - weeksInYear(mom.year(), dow, doy);
1193 resYear = mom.year() + 1;
1194 } else {
1195 resYear = mom.year();
1196 resWeek = week;
1197 }
1198
1199 return {
1200 week: resWeek,
1201 year: resYear
1202 };
1203 }
1204
1205 function weeksInYear(year, dow, doy) {
1206 var weekOffset = firstWeekOffset(year, dow, doy),
1207 weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
1208 return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
1209 }
1210
1211 // FORMATTING
1212
1213 addFormatToken('w', ['ww', 2], 'wo', 'week');
1214 addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
1215
1216 // ALIASES
1217
1218 addUnitAlias('week', 'w');
1219 addUnitAlias('isoWeek', 'W');
1220
1221 // PRIORITIES
1222
1223 addUnitPriority('week', 5);
1224 addUnitPriority('isoWeek', 5);
1225
1226 // PARSING
1227
1228 addRegexToken('w', match1to2);
1229 addRegexToken('ww', match1to2, match2);
1230 addRegexToken('W', match1to2);
1231 addRegexToken('WW', match1to2, match2);
1232
1233 addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
1234 week[token.substr(0, 1)] = toInt(input);
1235 });
1236
1237 // HELPERS
1238
1239 // LOCALES
1240
1241 function localeWeek (mom) {
1242 return weekOfYear(mom, this._week.dow, this._week.doy).week;
1243 }
1244
1245 var defaultLocaleWeek = {
1246 dow : 0, // Sunday is the first day of the week.
1247 doy : 6 // The week that contains Jan 1st is the first week of the year.
1248 };
1249
1250 function localeFirstDayOfWeek () {
1251 return this._week.dow;
1252 }
1253
1254 function localeFirstDayOfYear () {
1255 return this._week.doy;
1256 }
1257
1258 // MOMENTS
1259
1260 function getSetWeek (input) {
1261 var week = this.localeData().week(this);
1262 return input == null ? week : this.add((input - week) * 7, 'd');
1263 }
1264
1265 function getSetISOWeek (input) {
1266 var week = weekOfYear(this, 1, 4).week;
1267 return input == null ? week : this.add((input - week) * 7, 'd');
1268 }
1269
1270 // FORMATTING
1271
1272 addFormatToken('d', 0, 'do', 'day');
1273
1274 addFormatToken('dd', 0, 0, function (format) {
1275 return this.localeData().weekdaysMin(this, format);
1276 });
1277
1278 addFormatToken('ddd', 0, 0, function (format) {
1279 return this.localeData().weekdaysShort(this, format);
1280 });
1281
1282 addFormatToken('dddd', 0, 0, function (format) {
1283 return this.localeData().weekdays(this, format);
1284 });
1285
1286 addFormatToken('e', 0, 0, 'weekday');
1287 addFormatToken('E', 0, 0, 'isoWeekday');
1288
1289 // ALIASES
1290
1291 addUnitAlias('day', 'd');
1292 addUnitAlias('weekday', 'e');
1293 addUnitAlias('isoWeekday', 'E');
1294
1295 // PRIORITY
1296 addUnitPriority('day', 11);
1297 addUnitPriority('weekday', 11);
1298 addUnitPriority('isoWeekday', 11);
1299
1300 // PARSING
1301
1302 addRegexToken('d', match1to2);
1303 addRegexToken('e', match1to2);
1304 addRegexToken('E', match1to2);
1305 addRegexToken('dd', function (isStrict, locale) {
1306 return locale.weekdaysMinRegex(isStrict);
1307 });
1308 addRegexToken('ddd', function (isStrict, locale) {
1309 return locale.weekdaysShortRegex(isStrict);
1310 });
1311 addRegexToken('dddd', function (isStrict, locale) {
1312 return locale.weekdaysRegex(isStrict);
1313 });
1314
1315 addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
1316 var weekday = config._locale.weekdaysParse(input, token, config._strict);
1317 // if we didn't get a weekday name, mark the date as invalid
1318 if (weekday != null) {
1319 week.d = weekday;
1320 } else {
1321 getParsingFlags(config).invalidWeekday = input;
1322 }
1323 });
1324
1325 addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
1326 week[token] = toInt(input);
1327 });
1328
1329 // HELPERS
1330
1331 function parseWeekday(input, locale) {
1332 if (typeof input !== 'string') {
1333 return input;
1334 }
1335
1336 if (!isNaN(input)) {
1337 return parseInt(input, 10);
1338 }
1339
1340 input = locale.weekdaysParse(input);
1341 if (typeof input === 'number') {
1342 return input;
1343 }
1344
1345 return null;
1346 }
1347
1348 function parseIsoWeekday(input, locale) {
1349 if (typeof input === 'string') {
1350 return locale.weekdaysParse(input) % 7 || 7;
1351 }
1352 return isNaN(input) ? null : input;
1353 }
1354
1355 // LOCALES
1356
1357 var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
1358 function localeWeekdays (m, format) {
1359 if (!m) {
1360 return isArray(this._weekdays) ? this._weekdays :
1361 this._weekdays['standalone'];
1362 }
1363 return isArray(this._weekdays) ? this._weekdays[m.day()] :
1364 this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];
1365 }
1366
1367 var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
1368 function localeWeekdaysShort (m) {
1369 return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;
1370 }
1371
1372 var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
1373 function localeWeekdaysMin (m) {
1374 return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;
1375 }
1376
1377 function handleStrictParse$1(weekdayName, format, strict) {
1378 var i, ii, mom, llc = weekdayName.toLocaleLowerCase();
1379 if (!this._weekdaysParse) {
1380 this._weekdaysParse = [];
1381 this._shortWeekdaysParse = [];
1382 this._minWeekdaysParse = [];
1383
1384 for (i = 0; i < 7; ++i) {
1385 mom = createUTC([2000, 1]).day(i);
1386 this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();
1387 this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();
1388 this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
1389 }
1390 }
1391
1392 if (strict) {
1393 if (format === 'dddd') {
1394 ii = indexOf$1.call(this._weekdaysParse, llc);
1395 return ii !== -1 ? ii : null;
1396 } else if (format === 'ddd') {
1397 ii = indexOf$1.call(this._shortWeekdaysParse, llc);
1398 return ii !== -1 ? ii : null;
1399 } else {
1400 ii = indexOf$1.call(this._minWeekdaysParse, llc);
1401 return ii !== -1 ? ii : null;
1402 }
1403 } else {
1404 if (format === 'dddd') {
1405 ii = indexOf$1.call(this._weekdaysParse, llc);
1406 if (ii !== -1) {
1407 return ii;
1408 }
1409 ii = indexOf$1.call(this._shortWeekdaysParse, llc);
1410 if (ii !== -1) {
1411 return ii;
1412 }
1413 ii = indexOf$1.call(this._minWeekdaysParse, llc);
1414 return ii !== -1 ? ii : null;
1415 } else if (format === 'ddd') {
1416 ii = indexOf$1.call(this._shortWeekdaysParse, llc);
1417 if (ii !== -1) {
1418 return ii;
1419 }
1420 ii = indexOf$1.call(this._weekdaysParse, llc);
1421 if (ii !== -1) {
1422 return ii;
1423 }
1424 ii = indexOf$1.call(this._minWeekdaysParse, llc);
1425 return ii !== -1 ? ii : null;
1426 } else {
1427 ii = indexOf$1.call(this._minWeekdaysParse, llc);
1428 if (ii !== -1) {
1429 return ii;
1430 }
1431 ii = indexOf$1.call(this._weekdaysParse, llc);
1432 if (ii !== -1) {
1433 return ii;
1434 }
1435 ii = indexOf$1.call(this._shortWeekdaysParse, llc);
1436 return ii !== -1 ? ii : null;
1437 }
1438 }
1439 }
1440
1441 function localeWeekdaysParse (weekdayName, format, strict) {
1442 var i, mom, regex;
1443
1444 if (this._weekdaysParseExact) {
1445 return handleStrictParse$1.call(this, weekdayName, format, strict);
1446 }
1447
1448 if (!this._weekdaysParse) {
1449 this._weekdaysParse = [];
1450 this._minWeekdaysParse = [];
1451 this._shortWeekdaysParse = [];
1452 this._fullWeekdaysParse = [];
1453 }
1454
1455 for (i = 0; i < 7; i++) {
1456 // make the regex if we don't have it already
1457
1458 mom = createUTC([2000, 1]).day(i);
1459 if (strict && !this._fullWeekdaysParse[i]) {
1460 this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i');
1461 this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i');
1462 this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i');
1463 }
1464 if (!this._weekdaysParse[i]) {
1465 regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
1466 this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
1467 }
1468 // test the regex
1469 if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {
1470 return i;
1471 } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {
1472 return i;
1473 } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {
1474 return i;
1475 } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
1476 return i;
1477 }
1478 }
1479 }
1480
1481 // MOMENTS
1482
1483 function getSetDayOfWeek (input) {
1484 if (!this.isValid()) {
1485 return input != null ? this : NaN;
1486 }
1487 var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
1488 if (input != null) {
1489 input = parseWeekday(input, this.localeData());
1490 return this.add(input - day, 'd');
1491 } else {
1492 return day;
1493 }
1494 }
1495
1496 function getSetLocaleDayOfWeek (input) {
1497 if (!this.isValid()) {
1498 return input != null ? this : NaN;
1499 }
1500 var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
1501 return input == null ? weekday : this.add(input - weekday, 'd');
1502 }
1503
1504 function getSetISODayOfWeek (input) {
1505 if (!this.isValid()) {
1506 return input != null ? this : NaN;
1507 }
1508
1509 // behaves the same as moment#day except
1510 // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
1511 // as a setter, sunday should belong to the previous week.
1512
1513 if (input != null) {
1514 var weekday = parseIsoWeekday(input, this.localeData());
1515 return this.day(this.day() % 7 ? weekday : weekday - 7);
1516 } else {
1517 return this.day() || 7;
1518 }
1519 }
1520
1521 var defaultWeekdaysRegex = matchWord;
1522 function weekdaysRegex (isStrict) {
1523 if (this._weekdaysParseExact) {
1524 if (!hasOwnProp(this, '_weekdaysRegex')) {
1525 computeWeekdaysParse.call(this);
1526 }
1527 if (isStrict) {
1528 return this._weekdaysStrictRegex;
1529 } else {
1530 return this._weekdaysRegex;
1531 }
1532 } else {
1533 if (!hasOwnProp(this, '_weekdaysRegex')) {
1534 this._weekdaysRegex = defaultWeekdaysRegex;
1535 }
1536 return this._weekdaysStrictRegex && isStrict ?
1537 this._weekdaysStrictRegex : this._weekdaysRegex;
1538 }
1539 }
1540
1541 var defaultWeekdaysShortRegex = matchWord;
1542 function weekdaysShortRegex (isStrict) {
1543 if (this._weekdaysParseExact) {
1544 if (!hasOwnProp(this, '_weekdaysRegex')) {
1545 computeWeekdaysParse.call(this);
1546 }
1547 if (isStrict) {
1548 return this._weekdaysShortStrictRegex;
1549 } else {
1550 return this._weekdaysShortRegex;
1551 }
1552 } else {
1553 if (!hasOwnProp(this, '_weekdaysShortRegex')) {
1554 this._weekdaysShortRegex = defaultWeekdaysShortRegex;
1555 }
1556 return this._weekdaysShortStrictRegex && isStrict ?
1557 this._weekdaysShortStrictRegex : this._weekdaysShortRegex;
1558 }
1559 }
1560
1561 var defaultWeekdaysMinRegex = matchWord;
1562 function weekdaysMinRegex (isStrict) {
1563 if (this._weekdaysParseExact) {
1564 if (!hasOwnProp(this, '_weekdaysRegex')) {
1565 computeWeekdaysParse.call(this);
1566 }
1567 if (isStrict) {
1568 return this._weekdaysMinStrictRegex;
1569 } else {
1570 return this._weekdaysMinRegex;
1571 }
1572 } else {
1573 if (!hasOwnProp(this, '_weekdaysMinRegex')) {
1574 this._weekdaysMinRegex = defaultWeekdaysMinRegex;
1575 }
1576 return this._weekdaysMinStrictRegex && isStrict ?
1577 this._weekdaysMinStrictRegex : this._weekdaysMinRegex;
1578 }
1579 }
1580
1581
1582 function computeWeekdaysParse () {
1583 function cmpLenRev(a, b) {
1584 return b.length - a.length;
1585 }
1586
1587 var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],
1588 i, mom, minp, shortp, longp;
1589 for (i = 0; i < 7; i++) {
1590 // make the regex if we don't have it already
1591 mom = createUTC([2000, 1]).day(i);
1592 minp = this.weekdaysMin(mom, '');
1593 shortp = this.weekdaysShort(mom, '');
1594 longp = this.weekdays(mom, '');
1595 minPieces.push(minp);
1596 shortPieces.push(shortp);
1597 longPieces.push(longp);
1598 mixedPieces.push(minp);
1599 mixedPieces.push(shortp);
1600 mixedPieces.push(longp);
1601 }
1602 // Sorting makes sure if one weekday (or abbr) is a prefix of another it
1603 // will match the longer piece.
1604 minPieces.sort(cmpLenRev);
1605 shortPieces.sort(cmpLenRev);
1606 longPieces.sort(cmpLenRev);
1607 mixedPieces.sort(cmpLenRev);
1608 for (i = 0; i < 7; i++) {
1609 shortPieces[i] = regexEscape(shortPieces[i]);
1610 longPieces[i] = regexEscape(longPieces[i]);
1611 mixedPieces[i] = regexEscape(mixedPieces[i]);
1612 }
1613
1614 this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1615 this._weekdaysShortRegex = this._weekdaysRegex;
1616 this._weekdaysMinRegex = this._weekdaysRegex;
1617
1618 this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
1619 this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
1620 this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');
1621 }
1622
1623 // FORMATTING
1624
1625 function hFormat() {
1626 return this.hours() % 12 || 12;
1627 }
1628
1629 function kFormat() {
1630 return this.hours() || 24;
1631 }
1632
1633 addFormatToken('H', ['HH', 2], 0, 'hour');
1634 addFormatToken('h', ['hh', 2], 0, hFormat);
1635 addFormatToken('k', ['kk', 2], 0, kFormat);
1636
1637 addFormatToken('hmm', 0, 0, function () {
1638 return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
1639 });
1640
1641 addFormatToken('hmmss', 0, 0, function () {
1642 return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +
1643 zeroFill(this.seconds(), 2);
1644 });
1645
1646 addFormatToken('Hmm', 0, 0, function () {
1647 return '' + this.hours() + zeroFill(this.minutes(), 2);
1648 });
1649
1650 addFormatToken('Hmmss', 0, 0, function () {
1651 return '' + this.hours() + zeroFill(this.minutes(), 2) +
1652 zeroFill(this.seconds(), 2);
1653 });
1654
1655 function meridiem (token, lowercase) {
1656 addFormatToken(token, 0, 0, function () {
1657 return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
1658 });
1659 }
1660
1661 meridiem('a', true);
1662 meridiem('A', false);
1663
1664 // ALIASES
1665
1666 addUnitAlias('hour', 'h');
1667
1668 // PRIORITY
1669 addUnitPriority('hour', 13);
1670
1671 // PARSING
1672
1673 function matchMeridiem (isStrict, locale) {
1674 return locale._meridiemParse;
1675 }
1676
1677 addRegexToken('a', matchMeridiem);
1678 addRegexToken('A', matchMeridiem);
1679 addRegexToken('H', match1to2);
1680 addRegexToken('h', match1to2);
1681 addRegexToken('k', match1to2);
1682 addRegexToken('HH', match1to2, match2);
1683 addRegexToken('hh', match1to2, match2);
1684 addRegexToken('kk', match1to2, match2);
1685
1686 addRegexToken('hmm', match3to4);
1687 addRegexToken('hmmss', match5to6);
1688 addRegexToken('Hmm', match3to4);
1689 addRegexToken('Hmmss', match5to6);
1690
1691 addParseToken(['H', 'HH'], HOUR);
1692 addParseToken(['k', 'kk'], function (input, array, config) {
1693 var kInput = toInt(input);
1694 array[HOUR] = kInput === 24 ? 0 : kInput;
1695 });
1696 addParseToken(['a', 'A'], function (input, array, config) {
1697 config._isPm = config._locale.isPM(input);
1698 config._meridiem = input;
1699 });
1700 addParseToken(['h', 'hh'], function (input, array, config) {
1701 array[HOUR] = toInt(input);
1702 getParsingFlags(config).bigHour = true;
1703 });
1704 addParseToken('hmm', function (input, array, config) {
1705 var pos = input.length - 2;
1706 array[HOUR] = toInt(input.substr(0, pos));
1707 array[MINUTE] = toInt(input.substr(pos));
1708 getParsingFlags(config).bigHour = true;
1709 });
1710 addParseToken('hmmss', function (input, array, config) {
1711 var pos1 = input.length - 4;
1712 var pos2 = input.length - 2;
1713 array[HOUR] = toInt(input.substr(0, pos1));
1714 array[MINUTE] = toInt(input.substr(pos1, 2));
1715 array[SECOND] = toInt(input.substr(pos2));
1716 getParsingFlags(config).bigHour = true;
1717 });
1718 addParseToken('Hmm', function (input, array, config) {
1719 var pos = input.length - 2;
1720 array[HOUR] = toInt(input.substr(0, pos));
1721 array[MINUTE] = toInt(input.substr(pos));
1722 });
1723 addParseToken('Hmmss', function (input, array, config) {
1724 var pos1 = input.length - 4;
1725 var pos2 = input.length - 2;
1726 array[HOUR] = toInt(input.substr(0, pos1));
1727 array[MINUTE] = toInt(input.substr(pos1, 2));
1728 array[SECOND] = toInt(input.substr(pos2));
1729 });
1730
1731 // LOCALES
1732
1733 function localeIsPM (input) {
1734 // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
1735 // Using charAt should be more compatible.
1736 return ((input + '').toLowerCase().charAt(0) === 'p');
1737 }
1738
1739 var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
1740 function localeMeridiem (hours, minutes, isLower) {
1741 if (hours > 11) {
1742 return isLower ? 'pm' : 'PM';
1743 } else {
1744 return isLower ? 'am' : 'AM';
1745 }
1746 }
1747
1748
1749 // MOMENTS
1750
1751 // Setting the hour should keep the time, because the user explicitly
1752 // specified which hour he wants. So trying to maintain the same hour (in
1753 // a new timezone) makes sense. Adding/subtracting hours does not follow
1754 // this rule.
1755 var getSetHour = makeGetSet('Hours', true);
1756
1757 // months
1758 // week
1759 // weekdays
1760 // meridiem
1761 var baseConfig = {
1762 calendar: defaultCalendar,
1763 longDateFormat: defaultLongDateFormat,
1764 invalidDate: defaultInvalidDate,
1765 ordinal: defaultOrdinal,
1766 dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
1767 relativeTime: defaultRelativeTime,
1768
1769 months: defaultLocaleMonths,
1770 monthsShort: defaultLocaleMonthsShort,
1771
1772 week: defaultLocaleWeek,
1773
1774 weekdays: defaultLocaleWeekdays,
1775 weekdaysMin: defaultLocaleWeekdaysMin,
1776 weekdaysShort: defaultLocaleWeekdaysShort,
1777
1778 meridiemParse: defaultLocaleMeridiemParse
1779 };
1780
1781 // internal storage for locale config files
1782 var locales = {};
1783 var localeFamilies = {};
1784 var globalLocale;
1785
1786 function normalizeLocale(key) {
1787 return key ? key.toLowerCase().replace('_', '-') : key;
1788 }
1789
1790 // pick the locale from the array
1791 // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
1792 // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
1793 function chooseLocale(names) {
1794 var i = 0, j, next, locale, split;
1795
1796 while (i < names.length) {
1797 split = normalizeLocale(names[i]).split('-');
1798 j = split.length;
1799 next = normalizeLocale(names[i + 1]);
1800 next = next ? next.split('-') : null;
1801 while (j > 0) {
1802 locale = loadLocale(split.slice(0, j).join('-'));
1803 if (locale) {
1804 return locale;
1805 }
1806 if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
1807 //the next array item is better than a shallower substring of this one
1808 break;
1809 }
1810 j--;
1811 }
1812 i++;
1813 }
1814 return null;
1815 }
1816
1817 function loadLocale(name) {
1818 var oldLocale = null;
1819 // TODO: Find a better way to register and load all the locales in Node
1820 if (!locales[name] && (typeof module !== 'undefined') &&
1821 module && module.exports) {
1822 try {
1823 oldLocale = globalLocale._abbr;
1824 require('./locale/' + name);
1825 // because defineLocale currently also sets the global locale, we
1826 // want to undo that for lazy loaded locales
1827 getSetGlobalLocale(oldLocale);
1828 } catch (e) { }
1829 }
1830 return locales[name];
1831 }
1832
1833 // This function will load locale and then set the global locale. If
1834 // no arguments are passed in, it will simply return the current global
1835 // locale key.
1836 function getSetGlobalLocale (key, values) {
1837 var data;
1838 if (key) {
1839 if (isUndefined(values)) {
1840 data = getLocale(key);
1841 }
1842 else {
1843 data = defineLocale(key, values);
1844 }
1845
1846 if (data) {
1847 // moment.duration._locale = moment._locale = data;
1848 globalLocale = data;
1849 }
1850 }
1851
1852 return globalLocale._abbr;
1853 }
1854
1855 function defineLocale (name, config) {
1856 if (config !== null) {
1857 var parentConfig = baseConfig;
1858 config.abbr = name;
1859 if (locales[name] != null) {
1860 deprecateSimple('defineLocaleOverride',
1861 'use moment.updateLocale(localeName, config) to change ' +
1862 'an existing locale. moment.defineLocale(localeName, ' +
1863 'config) should only be used for creating a new locale ' +
1864 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');
1865 parentConfig = locales[name]._config;
1866 } else if (config.parentLocale != null) {
1867 if (locales[config.parentLocale] != null) {
1868 parentConfig = locales[config.parentLocale]._config;
1869 } else {
1870 if (!localeFamilies[config.parentLocale]) {
1871 localeFamilies[config.parentLocale] = [];
1872 }
1873 localeFamilies[config.parentLocale].push({
1874 name: name,
1875 config: config
1876 });
1877 return null;
1878 }
1879 }
1880 locales[name] = new Locale(mergeConfigs(parentConfig, config));
1881
1882 if (localeFamilies[name]) {
1883 localeFamilies[name].forEach(function (x) {
1884 defineLocale(x.name, x.config);
1885 });
1886 }
1887
1888 // backwards compat for now: also set the locale
1889 // make sure we set the locale AFTER all child locales have been
1890 // created, so we won't end up with the child locale set.
1891 getSetGlobalLocale(name);
1892
1893
1894 return locales[name];
1895 } else {
1896 // useful for testing
1897 delete locales[name];
1898 return null;
1899 }
1900 }
1901
1902 function updateLocale(name, config) {
1903 if (config != null) {
1904 var locale, parentConfig = baseConfig;
1905 // MERGE
1906 if (locales[name] != null) {
1907 parentConfig = locales[name]._config;
1908 }
1909 config = mergeConfigs(parentConfig, config);
1910 locale = new Locale(config);
1911 locale.parentLocale = locales[name];
1912 locales[name] = locale;
1913
1914 // backwards compat for now: also set the locale
1915 getSetGlobalLocale(name);
1916 } else {
1917 // pass null for config to unupdate, useful for tests
1918 if (locales[name] != null) {
1919 if (locales[name].parentLocale != null) {
1920 locales[name] = locales[name].parentLocale;
1921 } else if (locales[name] != null) {
1922 delete locales[name];
1923 }
1924 }
1925 }
1926 return locales[name];
1927 }
1928
1929 // returns locale data
1930 function getLocale (key) {
1931 var locale;
1932
1933 if (key && key._locale && key._locale._abbr) {
1934 key = key._locale._abbr;
1935 }
1936
1937 if (!key) {
1938 return globalLocale;
1939 }
1940
1941 if (!isArray(key)) {
1942 //short-circuit everything else
1943 locale = loadLocale(key);
1944 if (locale) {
1945 return locale;
1946 }
1947 key = [key];
1948 }
1949
1950 return chooseLocale(key);
1951 }
1952
1953 function listLocales() {
1954 return keys$1(locales);
1955 }
1956
1957 function checkOverflow (m) {
1958 var overflow;
1959 var a = m._a;
1960
1961 if (a && getParsingFlags(m).overflow === -2) {
1962 overflow =
1963 a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :
1964 a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
1965 a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
1966 a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :
1967 a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :
1968 a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
1969 -1;
1970
1971 if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
1972 overflow = DATE;
1973 }
1974 if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
1975 overflow = WEEK;
1976 }
1977 if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
1978 overflow = WEEKDAY;
1979 }
1980
1981 getParsingFlags(m).overflow = overflow;
1982 }
1983
1984 return m;
1985 }
1986
1987 // iso 8601 regex
1988 // 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)
1989 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)?)?$/;
1990 var 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)?)?$/;
1991
1992 var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/;
1993
1994 var isoDates = [
1995 ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
1996 ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
1997 ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
1998 ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
1999 ['YYYY-DDD', /\d{4}-\d{3}/],
2000 ['YYYY-MM', /\d{4}-\d\d/, false],
2001 ['YYYYYYMMDD', /[+-]\d{10}/],
2002 ['YYYYMMDD', /\d{8}/],
2003 // YYYYMM is NOT allowed by the standard
2004 ['GGGG[W]WWE', /\d{4}W\d{3}/],
2005 ['GGGG[W]WW', /\d{4}W\d{2}/, false],
2006 ['YYYYDDD', /\d{7}/]
2007 ];
2008
2009 // iso time formats and regexes
2010 var isoTimes = [
2011 ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
2012 ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
2013 ['HH:mm:ss', /\d\d:\d\d:\d\d/],
2014 ['HH:mm', /\d\d:\d\d/],
2015 ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
2016 ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
2017 ['HHmmss', /\d\d\d\d\d\d/],
2018 ['HHmm', /\d\d\d\d/],
2019 ['HH', /\d\d/]
2020 ];
2021
2022 var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
2023
2024 // date from iso format
2025 function configFromISO(config) {
2026 var i, l,
2027 string = config._i,
2028 match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
2029 allowTime, dateFormat, timeFormat, tzFormat;
2030
2031 if (match) {
2032 getParsingFlags(config).iso = true;
2033
2034 for (i = 0, l = isoDates.length; i < l; i++) {
2035 if (isoDates[i][1].exec(match[1])) {
2036 dateFormat = isoDates[i][0];
2037 allowTime = isoDates[i][2] !== false;
2038 break;
2039 }
2040 }
2041 if (dateFormat == null) {
2042 config._isValid = false;
2043 return;
2044 }
2045 if (match[3]) {
2046 for (i = 0, l = isoTimes.length; i < l; i++) {
2047 if (isoTimes[i][1].exec(match[3])) {
2048 // match[2] should be 'T' or space
2049 timeFormat = (match[2] || ' ') + isoTimes[i][0];
2050 break;
2051 }
2052 }
2053 if (timeFormat == null) {
2054 config._isValid = false;
2055 return;
2056 }
2057 }
2058 if (!allowTime && timeFormat != null) {
2059 config._isValid = false;
2060 return;
2061 }
2062 if (match[4]) {
2063 if (tzRegex.exec(match[4])) {
2064 tzFormat = 'Z';
2065 } else {
2066 config._isValid = false;
2067 return;
2068 }
2069 }
2070 config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
2071 configFromStringAndFormat(config);
2072 } else {
2073 config._isValid = false;
2074 }
2075 }
2076
2077 // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
2078 var basicRfcRegex = /^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d?\d\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(?:\d\d)?\d\d\s)(\d\d:\d\d)(\:\d\d)?(\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\d{4}))$/;
2079
2080 // date and time from ref 2822 format
2081 function configFromRFC2822(config) {
2082 var string, match, dayFormat,
2083 dateFormat, timeFormat, tzFormat;
2084 var timezones = {
2085 ' GMT': ' +0000',
2086 ' EDT': ' -0400',
2087 ' EST': ' -0500',
2088 ' CDT': ' -0500',
2089 ' CST': ' -0600',
2090 ' MDT': ' -0600',
2091 ' MST': ' -0700',
2092 ' PDT': ' -0700',
2093 ' PST': ' -0800'
2094 };
2095 var military = 'YXWVUTSRQPONZABCDEFGHIKLM';
2096 var timezone, timezoneIndex;
2097
2098 string = config._i
2099 .replace(/\([^\)]*\)|[\n\t]/g, ' ') // Remove comments and folding whitespace
2100 .replace(/(\s\s+)/g, ' ') // Replace multiple-spaces with a single space
2101 .replace(/^\s|\s$/g, ''); // Remove leading and trailing spaces
2102 match = basicRfcRegex.exec(string);
2103
2104 if (match) {
2105 dayFormat = match[1] ? 'ddd' + ((match[1].length === 5) ? ', ' : ' ') : '';
2106 dateFormat = 'D MMM ' + ((match[2].length > 10) ? 'YYYY ' : 'YY ');
2107 timeFormat = 'HH:mm' + (match[4] ? ':ss' : '');
2108
2109 // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.
2110 if (match[1]) { // day of week given
2111 var momentDate = new Date(match[2]);
2112 var momentDay = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][momentDate.getDay()];
2113
2114 if (match[1].substr(0,3) !== momentDay) {
2115 getParsingFlags(config).weekdayMismatch = true;
2116 config._isValid = false;
2117 return;
2118 }
2119 }
2120
2121 switch (match[5].length) {
2122 case 2: // military
2123 if (timezoneIndex === 0) {
2124 timezone = ' +0000';
2125 } else {
2126 timezoneIndex = military.indexOf(match[5][1].toUpperCase()) - 12;
2127 timezone = ((timezoneIndex < 0) ? ' -' : ' +') +
2128 (('' + timezoneIndex).replace(/^-?/, '0')).match(/..$/)[0] + '00';
2129 }
2130 break;
2131 case 4: // Zone
2132 timezone = timezones[match[5]];
2133 break;
2134 default: // UT or +/-9999
2135 timezone = timezones[' GMT'];
2136 }
2137 match[5] = timezone;
2138 config._i = match.splice(1).join('');
2139 tzFormat = ' ZZ';
2140 config._f = dayFormat + dateFormat + timeFormat + tzFormat;
2141 configFromStringAndFormat(config);
2142 getParsingFlags(config).rfc2822 = true;
2143 } else {
2144 config._isValid = false;
2145 }
2146 }
2147
2148 // date from iso format or fallback
2149 function configFromString(config) {
2150 var matched = aspNetJsonRegex.exec(config._i);
2151
2152 if (matched !== null) {
2153 config._d = new Date(+matched[1]);
2154 return;
2155 }
2156
2157 configFromISO(config);
2158 if (config._isValid === false) {
2159 delete config._isValid;
2160 } else {
2161 return;
2162 }
2163
2164 configFromRFC2822(config);
2165 if (config._isValid === false) {
2166 delete config._isValid;
2167 } else {
2168 return;
2169 }
2170
2171 // Final attempt, use Input Fallback
2172 hooks.createFromInputFallback(config);
2173 }
2174
2175 hooks.createFromInputFallback = deprecate(
2176 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
2177 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
2178 'discouraged and will be removed in an upcoming major release. Please refer to ' +
2179 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',
2180 function (config) {
2181 config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
2182 }
2183 );
2184
2185 // Pick the first defined of two or three arguments.
2186 function defaults(a, b, c) {
2187 if (a != null) {
2188 return a;
2189 }
2190 if (b != null) {
2191 return b;
2192 }
2193 return c;
2194 }
2195
2196 function currentDateArray(config) {
2197 // hooks is actually the exported moment object
2198 var nowValue = new Date(hooks.now());
2199 if (config._useUTC) {
2200 return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];
2201 }
2202 return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
2203 }
2204
2205 // convert an array to a date.
2206 // the array should mirror the parameters below
2207 // note: all values past the year are optional and will default to the lowest possible value.
2208 // [year, month, day , hour, minute, second, millisecond]
2209 function configFromArray (config) {
2210 var i, date, input = [], currentDate, yearToUse;
2211
2212 if (config._d) {
2213 return;
2214 }
2215
2216 currentDate = currentDateArray(config);
2217
2218 //compute day of the year from weeks and weekdays
2219 if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
2220 dayOfYearFromWeekInfo(config);
2221 }
2222
2223 //if the day of the year is set, figure out what it is
2224 if (config._dayOfYear != null) {
2225 yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
2226
2227 if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {
2228 getParsingFlags(config)._overflowDayOfYear = true;
2229 }
2230
2231 date = createUTCDate(yearToUse, 0, config._dayOfYear);
2232 config._a[MONTH] = date.getUTCMonth();
2233 config._a[DATE] = date.getUTCDate();
2234 }
2235
2236 // Default to current date.
2237 // * if no year, month, day of month are given, default to today
2238 // * if day of month is given, default month and year
2239 // * if month is given, default only year
2240 // * if year is given, don't default anything
2241 for (i = 0; i < 3 && config._a[i] == null; ++i) {
2242 config._a[i] = input[i] = currentDate[i];
2243 }
2244
2245 // Zero out whatever was not defaulted, including time
2246 for (; i < 7; i++) {
2247 config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
2248 }
2249
2250 // Check for 24:00:00.000
2251 if (config._a[HOUR] === 24 &&
2252 config._a[MINUTE] === 0 &&
2253 config._a[SECOND] === 0 &&
2254 config._a[MILLISECOND] === 0) {
2255 config._nextDay = true;
2256 config._a[HOUR] = 0;
2257 }
2258
2259 config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
2260 // Apply timezone offset from input. The actual utcOffset can be changed
2261 // with parseZone.
2262 if (config._tzm != null) {
2263 config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2264 }
2265
2266 if (config._nextDay) {
2267 config._a[HOUR] = 24;
2268 }
2269 }
2270
2271 function dayOfYearFromWeekInfo(config) {
2272 var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;
2273
2274 w = config._w;
2275 if (w.GG != null || w.W != null || w.E != null) {
2276 dow = 1;
2277 doy = 4;
2278
2279 // TODO: We need to take the current isoWeekYear, but that depends on
2280 // how we interpret now (local, utc, fixed offset). So create
2281 // a now version of current config (take local/utc/offset flags, and
2282 // create now).
2283 weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);
2284 week = defaults(w.W, 1);
2285 weekday = defaults(w.E, 1);
2286 if (weekday < 1 || weekday > 7) {
2287 weekdayOverflow = true;
2288 }
2289 } else {
2290 dow = config._locale._week.dow;
2291 doy = config._locale._week.doy;
2292
2293 var curWeek = weekOfYear(createLocal(), dow, doy);
2294
2295 weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
2296
2297 // Default to current week.
2298 week = defaults(w.w, curWeek.week);
2299
2300 if (w.d != null) {
2301 // weekday -- low day numbers are considered next week
2302 weekday = w.d;
2303 if (weekday < 0 || weekday > 6) {
2304 weekdayOverflow = true;
2305 }
2306 } else if (w.e != null) {
2307 // local weekday -- counting starts from begining of week
2308 weekday = w.e + dow;
2309 if (w.e < 0 || w.e > 6) {
2310 weekdayOverflow = true;
2311 }
2312 } else {
2313 // default to begining of week
2314 weekday = dow;
2315 }
2316 }
2317 if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
2318 getParsingFlags(config)._overflowWeeks = true;
2319 } else if (weekdayOverflow != null) {
2320 getParsingFlags(config)._overflowWeekday = true;
2321 } else {
2322 temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
2323 config._a[YEAR] = temp.year;
2324 config._dayOfYear = temp.dayOfYear;
2325 }
2326 }
2327
2328 // constant that refers to the ISO standard
2329 hooks.ISO_8601 = function () {};
2330
2331 // constant that refers to the RFC 2822 form
2332 hooks.RFC_2822 = function () {};
2333
2334 // date from string and format string
2335 function configFromStringAndFormat(config) {
2336 // TODO: Move this to another part of the creation flow to prevent circular deps
2337 if (config._f === hooks.ISO_8601) {
2338 configFromISO(config);
2339 return;
2340 }
2341 if (config._f === hooks.RFC_2822) {
2342 configFromRFC2822(config);
2343 return;
2344 }
2345 config._a = [];
2346 getParsingFlags(config).empty = true;
2347
2348 // This array is used to make a Date, either with `new Date` or `Date.UTC`
2349 var string = '' + config._i,
2350 i, parsedInput, tokens, token, skipped,
2351 stringLength = string.length,
2352 totalParsedInputLength = 0;
2353
2354 tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
2355
2356 for (i = 0; i < tokens.length; i++) {
2357 token = tokens[i];
2358 parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
2359 // console.log('token', token, 'parsedInput', parsedInput,
2360 // 'regex', getParseRegexForToken(token, config));
2361 if (parsedInput) {
2362 skipped = string.substr(0, string.indexOf(parsedInput));
2363 if (skipped.length > 0) {
2364 getParsingFlags(config).unusedInput.push(skipped);
2365 }
2366 string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
2367 totalParsedInputLength += parsedInput.length;
2368 }
2369 // don't parse if it's not a known token
2370 if (formatTokenFunctions[token]) {
2371 if (parsedInput) {
2372 getParsingFlags(config).empty = false;
2373 }
2374 else {
2375 getParsingFlags(config).unusedTokens.push(token);
2376 }
2377 addTimeToArrayFromToken(token, parsedInput, config);
2378 }
2379 else if (config._strict && !parsedInput) {
2380 getParsingFlags(config).unusedTokens.push(token);
2381 }
2382 }
2383
2384 // add remaining unparsed input length to the string
2385 getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
2386 if (string.length > 0) {
2387 getParsingFlags(config).unusedInput.push(string);
2388 }
2389
2390 // clear _12h flag if hour is <= 12
2391 if (config._a[HOUR] <= 12 &&
2392 getParsingFlags(config).bigHour === true &&
2393 config._a[HOUR] > 0) {
2394 getParsingFlags(config).bigHour = undefined;
2395 }
2396
2397 getParsingFlags(config).parsedDateParts = config._a.slice(0);
2398 getParsingFlags(config).meridiem = config._meridiem;
2399 // handle meridiem
2400 config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
2401
2402 configFromArray(config);
2403 checkOverflow(config);
2404 }
2405
2406
2407 function meridiemFixWrap (locale, hour, meridiem) {
2408 var isPm;
2409
2410 if (meridiem == null) {
2411 // nothing to do
2412 return hour;
2413 }
2414 if (locale.meridiemHour != null) {
2415 return locale.meridiemHour(hour, meridiem);
2416 } else if (locale.isPM != null) {
2417 // Fallback
2418 isPm = locale.isPM(meridiem);
2419 if (isPm && hour < 12) {
2420 hour += 12;
2421 }
2422 if (!isPm && hour === 12) {
2423 hour = 0;
2424 }
2425 return hour;
2426 } else {
2427 // this is not supposed to happen
2428 return hour;
2429 }
2430 }
2431
2432 // date from string and array of format strings
2433 function configFromStringAndArray(config) {
2434 var tempConfig,
2435 bestMoment,
2436
2437 scoreToBeat,
2438 i,
2439 currentScore;
2440
2441 if (config._f.length === 0) {
2442 getParsingFlags(config).invalidFormat = true;
2443 config._d = new Date(NaN);
2444 return;
2445 }
2446
2447 for (i = 0; i < config._f.length; i++) {
2448 currentScore = 0;
2449 tempConfig = copyConfig({}, config);
2450 if (config._useUTC != null) {
2451 tempConfig._useUTC = config._useUTC;
2452 }
2453 tempConfig._f = config._f[i];
2454 configFromStringAndFormat(tempConfig);
2455
2456 if (!isValid(tempConfig)) {
2457 continue;
2458 }
2459
2460 // if there is any input that was not parsed add a penalty for that format
2461 currentScore += getParsingFlags(tempConfig).charsLeftOver;
2462
2463 //or tokens
2464 currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
2465
2466 getParsingFlags(tempConfig).score = currentScore;
2467
2468 if (scoreToBeat == null || currentScore < scoreToBeat) {
2469 scoreToBeat = currentScore;
2470 bestMoment = tempConfig;
2471 }
2472 }
2473
2474 extend(config, bestMoment || tempConfig);
2475 }
2476
2477 function configFromObject(config) {
2478 if (config._d) {
2479 return;
2480 }
2481
2482 var i = normalizeObjectUnits(config._i);
2483 config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {
2484 return obj && parseInt(obj, 10);
2485 });
2486
2487 configFromArray(config);
2488 }
2489
2490 function createFromConfig (config) {
2491 var res = new Moment(checkOverflow(prepareConfig(config)));
2492 if (res._nextDay) {
2493 // Adding is smart enough around DST
2494 res.add(1, 'd');
2495 res._nextDay = undefined;
2496 }
2497
2498 return res;
2499 }
2500
2501 function prepareConfig (config) {
2502 var input = config._i,
2503 format = config._f;
2504
2505 config._locale = config._locale || getLocale(config._l);
2506
2507 if (input === null || (format === undefined && input === '')) {
2508 return createInvalid({nullInput: true});
2509 }
2510
2511 if (typeof input === 'string') {
2512 config._i = input = config._locale.preparse(input);
2513 }
2514
2515 if (isMoment(input)) {
2516 return new Moment(checkOverflow(input));
2517 } else if (isDate(input)) {
2518 config._d = input;
2519 } else if (isArray(format)) {
2520 configFromStringAndArray(config);
2521 } else if (format) {
2522 configFromStringAndFormat(config);
2523 } else {
2524 configFromInput(config);
2525 }
2526
2527 if (!isValid(config)) {
2528 config._d = null;
2529 }
2530
2531 return config;
2532 }
2533
2534 function configFromInput(config) {
2535 var input = config._i;
2536 if (isUndefined(input)) {
2537 config._d = new Date(hooks.now());
2538 } else if (isDate(input)) {
2539 config._d = new Date(input.valueOf());
2540 } else if (typeof input === 'string') {
2541 configFromString(config);
2542 } else if (isArray(input)) {
2543 config._a = map(input.slice(0), function (obj) {
2544 return parseInt(obj, 10);
2545 });
2546 configFromArray(config);
2547 } else if (isObject(input)) {
2548 configFromObject(config);
2549 } else if (isNumber(input)) {
2550 // from milliseconds
2551 config._d = new Date(input);
2552 } else {
2553 hooks.createFromInputFallback(config);
2554 }
2555 }
2556
2557 function createLocalOrUTC (input, format, locale, strict, isUTC) {
2558 var c = {};
2559
2560 if (locale === true || locale === false) {
2561 strict = locale;
2562 locale = undefined;
2563 }
2564
2565 if ((isObject(input) && isObjectEmpty(input)) ||
2566 (isArray(input) && input.length === 0)) {
2567 input = undefined;
2568 }
2569 // object construction must be done this way.
2570 // https://github.com/moment/moment/issues/1423
2571 c._isAMomentObject = true;
2572 c._useUTC = c._isUTC = isUTC;
2573 c._l = locale;
2574 c._i = input;
2575 c._f = format;
2576 c._strict = strict;
2577
2578 return createFromConfig(c);
2579 }
2580
2581 function createLocal (input, format, locale, strict) {
2582 return createLocalOrUTC(input, format, locale, strict, false);
2583 }
2584
2585 var prototypeMin = deprecate(
2586 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
2587 function () {
2588 var other = createLocal.apply(null, arguments);
2589 if (this.isValid() && other.isValid()) {
2590 return other < this ? this : other;
2591 } else {
2592 return createInvalid();
2593 }
2594 }
2595 );
2596
2597 var prototypeMax = deprecate(
2598 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
2599 function () {
2600 var other = createLocal.apply(null, arguments);
2601 if (this.isValid() && other.isValid()) {
2602 return other > this ? this : other;
2603 } else {
2604 return createInvalid();
2605 }
2606 }
2607 );
2608
2609 // Pick a moment m from moments so that m[fn](other) is true for all
2610 // other. This relies on the function fn to be transitive.
2611 //
2612 // moments should either be an array of moment objects or an array, whose
2613 // first element is an array of moment objects.
2614 function pickBy(fn, moments) {
2615 var res, i;
2616 if (moments.length === 1 && isArray(moments[0])) {
2617 moments = moments[0];
2618 }
2619 if (!moments.length) {
2620 return createLocal();
2621 }
2622 res = moments[0];
2623 for (i = 1; i < moments.length; ++i) {
2624 if (!moments[i].isValid() || moments[i][fn](res)) {
2625 res = moments[i];
2626 }
2627 }
2628 return res;
2629 }
2630
2631 // TODO: Use [].sort instead?
2632 function min () {
2633 var args = [].slice.call(arguments, 0);
2634
2635 return pickBy('isBefore', args);
2636 }
2637
2638 function max () {
2639 var args = [].slice.call(arguments, 0);
2640
2641 return pickBy('isAfter', args);
2642 }
2643
2644 var now = function () {
2645 return Date.now ? Date.now() : +(new Date());
2646 };
2647
2648 var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];
2649
2650 function isDurationValid(m) {
2651 for (var key in m) {
2652 if (!(ordering.indexOf(key) !== -1 && (m[key] == null || !isNaN(m[key])))) {
2653 return false;
2654 }
2655 }
2656
2657 var unitHasDecimal = false;
2658 for (var i = 0; i < ordering.length; ++i) {
2659 if (m[ordering[i]]) {
2660 if (unitHasDecimal) {
2661 return false; // only allow non-integers for smallest unit
2662 }
2663 if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
2664 unitHasDecimal = true;
2665 }
2666 }
2667 }
2668
2669 return true;
2670 }
2671
2672 function isValid$1() {
2673 return this._isValid;
2674 }
2675
2676 function createInvalid$1() {
2677 return createDuration(NaN);
2678 }
2679
2680 function Duration (duration) {
2681 var normalizedInput = normalizeObjectUnits(duration),
2682 years = normalizedInput.year || 0,
2683 quarters = normalizedInput.quarter || 0,
2684 months = normalizedInput.month || 0,
2685 weeks = normalizedInput.week || 0,
2686 days = normalizedInput.day || 0,
2687 hours = normalizedInput.hour || 0,
2688 minutes = normalizedInput.minute || 0,
2689 seconds = normalizedInput.second || 0,
2690 milliseconds = normalizedInput.millisecond || 0;
2691
2692 this._isValid = isDurationValid(normalizedInput);
2693
2694 // representation for dateAddRemove
2695 this._milliseconds = +milliseconds +
2696 seconds * 1e3 + // 1000
2697 minutes * 6e4 + // 1000 * 60
2698 hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
2699 // Because of dateAddRemove treats 24 hours as different from a
2700 // day when working around DST, we need to store them separately
2701 this._days = +days +
2702 weeks * 7;
2703 // It is impossible translate months into days without knowing
2704 // which months you are are talking about, so we have to store
2705 // it separately.
2706 this._months = +months +
2707 quarters * 3 +
2708 years * 12;
2709
2710 this._data = {};
2711
2712 this._locale = getLocale();
2713
2714 this._bubble();
2715 }
2716
2717 function isDuration (obj) {
2718 return obj instanceof Duration;
2719 }
2720
2721 function absRound (number) {
2722 if (number < 0) {
2723 return Math.round(-1 * number) * -1;
2724 } else {
2725 return Math.round(number);
2726 }
2727 }
2728
2729 // FORMATTING
2730
2731 function offset (token, separator) {
2732 addFormatToken(token, 0, 0, function () {
2733 var offset = this.utcOffset();
2734 var sign = '+';
2735 if (offset < 0) {
2736 offset = -offset;
2737 sign = '-';
2738 }
2739 return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
2740 });
2741 }
2742
2743 offset('Z', ':');
2744 offset('ZZ', '');
2745
2746 // PARSING
2747
2748 addRegexToken('Z', matchShortOffset);
2749 addRegexToken('ZZ', matchShortOffset);
2750 addParseToken(['Z', 'ZZ'], function (input, array, config) {
2751 config._useUTC = true;
2752 config._tzm = offsetFromString(matchShortOffset, input);
2753 });
2754
2755 // HELPERS
2756
2757 // timezone chunker
2758 // '+10:00' > ['10', '00']
2759 // '-1530' > ['-15', '30']
2760 var chunkOffset = /([\+\-]|\d\d)/gi;
2761
2762 function offsetFromString(matcher, string) {
2763 var matches = (string || '').match(matcher);
2764
2765 if (matches === null) {
2766 return null;
2767 }
2768
2769 var chunk = matches[matches.length - 1] || [];
2770 var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
2771 var minutes = +(parts[1] * 60) + toInt(parts[2]);
2772
2773 return minutes === 0 ?
2774 0 :
2775 parts[0] === '+' ? minutes : -minutes;
2776 }
2777
2778 // Return a moment from input, that is local/utc/zone equivalent to model.
2779 function cloneWithOffset(input, model) {
2780 var res, diff;
2781 if (model._isUTC) {
2782 res = model.clone();
2783 diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();
2784 // Use low-level api, because this fn is low-level api.
2785 res._d.setTime(res._d.valueOf() + diff);
2786 hooks.updateOffset(res, false);
2787 return res;
2788 } else {
2789 return createLocal(input).local();
2790 }
2791 }
2792
2793 function getDateOffset (m) {
2794 // On Firefox.24 Date#getTimezoneOffset returns a floating point.
2795 // https://github.com/moment/moment/pull/1871
2796 return -Math.round(m._d.getTimezoneOffset() / 15) * 15;
2797 }
2798
2799 // HOOKS
2800
2801 // This function will be called whenever a moment is mutated.
2802 // It is intended to keep the offset in sync with the timezone.
2803 hooks.updateOffset = function () {};
2804
2805 // MOMENTS
2806
2807 // keepLocalTime = true means only change the timezone, without
2808 // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
2809 // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
2810 // +0200, so we adjust the time as needed, to be valid.
2811 //
2812 // Keeping the time actually adds/subtracts (one hour)
2813 // from the actual represented time. That is why we call updateOffset
2814 // a second time. In case it wants us to change the offset again
2815 // _changeInProgress == true case, then we have to adjust, because
2816 // there is no such time in the given timezone.
2817 function getSetOffset (input, keepLocalTime, keepMinutes) {
2818 var offset = this._offset || 0,
2819 localAdjust;
2820 if (!this.isValid()) {
2821 return input != null ? this : NaN;
2822 }
2823 if (input != null) {
2824 if (typeof input === 'string') {
2825 input = offsetFromString(matchShortOffset, input);
2826 if (input === null) {
2827 return this;
2828 }
2829 } else if (Math.abs(input) < 16 && !keepMinutes) {
2830 input = input * 60;
2831 }
2832 if (!this._isUTC && keepLocalTime) {
2833 localAdjust = getDateOffset(this);
2834 }
2835 this._offset = input;
2836 this._isUTC = true;
2837 if (localAdjust != null) {
2838 this.add(localAdjust, 'm');
2839 }
2840 if (offset !== input) {
2841 if (!keepLocalTime || this._changeInProgress) {
2842 addSubtract(this, createDuration(input - offset, 'm'), 1, false);
2843 } else if (!this._changeInProgress) {
2844 this._changeInProgress = true;
2845 hooks.updateOffset(this, true);
2846 this._changeInProgress = null;
2847 }
2848 }
2849 return this;
2850 } else {
2851 return this._isUTC ? offset : getDateOffset(this);
2852 }
2853 }
2854
2855 function getSetZone (input, keepLocalTime) {
2856 if (input != null) {
2857 if (typeof input !== 'string') {
2858 input = -input;
2859 }
2860
2861 this.utcOffset(input, keepLocalTime);
2862
2863 return this;
2864 } else {
2865 return -this.utcOffset();
2866 }
2867 }
2868
2869 function setOffsetToUTC (keepLocalTime) {
2870 return this.utcOffset(0, keepLocalTime);
2871 }
2872
2873 function setOffsetToLocal (keepLocalTime) {
2874 if (this._isUTC) {
2875 this.utcOffset(0, keepLocalTime);
2876 this._isUTC = false;
2877
2878 if (keepLocalTime) {
2879 this.subtract(getDateOffset(this), 'm');
2880 }
2881 }
2882 return this;
2883 }
2884
2885 function setOffsetToParsedOffset () {
2886 if (this._tzm != null) {
2887 this.utcOffset(this._tzm, false, true);
2888 } else if (typeof this._i === 'string') {
2889 var tZone = offsetFromString(matchOffset, this._i);
2890 if (tZone != null) {
2891 this.utcOffset(tZone);
2892 }
2893 else {
2894 this.utcOffset(0, true);
2895 }
2896 }
2897 return this;
2898 }
2899
2900 function hasAlignedHourOffset (input) {
2901 if (!this.isValid()) {
2902 return false;
2903 }
2904 input = input ? createLocal(input).utcOffset() : 0;
2905
2906 return (this.utcOffset() - input) % 60 === 0;
2907 }
2908
2909 function isDaylightSavingTime () {
2910 return (
2911 this.utcOffset() > this.clone().month(0).utcOffset() ||
2912 this.utcOffset() > this.clone().month(5).utcOffset()
2913 );
2914 }
2915
2916 function isDaylightSavingTimeShifted () {
2917 if (!isUndefined(this._isDSTShifted)) {
2918 return this._isDSTShifted;
2919 }
2920
2921 var c = {};
2922
2923 copyConfig(c, this);
2924 c = prepareConfig(c);
2925
2926 if (c._a) {
2927 var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
2928 this._isDSTShifted = this.isValid() &&
2929 compareArrays(c._a, other.toArray()) > 0;
2930 } else {
2931 this._isDSTShifted = false;
2932 }
2933
2934 return this._isDSTShifted;
2935 }
2936
2937 function isLocal () {
2938 return this.isValid() ? !this._isUTC : false;
2939 }
2940
2941 function isUtcOffset () {
2942 return this.isValid() ? this._isUTC : false;
2943 }
2944
2945 function isUtc () {
2946 return this.isValid() ? this._isUTC && this._offset === 0 : false;
2947 }
2948
2949 // ASP.NET json date format regex
2950 var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/;
2951
2952 // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
2953 // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
2954 // and further modified to allow for strings containing both week and day
2955 var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;
2956
2957 function createDuration (input, key) {
2958 var duration = input,
2959 // matching against regexp is expensive, do it on demand
2960 match = null,
2961 sign,
2962 ret,
2963 diffRes;
2964
2965 if (isDuration(input)) {
2966 duration = {
2967 ms : input._milliseconds,
2968 d : input._days,
2969 M : input._months
2970 };
2971 } else if (isNumber(input)) {
2972 duration = {};
2973 if (key) {
2974 duration[key] = input;
2975 } else {
2976 duration.milliseconds = input;
2977 }
2978 } else if (!!(match = aspNetRegex.exec(input))) {
2979 sign = (match[1] === '-') ? -1 : 1;
2980 duration = {
2981 y : 0,
2982 d : toInt(match[DATE]) * sign,
2983 h : toInt(match[HOUR]) * sign,
2984 m : toInt(match[MINUTE]) * sign,
2985 s : toInt(match[SECOND]) * sign,
2986 ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match
2987 };
2988 } else if (!!(match = isoRegex.exec(input))) {
2989 sign = (match[1] === '-') ? -1 : 1;
2990 duration = {
2991 y : parseIso(match[2], sign),
2992 M : parseIso(match[3], sign),
2993 w : parseIso(match[4], sign),
2994 d : parseIso(match[5], sign),
2995 h : parseIso(match[6], sign),
2996 m : parseIso(match[7], sign),
2997 s : parseIso(match[8], sign)
2998 };
2999 } else if (duration == null) {// checks for null or undefined
3000 duration = {};
3001 } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
3002 diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));
3003
3004 duration = {};
3005 duration.ms = diffRes.milliseconds;
3006 duration.M = diffRes.months;
3007 }
3008
3009 ret = new Duration(duration);
3010
3011 if (isDuration(input) && hasOwnProp(input, '_locale')) {
3012 ret._locale = input._locale;
3013 }
3014
3015 return ret;
3016 }
3017
3018 createDuration.fn = Duration.prototype;
3019 createDuration.invalid = createInvalid$1;
3020
3021 function parseIso (inp, sign) {
3022 // We'd normally use ~~inp for this, but unfortunately it also
3023 // converts floats to ints.
3024 // inp may be undefined, so careful calling replace on it.
3025 var res = inp && parseFloat(inp.replace(',', '.'));
3026 // apply sign while we're at it
3027 return (isNaN(res) ? 0 : res) * sign;
3028 }
3029
3030 function positiveMomentsDifference(base, other) {
3031 var res = {milliseconds: 0, months: 0};
3032
3033 res.months = other.month() - base.month() +
3034 (other.year() - base.year()) * 12;
3035 if (base.clone().add(res.months, 'M').isAfter(other)) {
3036 --res.months;
3037 }
3038
3039 res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
3040
3041 return res;
3042 }
3043
3044 function momentsDifference(base, other) {
3045 var res;
3046 if (!(base.isValid() && other.isValid())) {
3047 return {milliseconds: 0, months: 0};
3048 }
3049
3050 other = cloneWithOffset(other, base);
3051 if (base.isBefore(other)) {
3052 res = positiveMomentsDifference(base, other);
3053 } else {
3054 res = positiveMomentsDifference(other, base);
3055 res.milliseconds = -res.milliseconds;
3056 res.months = -res.months;
3057 }
3058
3059 return res;
3060 }
3061
3062 // TODO: remove 'name' arg after deprecation is removed
3063 function createAdder(direction, name) {
3064 return function (val, period) {
3065 var dur, tmp;
3066 //invert the arguments, but complain about it
3067 if (period !== null && !isNaN(+period)) {
3068 deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +
3069 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');
3070 tmp = val; val = period; period = tmp;
3071 }
3072
3073 val = typeof val === 'string' ? +val : val;
3074 dur = createDuration(val, period);
3075 addSubtract(this, dur, direction);
3076 return this;
3077 };
3078 }
3079
3080 function addSubtract (mom, duration, isAdding, updateOffset) {
3081 var milliseconds = duration._milliseconds,
3082 days = absRound(duration._days),
3083 months = absRound(duration._months);
3084
3085 if (!mom.isValid()) {
3086 // No op
3087 return;
3088 }
3089
3090 updateOffset = updateOffset == null ? true : updateOffset;
3091
3092 if (milliseconds) {
3093 mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
3094 }
3095 if (days) {
3096 set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
3097 }
3098 if (months) {
3099 setMonth(mom, get(mom, 'Month') + months * isAdding);
3100 }
3101 if (updateOffset) {
3102 hooks.updateOffset(mom, days || months);
3103 }
3104 }
3105
3106 var add = createAdder(1, 'add');
3107 var subtract = createAdder(-1, 'subtract');
3108
3109 function getCalendarFormat(myMoment, now) {
3110 var diff = myMoment.diff(now, 'days', true);
3111 return diff < -6 ? 'sameElse' :
3112 diff < -1 ? 'lastWeek' :
3113 diff < 0 ? 'lastDay' :
3114 diff < 1 ? 'sameDay' :
3115 diff < 2 ? 'nextDay' :
3116 diff < 7 ? 'nextWeek' : 'sameElse';
3117 }
3118
3119 function calendar$1 (time, formats) {
3120 // We want to compare the start of today, vs this.
3121 // Getting start-of-today depends on whether we're local/utc/offset or not.
3122 var now = time || createLocal(),
3123 sod = cloneWithOffset(now, this).startOf('day'),
3124 format = hooks.calendarFormat(this, sod) || 'sameElse';
3125
3126 var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);
3127
3128 return this.format(output || this.localeData().calendar(format, this, createLocal(now)));
3129 }
3130
3131 function clone () {
3132 return new Moment(this);
3133 }
3134
3135 function isAfter (input, units) {
3136 var localInput = isMoment(input) ? input : createLocal(input);
3137 if (!(this.isValid() && localInput.isValid())) {
3138 return false;
3139 }
3140 units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
3141 if (units === 'millisecond') {
3142 return this.valueOf() > localInput.valueOf();
3143 } else {
3144 return localInput.valueOf() < this.clone().startOf(units).valueOf();
3145 }
3146 }
3147
3148 function isBefore (input, units) {
3149 var localInput = isMoment(input) ? input : createLocal(input);
3150 if (!(this.isValid() && localInput.isValid())) {
3151 return false;
3152 }
3153 units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');
3154 if (units === 'millisecond') {
3155 return this.valueOf() < localInput.valueOf();
3156 } else {
3157 return this.clone().endOf(units).valueOf() < localInput.valueOf();
3158 }
3159 }
3160
3161 function isBetween (from, to, units, inclusivity) {
3162 inclusivity = inclusivity || '()';
3163 return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&
3164 (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));
3165 }
3166
3167 function isSame (input, units) {
3168 var localInput = isMoment(input) ? input : createLocal(input),
3169 inputMs;
3170 if (!(this.isValid() && localInput.isValid())) {
3171 return false;
3172 }
3173 units = normalizeUnits(units || 'millisecond');
3174 if (units === 'millisecond') {
3175 return this.valueOf() === localInput.valueOf();
3176 } else {
3177 inputMs = localInput.valueOf();
3178 return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();
3179 }
3180 }
3181
3182 function isSameOrAfter (input, units) {
3183 return this.isSame(input, units) || this.isAfter(input,units);
3184 }
3185
3186 function isSameOrBefore (input, units) {
3187 return this.isSame(input, units) || this.isBefore(input,units);
3188 }
3189
3190 function diff (input, units, asFloat) {
3191 var that,
3192 zoneDelta,
3193 delta, output;
3194
3195 if (!this.isValid()) {
3196 return NaN;
3197 }
3198
3199 that = cloneWithOffset(input, this);
3200
3201 if (!that.isValid()) {
3202 return NaN;
3203 }
3204
3205 zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
3206
3207 units = normalizeUnits(units);
3208
3209 if (units === 'year' || units === 'month' || units === 'quarter') {
3210 output = monthDiff(this, that);
3211 if (units === 'quarter') {
3212 output = output / 3;
3213 } else if (units === 'year') {
3214 output = output / 12;
3215 }
3216 } else {
3217 delta = this - that;
3218 output = units === 'second' ? delta / 1e3 : // 1000
3219 units === 'minute' ? delta / 6e4 : // 1000 * 60
3220 units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60
3221 units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
3222 units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
3223 delta;
3224 }
3225 return asFloat ? output : absFloor(output);
3226 }
3227
3228 function monthDiff (a, b) {
3229 // difference in months
3230 var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
3231 // b is in (anchor - 1 month, anchor + 1 month)
3232 anchor = a.clone().add(wholeMonthDiff, 'months'),
3233 anchor2, adjust;
3234
3235 if (b - anchor < 0) {
3236 anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
3237 // linear across the month
3238 adjust = (b - anchor) / (anchor - anchor2);
3239 } else {
3240 anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
3241 // linear across the month
3242 adjust = (b - anchor) / (anchor2 - anchor);
3243 }
3244
3245 //check for negative zero, return zero if negative zero
3246 return -(wholeMonthDiff + adjust) || 0;
3247 }
3248
3249 hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
3250 hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
3251
3252 function toString () {
3253 return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
3254 }
3255
3256 function toISOString() {
3257 if (!this.isValid()) {
3258 return null;
3259 }
3260 var m = this.clone().utc();
3261 if (m.year() < 0 || m.year() > 9999) {
3262 return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
3263 }
3264 if (isFunction(Date.prototype.toISOString)) {
3265 // native implementation is ~50x faster, use it when we can
3266 return this.toDate().toISOString();
3267 }
3268 return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
3269 }
3270
3271 /**
3272 * Return a human readable representation of a moment that can
3273 * also be evaluated to get a new moment which is the same
3274 *
3275 * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
3276 */
3277 function inspect () {
3278 if (!this.isValid()) {
3279 return 'moment.invalid(/* ' + this._i + ' */)';
3280 }
3281 var func = 'moment';
3282 var zone = '';
3283 if (!this.isLocal()) {
3284 func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
3285 zone = 'Z';
3286 }
3287 var prefix = '[' + func + '("]';
3288 var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';
3289 var datetime = '-MM-DD[T]HH:mm:ss.SSS';
3290 var suffix = zone + '[")]';
3291
3292 return this.format(prefix + year + datetime + suffix);
3293 }
3294
3295 function format (inputString) {
3296 if (!inputString) {
3297 inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;
3298 }
3299 var output = formatMoment(this, inputString);
3300 return this.localeData().postformat(output);
3301 }
3302
3303 function from (time, withoutSuffix) {
3304 if (this.isValid() &&
3305 ((isMoment(time) && time.isValid()) ||
3306 createLocal(time).isValid())) {
3307 return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
3308 } else {
3309 return this.localeData().invalidDate();
3310 }
3311 }
3312
3313 function fromNow (withoutSuffix) {
3314 return this.from(createLocal(), withoutSuffix);
3315 }
3316
3317 function to (time, withoutSuffix) {
3318 if (this.isValid() &&
3319 ((isMoment(time) && time.isValid()) ||
3320 createLocal(time).isValid())) {
3321 return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);
3322 } else {
3323 return this.localeData().invalidDate();
3324 }
3325 }
3326
3327 function toNow (withoutSuffix) {
3328 return this.to(createLocal(), withoutSuffix);
3329 }
3330
3331 // If passed a locale key, it will set the locale for this
3332 // instance. Otherwise, it will return the locale configuration
3333 // variables for this instance.
3334 function locale (key) {
3335 var newLocaleData;
3336
3337 if (key === undefined) {
3338 return this._locale._abbr;
3339 } else {
3340 newLocaleData = getLocale(key);
3341 if (newLocaleData != null) {
3342 this._locale = newLocaleData;
3343 }
3344 return this;
3345 }
3346 }
3347
3348 var lang = deprecate(
3349 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
3350 function (key) {
3351 if (key === undefined) {
3352 return this.localeData();
3353 } else {
3354 return this.locale(key);
3355 }
3356 }
3357 );
3358
3359 function localeData () {
3360 return this._locale;
3361 }
3362
3363 function startOf (units) {
3364 units = normalizeUnits(units);
3365 // the following switch intentionally omits break keywords
3366 // to utilize falling through the cases.
3367 switch (units) {
3368 case 'year':
3369 this.month(0);
3370 /* falls through */
3371 case 'quarter':
3372 case 'month':
3373 this.date(1);
3374 /* falls through */
3375 case 'week':
3376 case 'isoWeek':
3377 case 'day':
3378 case 'date':
3379 this.hours(0);
3380 /* falls through */
3381 case 'hour':
3382 this.minutes(0);
3383 /* falls through */
3384 case 'minute':
3385 this.seconds(0);
3386 /* falls through */
3387 case 'second':
3388 this.milliseconds(0);
3389 }
3390
3391 // weeks are a special case
3392 if (units === 'week') {
3393 this.weekday(0);
3394 }
3395 if (units === 'isoWeek') {
3396 this.isoWeekday(1);
3397 }
3398
3399 // quarters are also special
3400 if (units === 'quarter') {
3401 this.month(Math.floor(this.month() / 3) * 3);
3402 }
3403
3404 return this;
3405 }
3406
3407 function endOf (units) {
3408 units = normalizeUnits(units);
3409 if (units === undefined || units === 'millisecond') {
3410 return this;
3411 }
3412
3413 // 'date' is an alias for 'day', so it should be considered as such.
3414 if (units === 'date') {
3415 units = 'day';
3416 }
3417
3418 return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
3419 }
3420
3421 function valueOf () {
3422 return this._d.valueOf() - ((this._offset || 0) * 60000);
3423 }
3424
3425 function unix () {
3426 return Math.floor(this.valueOf() / 1000);
3427 }
3428
3429 function toDate () {
3430 return new Date(this.valueOf());
3431 }
3432
3433 function toArray () {
3434 var m = this;
3435 return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
3436 }
3437
3438 function toObject () {
3439 var m = this;
3440 return {
3441 years: m.year(),
3442 months: m.month(),
3443 date: m.date(),
3444 hours: m.hours(),
3445 minutes: m.minutes(),
3446 seconds: m.seconds(),
3447 milliseconds: m.milliseconds()
3448 };
3449 }
3450
3451 function toJSON () {
3452 // new Date(NaN).toJSON() === null
3453 return this.isValid() ? this.toISOString() : null;
3454 }
3455
3456 function isValid$2 () {
3457 return isValid(this);
3458 }
3459
3460 function parsingFlags () {
3461 return extend({}, getParsingFlags(this));
3462 }
3463
3464 function invalidAt () {
3465 return getParsingFlags(this).overflow;
3466 }
3467
3468 function creationData() {
3469 return {
3470 input: this._i,
3471 format: this._f,
3472 locale: this._locale,
3473 isUTC: this._isUTC,
3474 strict: this._strict
3475 };
3476 }
3477
3478 // FORMATTING
3479
3480 addFormatToken(0, ['gg', 2], 0, function () {
3481 return this.weekYear() % 100;
3482 });
3483
3484 addFormatToken(0, ['GG', 2], 0, function () {
3485 return this.isoWeekYear() % 100;
3486 });
3487
3488 function addWeekYearFormatToken (token, getter) {
3489 addFormatToken(0, [token, token.length], 0, getter);
3490 }
3491
3492 addWeekYearFormatToken('gggg', 'weekYear');
3493 addWeekYearFormatToken('ggggg', 'weekYear');
3494 addWeekYearFormatToken('GGGG', 'isoWeekYear');
3495 addWeekYearFormatToken('GGGGG', 'isoWeekYear');
3496
3497 // ALIASES
3498
3499 addUnitAlias('weekYear', 'gg');
3500 addUnitAlias('isoWeekYear', 'GG');
3501
3502 // PRIORITY
3503
3504 addUnitPriority('weekYear', 1);
3505 addUnitPriority('isoWeekYear', 1);
3506
3507
3508 // PARSING
3509
3510 addRegexToken('G', matchSigned);
3511 addRegexToken('g', matchSigned);
3512 addRegexToken('GG', match1to2, match2);
3513 addRegexToken('gg', match1to2, match2);
3514 addRegexToken('GGGG', match1to4, match4);
3515 addRegexToken('gggg', match1to4, match4);
3516 addRegexToken('GGGGG', match1to6, match6);
3517 addRegexToken('ggggg', match1to6, match6);
3518
3519 addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
3520 week[token.substr(0, 2)] = toInt(input);
3521 });
3522
3523 addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
3524 week[token] = hooks.parseTwoDigitYear(input);
3525 });
3526
3527 // MOMENTS
3528
3529 function getSetWeekYear (input) {
3530 return getSetWeekYearHelper.call(this,
3531 input,
3532 this.week(),
3533 this.weekday(),
3534 this.localeData()._week.dow,
3535 this.localeData()._week.doy);
3536 }
3537
3538 function getSetISOWeekYear (input) {
3539 return getSetWeekYearHelper.call(this,
3540 input, this.isoWeek(), this.isoWeekday(), 1, 4);
3541 }
3542
3543 function getISOWeeksInYear () {
3544 return weeksInYear(this.year(), 1, 4);
3545 }
3546
3547 function getWeeksInYear () {
3548 var weekInfo = this.localeData()._week;
3549 return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
3550 }
3551
3552 function getSetWeekYearHelper(input, week, weekday, dow, doy) {
3553 var weeksTarget;
3554 if (input == null) {
3555 return weekOfYear(this, dow, doy).year;
3556 } else {
3557 weeksTarget = weeksInYear(input, dow, doy);
3558 if (week > weeksTarget) {
3559 week = weeksTarget;
3560 }
3561 return setWeekAll.call(this, input, week, weekday, dow, doy);
3562 }
3563 }
3564
3565 function setWeekAll(weekYear, week, weekday, dow, doy) {
3566 var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
3567 date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
3568
3569 this.year(date.getUTCFullYear());
3570 this.month(date.getUTCMonth());
3571 this.date(date.getUTCDate());
3572 return this;
3573 }
3574
3575 // FORMATTING
3576
3577 addFormatToken('Q', 0, 'Qo', 'quarter');
3578
3579 // ALIASES
3580
3581 addUnitAlias('quarter', 'Q');
3582
3583 // PRIORITY
3584
3585 addUnitPriority('quarter', 7);
3586
3587 // PARSING
3588
3589 addRegexToken('Q', match1);
3590 addParseToken('Q', function (input, array) {
3591 array[MONTH] = (toInt(input) - 1) * 3;
3592 });
3593
3594 // MOMENTS
3595
3596 function getSetQuarter (input) {
3597 return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
3598 }
3599
3600 // FORMATTING
3601
3602 addFormatToken('D', ['DD', 2], 'Do', 'date');
3603
3604 // ALIASES
3605
3606 addUnitAlias('date', 'D');
3607
3608 // PRIOROITY
3609 addUnitPriority('date', 9);
3610
3611 // PARSING
3612
3613 addRegexToken('D', match1to2);
3614 addRegexToken('DD', match1to2, match2);
3615 addRegexToken('Do', function (isStrict, locale) {
3616 // TODO: Remove "ordinalParse" fallback in next major release.
3617 return isStrict ?
3618 (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :
3619 locale._dayOfMonthOrdinalParseLenient;
3620 });
3621
3622 addParseToken(['D', 'DD'], DATE);
3623 addParseToken('Do', function (input, array) {
3624 array[DATE] = toInt(input.match(match1to2)[0], 10);
3625 });
3626
3627 // MOMENTS
3628
3629 var getSetDayOfMonth = makeGetSet('Date', true);
3630
3631 // FORMATTING
3632
3633 addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
3634
3635 // ALIASES
3636
3637 addUnitAlias('dayOfYear', 'DDD');
3638
3639 // PRIORITY
3640 addUnitPriority('dayOfYear', 4);
3641
3642 // PARSING
3643
3644 addRegexToken('DDD', match1to3);
3645 addRegexToken('DDDD', match3);
3646 addParseToken(['DDD', 'DDDD'], function (input, array, config) {
3647 config._dayOfYear = toInt(input);
3648 });
3649
3650 // HELPERS
3651
3652 // MOMENTS
3653
3654 function getSetDayOfYear (input) {
3655 var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
3656 return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
3657 }
3658
3659 // FORMATTING
3660
3661 addFormatToken('m', ['mm', 2], 0, 'minute');
3662
3663 // ALIASES
3664
3665 addUnitAlias('minute', 'm');
3666
3667 // PRIORITY
3668
3669 addUnitPriority('minute', 14);
3670
3671 // PARSING
3672
3673 addRegexToken('m', match1to2);
3674 addRegexToken('mm', match1to2, match2);
3675 addParseToken(['m', 'mm'], MINUTE);
3676
3677 // MOMENTS
3678
3679 var getSetMinute = makeGetSet('Minutes', false);
3680
3681 // FORMATTING
3682
3683 addFormatToken('s', ['ss', 2], 0, 'second');
3684
3685 // ALIASES
3686
3687 addUnitAlias('second', 's');
3688
3689 // PRIORITY
3690
3691 addUnitPriority('second', 15);
3692
3693 // PARSING
3694
3695 addRegexToken('s', match1to2);
3696 addRegexToken('ss', match1to2, match2);
3697 addParseToken(['s', 'ss'], SECOND);
3698
3699 // MOMENTS
3700
3701 var getSetSecond = makeGetSet('Seconds', false);
3702
3703 // FORMATTING
3704
3705 addFormatToken('S', 0, 0, function () {
3706 return ~~(this.millisecond() / 100);
3707 });
3708
3709 addFormatToken(0, ['SS', 2], 0, function () {
3710 return ~~(this.millisecond() / 10);
3711 });
3712
3713 addFormatToken(0, ['SSS', 3], 0, 'millisecond');
3714 addFormatToken(0, ['SSSS', 4], 0, function () {
3715 return this.millisecond() * 10;
3716 });
3717 addFormatToken(0, ['SSSSS', 5], 0, function () {
3718 return this.millisecond() * 100;
3719 });
3720 addFormatToken(0, ['SSSSSS', 6], 0, function () {
3721 return this.millisecond() * 1000;
3722 });
3723 addFormatToken(0, ['SSSSSSS', 7], 0, function () {
3724 return this.millisecond() * 10000;
3725 });
3726 addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
3727 return this.millisecond() * 100000;
3728 });
3729 addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
3730 return this.millisecond() * 1000000;
3731 });
3732
3733
3734 // ALIASES
3735
3736 addUnitAlias('millisecond', 'ms');
3737
3738 // PRIORITY
3739
3740 addUnitPriority('millisecond', 16);
3741
3742 // PARSING
3743
3744 addRegexToken('S', match1to3, match1);
3745 addRegexToken('SS', match1to3, match2);
3746 addRegexToken('SSS', match1to3, match3);
3747
3748 var token;
3749 for (token = 'SSSS'; token.length <= 9; token += 'S') {
3750 addRegexToken(token, matchUnsigned);
3751 }
3752
3753 function parseMs(input, array) {
3754 array[MILLISECOND] = toInt(('0.' + input) * 1000);
3755 }
3756
3757 for (token = 'S'; token.length <= 9; token += 'S') {
3758 addParseToken(token, parseMs);
3759 }
3760 // MOMENTS
3761
3762 var getSetMillisecond = makeGetSet('Milliseconds', false);
3763
3764 // FORMATTING
3765
3766 addFormatToken('z', 0, 0, 'zoneAbbr');
3767 addFormatToken('zz', 0, 0, 'zoneName');
3768
3769 // MOMENTS
3770
3771 function getZoneAbbr () {
3772 return this._isUTC ? 'UTC' : '';
3773 }
3774
3775 function getZoneName () {
3776 return this._isUTC ? 'Coordinated Universal Time' : '';
3777 }
3778
3779 var proto = Moment.prototype;
3780
3781 proto.add = add;
3782 proto.calendar = calendar$1;
3783 proto.clone = clone;
3784 proto.diff = diff;
3785 proto.endOf = endOf;
3786 proto.format = format;
3787 proto.from = from;
3788 proto.fromNow = fromNow;
3789 proto.to = to;
3790 proto.toNow = toNow;
3791 proto.get = stringGet;
3792 proto.invalidAt = invalidAt;
3793 proto.isAfter = isAfter;
3794 proto.isBefore = isBefore;
3795 proto.isBetween = isBetween;
3796 proto.isSame = isSame;
3797 proto.isSameOrAfter = isSameOrAfter;
3798 proto.isSameOrBefore = isSameOrBefore;
3799 proto.isValid = isValid$2;
3800 proto.lang = lang;
3801 proto.locale = locale;
3802 proto.localeData = localeData;
3803 proto.max = prototypeMax;
3804 proto.min = prototypeMin;
3805 proto.parsingFlags = parsingFlags;
3806 proto.set = stringSet;
3807 proto.startOf = startOf;
3808 proto.subtract = subtract;
3809 proto.toArray = toArray;
3810 proto.toObject = toObject;
3811 proto.toDate = toDate;
3812 proto.toISOString = toISOString;
3813 proto.inspect = inspect;
3814 proto.toJSON = toJSON;
3815 proto.toString = toString;
3816 proto.unix = unix;
3817 proto.valueOf = valueOf;
3818 proto.creationData = creationData;
3819
3820 // Year
3821 proto.year = getSetYear;
3822 proto.isLeapYear = getIsLeapYear;
3823
3824 // Week Year
3825 proto.weekYear = getSetWeekYear;
3826 proto.isoWeekYear = getSetISOWeekYear;
3827
3828 // Quarter
3829 proto.quarter = proto.quarters = getSetQuarter;
3830
3831 // Month
3832 proto.month = getSetMonth;
3833 proto.daysInMonth = getDaysInMonth;
3834
3835 // Week
3836 proto.week = proto.weeks = getSetWeek;
3837 proto.isoWeek = proto.isoWeeks = getSetISOWeek;
3838 proto.weeksInYear = getWeeksInYear;
3839 proto.isoWeeksInYear = getISOWeeksInYear;
3840
3841 // Day
3842 proto.date = getSetDayOfMonth;
3843 proto.day = proto.days = getSetDayOfWeek;
3844 proto.weekday = getSetLocaleDayOfWeek;
3845 proto.isoWeekday = getSetISODayOfWeek;
3846 proto.dayOfYear = getSetDayOfYear;
3847
3848 // Hour
3849 proto.hour = proto.hours = getSetHour;
3850
3851 // Minute
3852 proto.minute = proto.minutes = getSetMinute;
3853
3854 // Second
3855 proto.second = proto.seconds = getSetSecond;
3856
3857 // Millisecond
3858 proto.millisecond = proto.milliseconds = getSetMillisecond;
3859
3860 // Offset
3861 proto.utcOffset = getSetOffset;
3862 proto.utc = setOffsetToUTC;
3863 proto.local = setOffsetToLocal;
3864 proto.parseZone = setOffsetToParsedOffset;
3865 proto.hasAlignedHourOffset = hasAlignedHourOffset;
3866 proto.isDST = isDaylightSavingTime;
3867 proto.isLocal = isLocal;
3868 proto.isUtcOffset = isUtcOffset;
3869 proto.isUtc = isUtc;
3870 proto.isUTC = isUtc;
3871
3872 // Timezone
3873 proto.zoneAbbr = getZoneAbbr;
3874 proto.zoneName = getZoneName;
3875
3876 // Deprecations
3877 proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
3878 proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
3879 proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);
3880 proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);
3881 proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);
3882
3883 function createUnix (input) {
3884 return createLocal(input * 1000);
3885 }
3886
3887 function createInZone () {
3888 return createLocal.apply(null, arguments).parseZone();
3889 }
3890
3891 function preParsePostFormat (string) {
3892 return string;
3893 }
3894
3895 var proto$1 = Locale.prototype;
3896
3897 proto$1.calendar = calendar;
3898 proto$1.longDateFormat = longDateFormat;
3899 proto$1.invalidDate = invalidDate;
3900 proto$1.ordinal = ordinal;
3901 proto$1.preparse = preParsePostFormat;
3902 proto$1.postformat = preParsePostFormat;
3903 proto$1.relativeTime = relativeTime;
3904 proto$1.pastFuture = pastFuture;
3905 proto$1.set = set;
3906
3907 // Month
3908 proto$1.months = localeMonths;
3909 proto$1.monthsShort = localeMonthsShort;
3910 proto$1.monthsParse = localeMonthsParse;
3911 proto$1.monthsRegex = monthsRegex;
3912 proto$1.monthsShortRegex = monthsShortRegex;
3913
3914 // Week
3915 proto$1.week = localeWeek;
3916 proto$1.firstDayOfYear = localeFirstDayOfYear;
3917 proto$1.firstDayOfWeek = localeFirstDayOfWeek;
3918
3919 // Day of Week
3920 proto$1.weekdays = localeWeekdays;
3921 proto$1.weekdaysMin = localeWeekdaysMin;
3922 proto$1.weekdaysShort = localeWeekdaysShort;
3923 proto$1.weekdaysParse = localeWeekdaysParse;
3924
3925 proto$1.weekdaysRegex = weekdaysRegex;
3926 proto$1.weekdaysShortRegex = weekdaysShortRegex;
3927 proto$1.weekdaysMinRegex = weekdaysMinRegex;
3928
3929 // Hours
3930 proto$1.isPM = localeIsPM;
3931 proto$1.meridiem = localeMeridiem;
3932
3933 function get$1 (format, index, field, setter) {
3934 var locale = getLocale();
3935 var utc = createUTC().set(setter, index);
3936 return locale[field](utc, format);
3937 }
3938
3939 function listMonthsImpl (format, index, field) {
3940 if (isNumber(format)) {
3941 index = format;
3942 format = undefined;
3943 }
3944
3945 format = format || '';
3946
3947 if (index != null) {
3948 return get$1(format, index, field, 'month');
3949 }
3950
3951 var i;
3952 var out = [];
3953 for (i = 0; i < 12; i++) {
3954 out[i] = get$1(format, i, field, 'month');
3955 }
3956 return out;
3957 }
3958
3959 // ()
3960 // (5)
3961 // (fmt, 5)
3962 // (fmt)
3963 // (true)
3964 // (true, 5)
3965 // (true, fmt, 5)
3966 // (true, fmt)
3967 function listWeekdaysImpl (localeSorted, format, index, field) {
3968 if (typeof localeSorted === 'boolean') {
3969 if (isNumber(format)) {
3970 index = format;
3971 format = undefined;
3972 }
3973
3974 format = format || '';
3975 } else {
3976 format = localeSorted;
3977 index = format;
3978 localeSorted = false;
3979
3980 if (isNumber(format)) {
3981 index = format;
3982 format = undefined;
3983 }
3984
3985 format = format || '';
3986 }
3987
3988 var locale = getLocale(),
3989 shift = localeSorted ? locale._week.dow : 0;
3990
3991 if (index != null) {
3992 return get$1(format, (index + shift) % 7, field, 'day');
3993 }
3994
3995 var i;
3996 var out = [];
3997 for (i = 0; i < 7; i++) {
3998 out[i] = get$1(format, (i + shift) % 7, field, 'day');
3999 }
4000 return out;
4001 }
4002
4003 function listMonths (format, index) {
4004 return listMonthsImpl(format, index, 'months');
4005 }
4006
4007 function listMonthsShort (format, index) {
4008 return listMonthsImpl(format, index, 'monthsShort');
4009 }
4010
4011 function listWeekdays (localeSorted, format, index) {
4012 return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
4013 }
4014
4015 function listWeekdaysShort (localeSorted, format, index) {
4016 return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
4017 }
4018
4019 function listWeekdaysMin (localeSorted, format, index) {
4020 return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
4021 }
4022
4023 getSetGlobalLocale('en', {
4024 dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
4025 ordinal : function (number) {
4026 var b = number % 10,
4027 output = (toInt(number % 100 / 10) === 1) ? 'th' :
4028 (b === 1) ? 'st' :
4029 (b === 2) ? 'nd' :
4030 (b === 3) ? 'rd' : 'th';
4031 return number + output;
4032 }
4033 });
4034
4035 // Side effect imports
4036 hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);
4037 hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);
4038
4039 var mathAbs = Math.abs;
4040
4041 function abs () {
4042 var data = this._data;
4043
4044 this._milliseconds = mathAbs(this._milliseconds);
4045 this._days = mathAbs(this._days);
4046 this._months = mathAbs(this._months);
4047
4048 data.milliseconds = mathAbs(data.milliseconds);
4049 data.seconds = mathAbs(data.seconds);
4050 data.minutes = mathAbs(data.minutes);
4051 data.hours = mathAbs(data.hours);
4052 data.months = mathAbs(data.months);
4053 data.years = mathAbs(data.years);
4054
4055 return this;
4056 }
4057
4058 function addSubtract$1 (duration, input, value, direction) {
4059 var other = createDuration(input, value);
4060
4061 duration._milliseconds += direction * other._milliseconds;
4062 duration._days += direction * other._days;
4063 duration._months += direction * other._months;
4064
4065 return duration._bubble();
4066 }
4067
4068 // supports only 2.0-style add(1, 's') or add(duration)
4069 function add$1 (input, value) {
4070 return addSubtract$1(this, input, value, 1);
4071 }
4072
4073 // supports only 2.0-style subtract(1, 's') or subtract(duration)
4074 function subtract$1 (input, value) {
4075 return addSubtract$1(this, input, value, -1);
4076 }
4077
4078 function absCeil (number) {
4079 if (number < 0) {
4080 return Math.floor(number);
4081 } else {
4082 return Math.ceil(number);
4083 }
4084 }
4085
4086 function bubble () {
4087 var milliseconds = this._milliseconds;
4088 var days = this._days;
4089 var months = this._months;
4090 var data = this._data;
4091 var seconds, minutes, hours, years, monthsFromDays;
4092
4093 // if we have a mix of positive and negative values, bubble down first
4094 // check: https://github.com/moment/moment/issues/2166
4095 if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||
4096 (milliseconds <= 0 && days <= 0 && months <= 0))) {
4097 milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
4098 days = 0;
4099 months = 0;
4100 }
4101
4102 // The following code bubbles up values, see the tests for
4103 // examples of what that means.
4104 data.milliseconds = milliseconds % 1000;
4105
4106 seconds = absFloor(milliseconds / 1000);
4107 data.seconds = seconds % 60;
4108
4109 minutes = absFloor(seconds / 60);
4110 data.minutes = minutes % 60;
4111
4112 hours = absFloor(minutes / 60);
4113 data.hours = hours % 24;
4114
4115 days += absFloor(hours / 24);
4116
4117 // convert days to months
4118 monthsFromDays = absFloor(daysToMonths(days));
4119 months += monthsFromDays;
4120 days -= absCeil(monthsToDays(monthsFromDays));
4121
4122 // 12 months -> 1 year
4123 years = absFloor(months / 12);
4124 months %= 12;
4125
4126 data.days = days;
4127 data.months = months;
4128 data.years = years;
4129
4130 return this;
4131 }
4132
4133 function daysToMonths (days) {
4134 // 400 years have 146097 days (taking into account leap year rules)
4135 // 400 years have 12 months === 4800
4136 return days * 4800 / 146097;
4137 }
4138
4139 function monthsToDays (months) {
4140 // the reverse of daysToMonths
4141 return months * 146097 / 4800;
4142 }
4143
4144 function as (units) {
4145 if (!this.isValid()) {
4146 return NaN;
4147 }
4148 var days;
4149 var months;
4150 var milliseconds = this._milliseconds;
4151
4152 units = normalizeUnits(units);
4153
4154 if (units === 'month' || units === 'year') {
4155 days = this._days + milliseconds / 864e5;
4156 months = this._months + daysToMonths(days);
4157 return units === 'month' ? months : months / 12;
4158 } else {
4159 // handle milliseconds separately because of floating point math errors (issue #1867)
4160 days = this._days + Math.round(monthsToDays(this._months));
4161 switch (units) {
4162 case 'week' : return days / 7 + milliseconds / 6048e5;
4163 case 'day' : return days + milliseconds / 864e5;
4164 case 'hour' : return days * 24 + milliseconds / 36e5;
4165 case 'minute' : return days * 1440 + milliseconds / 6e4;
4166 case 'second' : return days * 86400 + milliseconds / 1000;
4167 // Math.floor prevents floating point math errors here
4168 case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
4169 default: throw new Error('Unknown unit ' + units);
4170 }
4171 }
4172 }
4173
4174 // TODO: Use this.as('ms')?
4175 function valueOf$1 () {
4176 if (!this.isValid()) {
4177 return NaN;
4178 }
4179 return (
4180 this._milliseconds +
4181 this._days * 864e5 +
4182 (this._months % 12) * 2592e6 +
4183 toInt(this._months / 12) * 31536e6
4184 );
4185 }
4186
4187 function makeAs (alias) {
4188 return function () {
4189 return this.as(alias);
4190 };
4191 }
4192
4193 var asMilliseconds = makeAs('ms');
4194 var asSeconds = makeAs('s');
4195 var asMinutes = makeAs('m');
4196 var asHours = makeAs('h');
4197 var asDays = makeAs('d');
4198 var asWeeks = makeAs('w');
4199 var asMonths = makeAs('M');
4200 var asYears = makeAs('y');
4201
4202 function get$2 (units) {
4203 units = normalizeUnits(units);
4204 return this.isValid() ? this[units + 's']() : NaN;
4205 }
4206
4207 function makeGetter(name) {
4208 return function () {
4209 return this.isValid() ? this._data[name] : NaN;
4210 };
4211 }
4212
4213 var milliseconds = makeGetter('milliseconds');
4214 var seconds = makeGetter('seconds');
4215 var minutes = makeGetter('minutes');
4216 var hours = makeGetter('hours');
4217 var days = makeGetter('days');
4218 var months = makeGetter('months');
4219 var years = makeGetter('years');
4220
4221 function weeks () {
4222 return absFloor(this.days() / 7);
4223 }
4224
4225 var round = Math.round;
4226 var thresholds = {
4227 ss: 44, // a few seconds to seconds
4228 s : 45, // seconds to minute
4229 m : 45, // minutes to hour
4230 h : 22, // hours to day
4231 d : 26, // days to month
4232 M : 11 // months to year
4233 };
4234
4235 // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
4236 function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
4237 return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
4238 }
4239
4240 function relativeTime$1 (posNegDuration, withoutSuffix, locale) {
4241 var duration = createDuration(posNegDuration).abs();
4242 var seconds = round(duration.as('s'));
4243 var minutes = round(duration.as('m'));
4244 var hours = round(duration.as('h'));
4245 var days = round(duration.as('d'));
4246 var months = round(duration.as('M'));
4247 var years = round(duration.as('y'));
4248
4249 var a = seconds <= thresholds.ss && ['s', seconds] ||
4250 seconds < thresholds.s && ['ss', seconds] ||
4251 minutes <= 1 && ['m'] ||
4252 minutes < thresholds.m && ['mm', minutes] ||
4253 hours <= 1 && ['h'] ||
4254 hours < thresholds.h && ['hh', hours] ||
4255 days <= 1 && ['d'] ||
4256 days < thresholds.d && ['dd', days] ||
4257 months <= 1 && ['M'] ||
4258 months < thresholds.M && ['MM', months] ||
4259 years <= 1 && ['y'] || ['yy', years];
4260
4261 a[2] = withoutSuffix;
4262 a[3] = +posNegDuration > 0;
4263 a[4] = locale;
4264 return substituteTimeAgo.apply(null, a);
4265 }
4266
4267 // This function allows you to set the rounding function for relative time strings
4268 function getSetRelativeTimeRounding (roundingFunction) {
4269 if (roundingFunction === undefined) {
4270 return round;
4271 }
4272 if (typeof(roundingFunction) === 'function') {
4273 round = roundingFunction;
4274 return true;
4275 }
4276 return false;
4277 }
4278
4279 // This function allows you to set a threshold for relative time strings
4280 function getSetRelativeTimeThreshold (threshold, limit) {
4281 if (thresholds[threshold] === undefined) {
4282 return false;
4283 }
4284 if (limit === undefined) {
4285 return thresholds[threshold];
4286 }
4287 thresholds[threshold] = limit;
4288 if (threshold === 's') {
4289 thresholds.ss = limit - 1;
4290 }
4291 return true;
4292 }
4293
4294 function humanize (withSuffix) {
4295 if (!this.isValid()) {
4296 return this.localeData().invalidDate();
4297 }
4298
4299 var locale = this.localeData();
4300 var output = relativeTime$1(this, !withSuffix, locale);
4301
4302 if (withSuffix) {
4303 output = locale.pastFuture(+this, output);
4304 }
4305
4306 return locale.postformat(output);
4307 }
4308
4309 var abs$1 = Math.abs;
4310
4311 function toISOString$1() {
4312 // for ISO strings we do not use the normal bubbling rules:
4313 // * milliseconds bubble up until they become hours
4314 // * days do not bubble at all
4315 // * months bubble up until they become years
4316 // This is because there is no context-free conversion between hours and days
4317 // (think of clock changes)
4318 // and also not between days and months (28-31 days per month)
4319 if (!this.isValid()) {
4320 return this.localeData().invalidDate();
4321 }
4322
4323 var seconds = abs$1(this._milliseconds) / 1000;
4324 var days = abs$1(this._days);
4325 var months = abs$1(this._months);
4326 var minutes, hours, years;
4327
4328 // 3600 seconds -> 60 minutes -> 1 hour
4329 minutes = absFloor(seconds / 60);
4330 hours = absFloor(minutes / 60);
4331 seconds %= 60;
4332 minutes %= 60;
4333
4334 // 12 months -> 1 year
4335 years = absFloor(months / 12);
4336 months %= 12;
4337
4338
4339 // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
4340 var Y = years;
4341 var M = months;
4342 var D = days;
4343 var h = hours;
4344 var m = minutes;
4345 var s = seconds;
4346 var total = this.asSeconds();
4347
4348 if (!total) {
4349 // this is the same as C#'s (Noda) and python (isodate)...
4350 // but not other JS (goog.date)
4351 return 'P0D';
4352 }
4353
4354 return (total < 0 ? '-' : '') +
4355 'P' +
4356 (Y ? Y + 'Y' : '') +
4357 (M ? M + 'M' : '') +
4358 (D ? D + 'D' : '') +
4359 ((h || m || s) ? 'T' : '') +
4360 (h ? h + 'H' : '') +
4361 (m ? m + 'M' : '') +
4362 (s ? s + 'S' : '');
4363 }
4364
4365 var proto$2 = Duration.prototype;
4366
4367 proto$2.isValid = isValid$1;
4368 proto$2.abs = abs;
4369 proto$2.add = add$1;
4370 proto$2.subtract = subtract$1;
4371 proto$2.as = as;
4372 proto$2.asMilliseconds = asMilliseconds;
4373 proto$2.asSeconds = asSeconds;
4374 proto$2.asMinutes = asMinutes;
4375 proto$2.asHours = asHours;
4376 proto$2.asDays = asDays;
4377 proto$2.asWeeks = asWeeks;
4378 proto$2.asMonths = asMonths;
4379 proto$2.asYears = asYears;
4380 proto$2.valueOf = valueOf$1;
4381 proto$2._bubble = bubble;
4382 proto$2.get = get$2;
4383 proto$2.milliseconds = milliseconds;
4384 proto$2.seconds = seconds;
4385 proto$2.minutes = minutes;
4386 proto$2.hours = hours;
4387 proto$2.days = days;
4388 proto$2.weeks = weeks;
4389 proto$2.months = months;
4390 proto$2.years = years;
4391 proto$2.humanize = humanize;
4392 proto$2.toISOString = toISOString$1;
4393 proto$2.toString = toISOString$1;
4394 proto$2.toJSON = toISOString$1;
4395 proto$2.locale = locale;
4396 proto$2.localeData = localeData;
4397
4398 // Deprecations
4399 proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);
4400 proto$2.lang = lang;
4401
4402 // Side effect imports
4403
4404 // FORMATTING
4405
4406 addFormatToken('X', 0, 0, 'unix');
4407 addFormatToken('x', 0, 0, 'valueOf');
4408
4409 // PARSING
4410
4411 addRegexToken('x', matchSigned);
4412 addRegexToken('X', matchTimestamp);
4413 addParseToken('X', function (input, array, config) {
4414 config._d = new Date(parseFloat(input, 10) * 1000);
4415 });
4416 addParseToken('x', function (input, array, config) {
4417 config._d = new Date(toInt(input));
4418 });
4419
4420 // Side effect imports
4421
4422 //! moment.js
4423 //! version : 2.18.1
4424 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
4425 //! license : MIT
4426 //! momentjs.com
4427
4428 hooks.version = '2.18.1';
4429
4430 setHookCallback(createLocal);
4431
4432 hooks.fn = proto;
4433 hooks.min = min;
4434 hooks.max = max;
4435 hooks.now = now;
4436 hooks.utc = createUTC;
4437 hooks.unix = createUnix;
4438 hooks.months = listMonths;
4439 hooks.isDate = isDate;
4440 hooks.locale = getSetGlobalLocale;
4441 hooks.invalid = createInvalid;
4442 hooks.duration = createDuration;
4443 hooks.isMoment = isMoment;
4444 hooks.weekdays = listWeekdays;
4445 hooks.parseZone = createInZone;
4446 hooks.localeData = getLocale;
4447 hooks.isDuration = isDuration;
4448 hooks.monthsShort = listMonthsShort;
4449 hooks.weekdaysMin = listWeekdaysMin;
4450 hooks.defineLocale = defineLocale;
4451 hooks.updateLocale = updateLocale;
4452 hooks.locales = listLocales;
4453 hooks.weekdaysShort = listWeekdaysShort;
4454 hooks.normalizeUnits = normalizeUnits;
4455 hooks.relativeTimeRounding = getSetRelativeTimeRounding;
4456 hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
4457 hooks.calendarFormat = getCalendarFormat;
4458 hooks.prototype = proto;
4459
4460 //! moment.js locale configuration
4461 //! locale : Afrikaans [af]
4462 //! author : Werner Mollentze : https://github.com/wernerm
4463
4464 hooks.defineLocale('af', {
4465 months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),
4466 monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
4467 weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),
4468 weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
4469 weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
4470 meridiemParse: /vm|nm/i,
4471 isPM : function (input) {
4472 return /^nm$/i.test(input);
4473 },
4474 meridiem : function (hours, minutes, isLower) {
4475 if (hours < 12) {
4476 return isLower ? 'vm' : 'VM';
4477 } else {
4478 return isLower ? 'nm' : 'NM';
4479 }
4480 },
4481 longDateFormat : {
4482 LT : 'HH:mm',
4483 LTS : 'HH:mm:ss',
4484 L : 'DD/MM/YYYY',
4485 LL : 'D MMMM YYYY',
4486 LLL : 'D MMMM YYYY HH:mm',
4487 LLLL : 'dddd, D MMMM YYYY HH:mm'
4488 },
4489 calendar : {
4490 sameDay : '[Vandag om] LT',
4491 nextDay : '[Môre om] LT',
4492 nextWeek : 'dddd [om] LT',
4493 lastDay : '[Gister om] LT',
4494 lastWeek : '[Laas] dddd [om] LT',
4495 sameElse : 'L'
4496 },
4497 relativeTime : {
4498 future : 'oor %s',
4499 past : '%s gelede',
4500 s : '\'n paar sekondes',
4501 m : '\'n minuut',
4502 mm : '%d minute',
4503 h : '\'n uur',
4504 hh : '%d ure',
4505 d : '\'n dag',
4506 dd : '%d dae',
4507 M : '\'n maand',
4508 MM : '%d maande',
4509 y : '\'n jaar',
4510 yy : '%d jaar'
4511 },
4512 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
4513 ordinal : function (number) {
4514 return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter
4515 },
4516 week : {
4517 dow : 1, // Maandag is die eerste dag van die week.
4518 doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
4519 }
4520 });
4521
4522 //! moment.js locale configuration
4523 //! locale : Arabic (Algeria) [ar-dz]
4524 //! author : Noureddine LOUAHEDJ : https://github.com/noureddineme
4525
4526 hooks.defineLocale('ar-dz', {
4527 months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4528 monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4529 weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4530 weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4531 weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),
4532 weekdaysParseExact : true,
4533 longDateFormat : {
4534 LT : 'HH:mm',
4535 LTS : 'HH:mm:ss',
4536 L : 'DD/MM/YYYY',
4537 LL : 'D MMMM YYYY',
4538 LLL : 'D MMMM YYYY HH:mm',
4539 LLLL : 'dddd D MMMM YYYY HH:mm'
4540 },
4541 calendar : {
4542 sameDay: '[اليوم على الساعة] LT',
4543 nextDay: '[غدا على الساعة] LT',
4544 nextWeek: 'dddd [على الساعة] LT',
4545 lastDay: '[أمس على الساعة] LT',
4546 lastWeek: 'dddd [على الساعة] LT',
4547 sameElse: 'L'
4548 },
4549 relativeTime : {
4550 future : 'في %s',
4551 past : 'منذ %s',
4552 s : 'ثوان',
4553 m : 'دقيقة',
4554 mm : '%d دقائق',
4555 h : 'ساعة',
4556 hh : '%d ساعات',
4557 d : 'يوم',
4558 dd : '%d أيام',
4559 M : 'شهر',
4560 MM : '%d أشهر',
4561 y : 'سنة',
4562 yy : '%d سنوات'
4563 },
4564 week : {
4565 dow : 0, // Sunday is the first day of the week.
4566 doy : 4 // The week that contains Jan 1st is the first week of the year.
4567 }
4568 });
4569
4570 //! moment.js locale configuration
4571 //! locale : Arabic (Kuwait) [ar-kw]
4572 //! author : Nusret Parlak: https://github.com/nusretparlak
4573
4574 hooks.defineLocale('ar-kw', {
4575 months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4576 monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4577 weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4578 weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4579 weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4580 weekdaysParseExact : true,
4581 longDateFormat : {
4582 LT : 'HH:mm',
4583 LTS : 'HH:mm:ss',
4584 L : 'DD/MM/YYYY',
4585 LL : 'D MMMM YYYY',
4586 LLL : 'D MMMM YYYY HH:mm',
4587 LLLL : 'dddd D MMMM YYYY HH:mm'
4588 },
4589 calendar : {
4590 sameDay: '[اليوم على الساعة] LT',
4591 nextDay: '[غدا على الساعة] LT',
4592 nextWeek: 'dddd [على الساعة] LT',
4593 lastDay: '[أمس على الساعة] LT',
4594 lastWeek: 'dddd [على الساعة] LT',
4595 sameElse: 'L'
4596 },
4597 relativeTime : {
4598 future : 'في %s',
4599 past : 'منذ %s',
4600 s : 'ثوان',
4601 m : 'دقيقة',
4602 mm : '%d دقائق',
4603 h : 'ساعة',
4604 hh : '%d ساعات',
4605 d : 'يوم',
4606 dd : '%d أيام',
4607 M : 'شهر',
4608 MM : '%d أشهر',
4609 y : 'سنة',
4610 yy : '%d سنوات'
4611 },
4612 week : {
4613 dow : 0, // Sunday is the first day of the week.
4614 doy : 12 // The week that contains Jan 1st is the first week of the year.
4615 }
4616 });
4617
4618 //! moment.js locale configuration
4619 //! locale : Arabic (Lybia) [ar-ly]
4620 //! author : Ali Hmer: https://github.com/kikoanis
4621
4622 var symbolMap = {
4623 '1': '1',
4624 '2': '2',
4625 '3': '3',
4626 '4': '4',
4627 '5': '5',
4628 '6': '6',
4629 '7': '7',
4630 '8': '8',
4631 '9': '9',
4632 '0': '0'
4633 };
4634 var pluralForm = function (n) {
4635 return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
4636 };
4637 var plurals = {
4638 s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
4639 m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
4640 h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
4641 d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
4642 M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
4643 y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
4644 };
4645 var pluralize = function (u) {
4646 return function (number, withoutSuffix, string, isFuture) {
4647 var f = pluralForm(number),
4648 str = plurals[u][pluralForm(number)];
4649 if (f === 2) {
4650 str = str[withoutSuffix ? 0 : 1];
4651 }
4652 return str.replace(/%d/i, number);
4653 };
4654 };
4655 var months$1 = [
4656 'يناير',
4657 'فبراير',
4658 'مارس',
4659 'أبريل',
4660 'مايو',
4661 'يونيو',
4662 'يوليو',
4663 'أغسطس',
4664 'سبتمبر',
4665 'أكتوبر',
4666 'نوفمبر',
4667 'ديسمبر'
4668 ];
4669
4670 hooks.defineLocale('ar-ly', {
4671 months : months$1,
4672 monthsShort : months$1,
4673 weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4674 weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4675 weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4676 weekdaysParseExact : true,
4677 longDateFormat : {
4678 LT : 'HH:mm',
4679 LTS : 'HH:mm:ss',
4680 L : 'D/\u200FM/\u200FYYYY',
4681 LL : 'D MMMM YYYY',
4682 LLL : 'D MMMM YYYY HH:mm',
4683 LLLL : 'dddd D MMMM YYYY HH:mm'
4684 },
4685 meridiemParse: /ص|م/,
4686 isPM : function (input) {
4687 return 'م' === input;
4688 },
4689 meridiem : function (hour, minute, isLower) {
4690 if (hour < 12) {
4691 return 'ص';
4692 } else {
4693 return 'م';
4694 }
4695 },
4696 calendar : {
4697 sameDay: '[اليوم عند الساعة] LT',
4698 nextDay: '[غدًا عند الساعة] LT',
4699 nextWeek: 'dddd [عند الساعة] LT',
4700 lastDay: '[أمس عند الساعة] LT',
4701 lastWeek: 'dddd [عند الساعة] LT',
4702 sameElse: 'L'
4703 },
4704 relativeTime : {
4705 future : 'بعد %s',
4706 past : 'منذ %s',
4707 s : pluralize('s'),
4708 m : pluralize('m'),
4709 mm : pluralize('m'),
4710 h : pluralize('h'),
4711 hh : pluralize('h'),
4712 d : pluralize('d'),
4713 dd : pluralize('d'),
4714 M : pluralize('M'),
4715 MM : pluralize('M'),
4716 y : pluralize('y'),
4717 yy : pluralize('y')
4718 },
4719 preparse: function (string) {
4720 return string.replace(/\u200f/g, '').replace(/،/g, ',');
4721 },
4722 postformat: function (string) {
4723 return string.replace(/\d/g, function (match) {
4724 return symbolMap[match];
4725 }).replace(/,/g, '،');
4726 },
4727 week : {
4728 dow : 6, // Saturday is the first day of the week.
4729 doy : 12 // The week that contains Jan 1st is the first week of the year.
4730 }
4731 });
4732
4733 //! moment.js locale configuration
4734 //! locale : Arabic (Morocco) [ar-ma]
4735 //! author : ElFadili Yassine : https://github.com/ElFadiliY
4736 //! author : Abdel Said : https://github.com/abdelsaid
4737
4738 hooks.defineLocale('ar-ma', {
4739 months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4740 monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4741 weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4742 weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4743 weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4744 weekdaysParseExact : true,
4745 longDateFormat : {
4746 LT : 'HH:mm',
4747 LTS : 'HH:mm:ss',
4748 L : 'DD/MM/YYYY',
4749 LL : 'D MMMM YYYY',
4750 LLL : 'D MMMM YYYY HH:mm',
4751 LLLL : 'dddd D MMMM YYYY HH:mm'
4752 },
4753 calendar : {
4754 sameDay: '[اليوم على الساعة] LT',
4755 nextDay: '[غدا على الساعة] LT',
4756 nextWeek: 'dddd [على الساعة] LT',
4757 lastDay: '[أمس على الساعة] LT',
4758 lastWeek: 'dddd [على الساعة] LT',
4759 sameElse: 'L'
4760 },
4761 relativeTime : {
4762 future : 'في %s',
4763 past : 'منذ %s',
4764 s : 'ثوان',
4765 m : 'دقيقة',
4766 mm : '%d دقائق',
4767 h : 'ساعة',
4768 hh : '%d ساعات',
4769 d : 'يوم',
4770 dd : '%d أيام',
4771 M : 'شهر',
4772 MM : '%d أشهر',
4773 y : 'سنة',
4774 yy : '%d سنوات'
4775 },
4776 week : {
4777 dow : 6, // Saturday is the first day of the week.
4778 doy : 12 // The week that contains Jan 1st is the first week of the year.
4779 }
4780 });
4781
4782 //! moment.js locale configuration
4783 //! locale : Arabic (Saudi Arabia) [ar-sa]
4784 //! author : Suhail Alkowaileet : https://github.com/xsoh
4785
4786 var symbolMap$1 = {
4787 '1': '١',
4788 '2': '٢',
4789 '3': '٣',
4790 '4': '٤',
4791 '5': '٥',
4792 '6': '٦',
4793 '7': '٧',
4794 '8': '٨',
4795 '9': '٩',
4796 '0': '٠'
4797 };
4798 var numberMap = {
4799 '١': '1',
4800 '٢': '2',
4801 '٣': '3',
4802 '٤': '4',
4803 '٥': '5',
4804 '٦': '6',
4805 '٧': '7',
4806 '٨': '8',
4807 '٩': '9',
4808 '٠': '0'
4809 };
4810
4811 hooks.defineLocale('ar-sa', {
4812 months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4813 monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4814 weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4815 weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4816 weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4817 weekdaysParseExact : true,
4818 longDateFormat : {
4819 LT : 'HH:mm',
4820 LTS : 'HH:mm:ss',
4821 L : 'DD/MM/YYYY',
4822 LL : 'D MMMM YYYY',
4823 LLL : 'D MMMM YYYY HH:mm',
4824 LLLL : 'dddd D MMMM YYYY HH:mm'
4825 },
4826 meridiemParse: /ص|م/,
4827 isPM : function (input) {
4828 return 'م' === input;
4829 },
4830 meridiem : function (hour, minute, isLower) {
4831 if (hour < 12) {
4832 return 'ص';
4833 } else {
4834 return 'م';
4835 }
4836 },
4837 calendar : {
4838 sameDay: '[اليوم على الساعة] LT',
4839 nextDay: '[غدا على الساعة] LT',
4840 nextWeek: 'dddd [على الساعة] LT',
4841 lastDay: '[أمس على الساعة] LT',
4842 lastWeek: 'dddd [على الساعة] LT',
4843 sameElse: 'L'
4844 },
4845 relativeTime : {
4846 future : 'في %s',
4847 past : 'منذ %s',
4848 s : 'ثوان',
4849 m : 'دقيقة',
4850 mm : '%d دقائق',
4851 h : 'ساعة',
4852 hh : '%d ساعات',
4853 d : 'يوم',
4854 dd : '%d أيام',
4855 M : 'شهر',
4856 MM : '%d أشهر',
4857 y : 'سنة',
4858 yy : '%d سنوات'
4859 },
4860 preparse: function (string) {
4861 return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
4862 return numberMap[match];
4863 }).replace(/،/g, ',');
4864 },
4865 postformat: function (string) {
4866 return string.replace(/\d/g, function (match) {
4867 return symbolMap$1[match];
4868 }).replace(/,/g, '،');
4869 },
4870 week : {
4871 dow : 0, // Sunday is the first day of the week.
4872 doy : 6 // The week that contains Jan 1st is the first week of the year.
4873 }
4874 });
4875
4876 //! moment.js locale configuration
4877 //! locale : Arabic (Tunisia) [ar-tn]
4878 //! author : Nader Toukabri : https://github.com/naderio
4879
4880 hooks.defineLocale('ar-tn', {
4881 months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4882 monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4883 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4884 weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4885 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4886 weekdaysParseExact : true,
4887 longDateFormat: {
4888 LT: 'HH:mm',
4889 LTS: 'HH:mm:ss',
4890 L: 'DD/MM/YYYY',
4891 LL: 'D MMMM YYYY',
4892 LLL: 'D MMMM YYYY HH:mm',
4893 LLLL: 'dddd D MMMM YYYY HH:mm'
4894 },
4895 calendar: {
4896 sameDay: '[اليوم على الساعة] LT',
4897 nextDay: '[غدا على الساعة] LT',
4898 nextWeek: 'dddd [على الساعة] LT',
4899 lastDay: '[أمس على الساعة] LT',
4900 lastWeek: 'dddd [على الساعة] LT',
4901 sameElse: 'L'
4902 },
4903 relativeTime: {
4904 future: 'في %s',
4905 past: 'منذ %s',
4906 s: 'ثوان',
4907 m: 'دقيقة',
4908 mm: '%d دقائق',
4909 h: 'ساعة',
4910 hh: '%d ساعات',
4911 d: 'يوم',
4912 dd: '%d أيام',
4913 M: 'شهر',
4914 MM: '%d أشهر',
4915 y: 'سنة',
4916 yy: '%d سنوات'
4917 },
4918 week: {
4919 dow: 1, // Monday is the first day of the week.
4920 doy: 4 // The week that contains Jan 4th is the first week of the year.
4921 }
4922 });
4923
4924 //! moment.js locale configuration
4925 //! locale : Arabic [ar]
4926 //! author : Abdel Said: https://github.com/abdelsaid
4927 //! author : Ahmed Elkhatib
4928 //! author : forabi https://github.com/forabi
4929
4930 var symbolMap$2 = {
4931 '1': '١',
4932 '2': '٢',
4933 '3': '٣',
4934 '4': '٤',
4935 '5': '٥',
4936 '6': '٦',
4937 '7': '٧',
4938 '8': '٨',
4939 '9': '٩',
4940 '0': '٠'
4941 };
4942 var numberMap$1 = {
4943 '١': '1',
4944 '٢': '2',
4945 '٣': '3',
4946 '٤': '4',
4947 '٥': '5',
4948 '٦': '6',
4949 '٧': '7',
4950 '٨': '8',
4951 '٩': '9',
4952 '٠': '0'
4953 };
4954 var pluralForm$1 = function (n) {
4955 return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
4956 };
4957 var plurals$1 = {
4958 s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
4959 m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
4960 h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
4961 d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
4962 M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
4963 y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
4964 };
4965 var pluralize$1 = function (u) {
4966 return function (number, withoutSuffix, string, isFuture) {
4967 var f = pluralForm$1(number),
4968 str = plurals$1[u][pluralForm$1(number)];
4969 if (f === 2) {
4970 str = str[withoutSuffix ? 0 : 1];
4971 }
4972 return str.replace(/%d/i, number);
4973 };
4974 };
4975 var months$2 = [
4976 'كانون الثاني يناير',
4977 'شباط فبراير',
4978 'آذار مارس',
4979 'نيسان أبريل',
4980 'أيار مايو',
4981 'حزيران يونيو',
4982 'تموز يوليو',
4983 'آب أغسطس',
4984 'أيلول سبتمبر',
4985 'تشرين الأول أكتوبر',
4986 'تشرين الثاني نوفمبر',
4987 'كانون الأول ديسمبر'
4988 ];
4989
4990 hooks.defineLocale('ar', {
4991 months : months$2,
4992 monthsShort : months$2,
4993 weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4994 weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4995 weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4996 weekdaysParseExact : true,
4997 longDateFormat : {
4998 LT : 'HH:mm',
4999 LTS : 'HH:mm:ss',
5000 L : 'D/\u200FM/\u200FYYYY',
5001 LL : 'D MMMM YYYY',
5002 LLL : 'D MMMM YYYY HH:mm',
5003 LLLL : 'dddd D MMMM YYYY HH:mm'
5004 },
5005 meridiemParse: /ص|م/,
5006 isPM : function (input) {
5007 return 'م' === input;
5008 },
5009 meridiem : function (hour, minute, isLower) {
5010 if (hour < 12) {
5011 return 'ص';
5012 } else {
5013 return 'م';
5014 }
5015 },
5016 calendar : {
5017 sameDay: '[اليوم عند الساعة] LT',
5018 nextDay: '[غدًا عند الساعة] LT',
5019 nextWeek: 'dddd [عند الساعة] LT',
5020 lastDay: '[أمس عند الساعة] LT',
5021 lastWeek: 'dddd [عند الساعة] LT',
5022 sameElse: 'L'
5023 },
5024 relativeTime : {
5025 future : 'بعد %s',
5026 past : 'منذ %s',
5027 s : pluralize$1('s'),
5028 m : pluralize$1('m'),
5029 mm : pluralize$1('m'),
5030 h : pluralize$1('h'),
5031 hh : pluralize$1('h'),
5032 d : pluralize$1('d'),
5033 dd : pluralize$1('d'),
5034 M : pluralize$1('M'),
5035 MM : pluralize$1('M'),
5036 y : pluralize$1('y'),
5037 yy : pluralize$1('y')
5038 },
5039 preparse: function (string) {
5040 return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
5041 return numberMap$1[match];
5042 }).replace(/،/g, ',');
5043 },
5044 postformat: function (string) {
5045 return string.replace(/\d/g, function (match) {
5046 return symbolMap$2[match];
5047 }).replace(/,/g, '،');
5048 },
5049 week : {
5050 dow : 6, // Saturday is the first day of the week.
5051 doy : 12 // The week that contains Jan 1st is the first week of the year.
5052 }
5053 });
5054
5055 //! moment.js locale configuration
5056 //! locale : Azerbaijani [az]
5057 //! author : topchiyev : https://github.com/topchiyev
5058
5059 var suffixes = {
5060 1: '-inci',
5061 5: '-inci',
5062 8: '-inci',
5063 70: '-inci',
5064 80: '-inci',
5065 2: '-nci',
5066 7: '-nci',
5067 20: '-nci',
5068 50: '-nci',
5069 3: '-üncü',
5070 4: '-üncü',
5071 100: '-üncü',
5072 6: '-ncı',
5073 9: '-uncu',
5074 10: '-uncu',
5075 30: '-uncu',
5076 60: '-ıncı',
5077 90: '-ıncı'
5078 };
5079
5080 hooks.defineLocale('az', {
5081 months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),
5082 monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
5083 weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),
5084 weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
5085 weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
5086 weekdaysParseExact : true,
5087 longDateFormat : {
5088 LT : 'HH:mm',
5089 LTS : 'HH:mm:ss',
5090 L : 'DD.MM.YYYY',
5091 LL : 'D MMMM YYYY',
5092 LLL : 'D MMMM YYYY HH:mm',
5093 LLLL : 'dddd, D MMMM YYYY HH:mm'
5094 },
5095 calendar : {
5096 sameDay : '[bugün saat] LT',
5097 nextDay : '[sabah saat] LT',
5098 nextWeek : '[gələn həftə] dddd [saat] LT',
5099 lastDay : '[dünən] LT',
5100 lastWeek : '[keçən həftə] dddd [saat] LT',
5101 sameElse : 'L'
5102 },
5103 relativeTime : {
5104 future : '%s sonra',
5105 past : '%s əvvəl',
5106 s : 'birneçə saniyyə',
5107 m : 'bir dəqiqə',
5108 mm : '%d dəqiqə',
5109 h : 'bir saat',
5110 hh : '%d saat',
5111 d : 'bir gün',
5112 dd : '%d gün',
5113 M : 'bir ay',
5114 MM : '%d ay',
5115 y : 'bir il',
5116 yy : '%d il'
5117 },
5118 meridiemParse: /gecə|səhər|gündüz|axşam/,
5119 isPM : function (input) {
5120 return /^(gündüz|axşam)$/.test(input);
5121 },
5122 meridiem : function (hour, minute, isLower) {
5123 if (hour < 4) {
5124 return 'gecə';
5125 } else if (hour < 12) {
5126 return 'səhər';
5127 } else if (hour < 17) {
5128 return 'gündüz';
5129 } else {
5130 return 'axşam';
5131 }
5132 },
5133 dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
5134 ordinal : function (number) {
5135 if (number === 0) { // special case for zero
5136 return number + '-ıncı';
5137 }
5138 var a = number % 10,
5139 b = number % 100 - a,
5140 c = number >= 100 ? 100 : null;
5141 return number + (suffixes[a] || suffixes[b] || suffixes[c]);
5142 },
5143 week : {
5144 dow : 1, // Monday is the first day of the week.
5145 doy : 7 // The week that contains Jan 1st is the first week of the year.
5146 }
5147 });
5148
5149 //! moment.js locale configuration
5150 //! locale : Belarusian [be]
5151 //! author : Dmitry Demidov : https://github.com/demidov91
5152 //! author: Praleska: http://praleska.pro/
5153 //! Author : Menelion Elensúle : https://github.com/Oire
5154
5155 function plural(word, num) {
5156 var forms = word.split('_');
5157 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]);
5158 }
5159 function relativeTimeWithPlural(number, withoutSuffix, key) {
5160 var format = {
5161 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
5162 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
5163 'dd': 'дзень_дні_дзён',
5164 'MM': 'месяц_месяцы_месяцаў',
5165 'yy': 'год_гады_гадоў'
5166 };
5167 if (key === 'm') {
5168 return withoutSuffix ? 'хвіліна' : 'хвіліну';
5169 }
5170 else if (key === 'h') {
5171 return withoutSuffix ? 'гадзіна' : 'гадзіну';
5172 }
5173 else {
5174 return number + ' ' + plural(format[key], +number);
5175 }
5176 }
5177
5178 hooks.defineLocale('be', {
5179 months : {
5180 format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),
5181 standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')
5182 },
5183 monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
5184 weekdays : {
5185 format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),
5186 standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),
5187 isFormat: /\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/
5188 },
5189 weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
5190 weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
5191 longDateFormat : {
5192 LT : 'HH:mm',
5193 LTS : 'HH:mm:ss',
5194 L : 'DD.MM.YYYY',
5195 LL : 'D MMMM YYYY г.',
5196 LLL : 'D MMMM YYYY г., HH:mm',
5197 LLLL : 'dddd, D MMMM YYYY г., HH:mm'
5198 },
5199 calendar : {
5200 sameDay: '[Сёння ў] LT',
5201 nextDay: '[Заўтра ў] LT',
5202 lastDay: '[Учора ў] LT',
5203 nextWeek: function () {
5204 return '[У] dddd [ў] LT';
5205 },
5206 lastWeek: function () {
5207 switch (this.day()) {
5208 case 0:
5209 case 3:
5210 case 5:
5211 case 6:
5212 return '[У мінулую] dddd [ў] LT';
5213 case 1:
5214 case 2:
5215 case 4:
5216 return '[У мінулы] dddd [ў] LT';
5217 }
5218 },
5219 sameElse: 'L'
5220 },
5221 relativeTime : {
5222 future : 'праз %s',
5223 past : '%s таму',
5224 s : 'некалькі секунд',
5225 m : relativeTimeWithPlural,
5226 mm : relativeTimeWithPlural,
5227 h : relativeTimeWithPlural,
5228 hh : relativeTimeWithPlural,
5229 d : 'дзень',
5230 dd : relativeTimeWithPlural,
5231 M : 'месяц',
5232 MM : relativeTimeWithPlural,
5233 y : 'год',
5234 yy : relativeTimeWithPlural
5235 },
5236 meridiemParse: /ночы|раніцы|дня|вечара/,
5237 isPM : function (input) {
5238 return /^(дня|вечара)$/.test(input);
5239 },
5240 meridiem : function (hour, minute, isLower) {
5241 if (hour < 4) {
5242 return 'ночы';
5243 } else if (hour < 12) {
5244 return 'раніцы';
5245 } else if (hour < 17) {
5246 return 'дня';
5247 } else {
5248 return 'вечара';
5249 }
5250 },
5251 dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
5252 ordinal: function (number, period) {
5253 switch (period) {
5254 case 'M':
5255 case 'd':
5256 case 'DDD':
5257 case 'w':
5258 case 'W':
5259 return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';
5260 case 'D':
5261 return number + '-га';
5262 default:
5263 return number;
5264 }
5265 },
5266 week : {
5267 dow : 1, // Monday is the first day of the week.
5268 doy : 7 // The week that contains Jan 1st is the first week of the year.
5269 }
5270 });
5271
5272 //! moment.js locale configuration
5273 //! locale : Bulgarian [bg]
5274 //! author : Krasen Borisov : https://github.com/kraz
5275
5276 hooks.defineLocale('bg', {
5277 months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),
5278 monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
5279 weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),
5280 weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
5281 weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
5282 longDateFormat : {
5283 LT : 'H:mm',
5284 LTS : 'H:mm:ss',
5285 L : 'D.MM.YYYY',
5286 LL : 'D MMMM YYYY',
5287 LLL : 'D MMMM YYYY H:mm',
5288 LLLL : 'dddd, D MMMM YYYY H:mm'
5289 },
5290 calendar : {
5291 sameDay : '[Днес в] LT',
5292 nextDay : '[Утре в] LT',
5293 nextWeek : 'dddd [в] LT',
5294 lastDay : '[Вчера в] LT',
5295 lastWeek : function () {
5296 switch (this.day()) {
5297 case 0:
5298 case 3:
5299 case 6:
5300 return '[В изминалата] dddd [в] LT';
5301 case 1:
5302 case 2:
5303 case 4:
5304 case 5:
5305 return '[В изминалия] dddd [в] LT';
5306 }
5307 },
5308 sameElse : 'L'
5309 },
5310 relativeTime : {
5311 future : 'след %s',
5312 past : 'преди %s',
5313 s : 'няколко секунди',
5314 m : 'минута',
5315 mm : '%d минути',
5316 h : 'час',
5317 hh : '%d часа',
5318 d : 'ден',
5319 dd : '%d дни',
5320 M : 'месец',
5321 MM : '%d месеца',
5322 y : 'година',
5323 yy : '%d години'
5324 },
5325 dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
5326 ordinal : function (number) {
5327 var lastDigit = number % 10,
5328 last2Digits = number % 100;
5329 if (number === 0) {
5330 return number + '-ев';
5331 } else if (last2Digits === 0) {
5332 return number + '-ен';
5333 } else if (last2Digits > 10 && last2Digits < 20) {
5334 return number + '-ти';
5335 } else if (lastDigit === 1) {
5336 return number + '-ви';
5337 } else if (lastDigit === 2) {
5338 return number + '-ри';
5339 } else if (lastDigit === 7 || lastDigit === 8) {
5340 return number + '-ми';
5341 } else {
5342 return number + '-ти';
5343 }
5344 },
5345 week : {
5346 dow : 1, // Monday is the first day of the week.
5347 doy : 7 // The week that contains Jan 1st is the first week of the year.
5348 }
5349 });
5350
5351 //! moment.js locale configuration
5352 //! locale : Bengali [bn]
5353 //! author : Kaushik Gandhi : https://github.com/kaushikgandhi
5354
5355 var symbolMap$3 = {
5356 '1': '১',
5357 '2': '২',
5358 '3': '৩',
5359 '4': '৪',
5360 '5': '৫',
5361 '6': '৬',
5362 '7': '৭',
5363 '8': '৮',
5364 '9': '৯',
5365 '0': '০'
5366 };
5367 var numberMap$2 = {
5368 '১': '1',
5369 '২': '2',
5370 '৩': '3',
5371 '৪': '4',
5372 '৫': '5',
5373 '৬': '6',
5374 '৭': '7',
5375 '৮': '8',
5376 '৯': '9',
5377 '০': '0'
5378 };
5379
5380 hooks.defineLocale('bn', {
5381 months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
5382 monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),
5383 weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),
5384 weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
5385 weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),
5386 longDateFormat : {
5387 LT : 'A h:mm সময়',
5388 LTS : 'A h:mm:ss সময়',
5389 L : 'DD/MM/YYYY',
5390 LL : 'D MMMM YYYY',
5391 LLL : 'D MMMM YYYY, A h:mm সময়',
5392 LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'
5393 },
5394 calendar : {
5395 sameDay : '[আজ] LT',
5396 nextDay : '[আগামীকাল] LT',
5397 nextWeek : 'dddd, LT',
5398 lastDay : '[গতকাল] LT',
5399 lastWeek : '[গত] dddd, LT',
5400 sameElse : 'L'
5401 },
5402 relativeTime : {
5403 future : '%s পরে',
5404 past : '%s আগে',
5405 s : 'কয়েক সেকেন্ড',
5406 m : 'এক মিনিট',
5407 mm : '%d মিনিট',
5408 h : 'এক ঘন্টা',
5409 hh : '%d ঘন্টা',
5410 d : 'এক দিন',
5411 dd : '%d দিন',
5412 M : 'এক মাস',
5413 MM : '%d মাস',
5414 y : 'এক বছর',
5415 yy : '%d বছর'
5416 },
5417 preparse: function (string) {
5418 return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
5419 return numberMap$2[match];
5420 });
5421 },
5422 postformat: function (string) {
5423 return string.replace(/\d/g, function (match) {
5424 return symbolMap$3[match];
5425 });
5426 },
5427 meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
5428 meridiemHour : function (hour, meridiem) {
5429 if (hour === 12) {
5430 hour = 0;
5431 }
5432 if ((meridiem === 'রাত' && hour >= 4) ||
5433 (meridiem === 'দুপুর' && hour < 5) ||
5434 meridiem === 'বিকাল') {
5435 return hour + 12;
5436 } else {
5437 return hour;
5438 }
5439 },
5440 meridiem : function (hour, minute, isLower) {
5441 if (hour < 4) {
5442 return 'রাত';
5443 } else if (hour < 10) {
5444 return 'সকাল';
5445 } else if (hour < 17) {
5446 return 'দুপুর';
5447 } else if (hour < 20) {
5448 return 'বিকাল';
5449 } else {
5450 return 'রাত';
5451 }
5452 },
5453 week : {
5454 dow : 0, // Sunday is the first day of the week.
5455 doy : 6 // The week that contains Jan 1st is the first week of the year.
5456 }
5457 });
5458
5459 //! moment.js locale configuration
5460 //! locale : Tibetan [bo]
5461 //! author : Thupten N. Chakrishar : https://github.com/vajradog
5462
5463 var symbolMap$4 = {
5464 '1': '༡',
5465 '2': '༢',
5466 '3': '༣',
5467 '4': '༤',
5468 '5': '༥',
5469 '6': '༦',
5470 '7': '༧',
5471 '8': '༨',
5472 '9': '༩',
5473 '0': '༠'
5474 };
5475 var numberMap$3 = {
5476 '༡': '1',
5477 '༢': '2',
5478 '༣': '3',
5479 '༤': '4',
5480 '༥': '5',
5481 '༦': '6',
5482 '༧': '7',
5483 '༨': '8',
5484 '༩': '9',
5485 '༠': '0'
5486 };
5487
5488 hooks.defineLocale('bo', {
5489 months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
5490 monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
5491 weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),
5492 weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
5493 weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
5494 longDateFormat : {
5495 LT : 'A h:mm',
5496 LTS : 'A h:mm:ss',
5497 L : 'DD/MM/YYYY',
5498 LL : 'D MMMM YYYY',
5499 LLL : 'D MMMM YYYY, A h:mm',
5500 LLLL : 'dddd, D MMMM YYYY, A h:mm'
5501 },
5502 calendar : {
5503 sameDay : '[དི་རིང] LT',
5504 nextDay : '[སང་ཉིན] LT',
5505 nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',
5506 lastDay : '[ཁ་སང] LT',
5507 lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
5508 sameElse : 'L'
5509 },
5510 relativeTime : {
5511 future : '%s ལ་',
5512 past : '%s སྔན་ལ',
5513 s : 'ལམ་སང',
5514 m : 'སྐར་མ་གཅིག',
5515 mm : '%d སྐར་མ',
5516 h : 'ཆུ་ཚོད་གཅིག',
5517 hh : '%d ཆུ་ཚོད',
5518 d : 'ཉིན་གཅིག',
5519 dd : '%d ཉིན་',
5520 M : 'ཟླ་བ་གཅིག',
5521 MM : '%d ཟླ་བ',
5522 y : 'ལོ་གཅིག',
5523 yy : '%d ལོ'
5524 },
5525 preparse: function (string) {
5526 return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
5527 return numberMap$3[match];
5528 });
5529 },
5530 postformat: function (string) {
5531 return string.replace(/\d/g, function (match) {
5532 return symbolMap$4[match];
5533 });
5534 },
5535 meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
5536 meridiemHour : function (hour, meridiem) {
5537 if (hour === 12) {
5538 hour = 0;
5539 }
5540 if ((meridiem === 'མཚན་མོ' && hour >= 4) ||
5541 (meridiem === 'ཉིན་གུང' && hour < 5) ||
5542 meridiem === 'དགོང་དག') {
5543 return hour + 12;
5544 } else {
5545 return hour;
5546 }
5547 },
5548 meridiem : function (hour, minute, isLower) {
5549 if (hour < 4) {
5550 return 'མཚན་མོ';
5551 } else if (hour < 10) {
5552 return 'ཞོགས་ཀས';
5553 } else if (hour < 17) {
5554 return 'ཉིན་གུང';
5555 } else if (hour < 20) {
5556 return 'དགོང་དག';
5557 } else {
5558 return 'མཚན་མོ';
5559 }
5560 },
5561 week : {
5562 dow : 0, // Sunday is the first day of the week.
5563 doy : 6 // The week that contains Jan 1st is the first week of the year.
5564 }
5565 });
5566
5567 //! moment.js locale configuration
5568 //! locale : Breton [br]
5569 //! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
5570
5571 function relativeTimeWithMutation(number, withoutSuffix, key) {
5572 var format = {
5573 'mm': 'munutenn',
5574 'MM': 'miz',
5575 'dd': 'devezh'
5576 };
5577 return number + ' ' + mutation(format[key], number);
5578 }
5579 function specialMutationForYears(number) {
5580 switch (lastNumber(number)) {
5581 case 1:
5582 case 3:
5583 case 4:
5584 case 5:
5585 case 9:
5586 return number + ' bloaz';
5587 default:
5588 return number + ' vloaz';
5589 }
5590 }
5591 function lastNumber(number) {
5592 if (number > 9) {
5593 return lastNumber(number % 10);
5594 }
5595 return number;
5596 }
5597 function mutation(text, number) {
5598 if (number === 2) {
5599 return softMutation(text);
5600 }
5601 return text;
5602 }
5603 function softMutation(text) {
5604 var mutationTable = {
5605 'm': 'v',
5606 'b': 'v',
5607 'd': 'z'
5608 };
5609 if (mutationTable[text.charAt(0)] === undefined) {
5610 return text;
5611 }
5612 return mutationTable[text.charAt(0)] + text.substring(1);
5613 }
5614
5615 hooks.defineLocale('br', {
5616 months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),
5617 monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
5618 weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'),
5619 weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
5620 weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
5621 weekdaysParseExact : true,
5622 longDateFormat : {
5623 LT : 'h[e]mm A',
5624 LTS : 'h[e]mm:ss A',
5625 L : 'DD/MM/YYYY',
5626 LL : 'D [a viz] MMMM YYYY',
5627 LLL : 'D [a viz] MMMM YYYY h[e]mm A',
5628 LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'
5629 },
5630 calendar : {
5631 sameDay : '[Hiziv da] LT',
5632 nextDay : '[Warc\'hoazh da] LT',
5633 nextWeek : 'dddd [da] LT',
5634 lastDay : '[Dec\'h da] LT',
5635 lastWeek : 'dddd [paset da] LT',
5636 sameElse : 'L'
5637 },
5638 relativeTime : {
5639 future : 'a-benn %s',
5640 past : '%s \'zo',
5641 s : 'un nebeud segondennoù',
5642 m : 'ur vunutenn',
5643 mm : relativeTimeWithMutation,
5644 h : 'un eur',
5645 hh : '%d eur',
5646 d : 'un devezh',
5647 dd : relativeTimeWithMutation,
5648 M : 'ur miz',
5649 MM : relativeTimeWithMutation,
5650 y : 'ur bloaz',
5651 yy : specialMutationForYears
5652 },
5653 dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
5654 ordinal : function (number) {
5655 var output = (number === 1) ? 'añ' : 'vet';
5656 return number + output;
5657 },
5658 week : {
5659 dow : 1, // Monday is the first day of the week.
5660 doy : 4 // The week that contains Jan 4th is the first week of the year.
5661 }
5662 });
5663
5664 //! moment.js locale configuration
5665 //! locale : Bosnian [bs]
5666 //! author : Nedim Cholich : https://github.com/frontyard
5667 //! based on (hr) translation by Bojan Marković
5668
5669 function translate(number, withoutSuffix, key) {
5670 var result = number + ' ';
5671 switch (key) {
5672 case 'm':
5673 return withoutSuffix ? 'jedna minuta' : 'jedne minute';
5674 case 'mm':
5675 if (number === 1) {
5676 result += 'minuta';
5677 } else if (number === 2 || number === 3 || number === 4) {
5678 result += 'minute';
5679 } else {
5680 result += 'minuta';
5681 }
5682 return result;
5683 case 'h':
5684 return withoutSuffix ? 'jedan sat' : 'jednog sata';
5685 case 'hh':
5686 if (number === 1) {
5687 result += 'sat';
5688 } else if (number === 2 || number === 3 || number === 4) {
5689 result += 'sata';
5690 } else {
5691 result += 'sati';
5692 }
5693 return result;
5694 case 'dd':
5695 if (number === 1) {
5696 result += 'dan';
5697 } else {
5698 result += 'dana';
5699 }
5700 return result;
5701 case 'MM':
5702 if (number === 1) {
5703 result += 'mjesec';
5704 } else if (number === 2 || number === 3 || number === 4) {
5705 result += 'mjeseca';
5706 } else {
5707 result += 'mjeseci';
5708 }
5709 return result;
5710 case 'yy':
5711 if (number === 1) {
5712 result += 'godina';
5713 } else if (number === 2 || number === 3 || number === 4) {
5714 result += 'godine';
5715 } else {
5716 result += 'godina';
5717 }
5718 return result;
5719 }
5720 }
5721
5722 hooks.defineLocale('bs', {
5723 months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),
5724 monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),
5725 monthsParseExact: true,
5726 weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
5727 weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
5728 weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
5729 weekdaysParseExact : true,
5730 longDateFormat : {
5731 LT : 'H:mm',
5732 LTS : 'H:mm:ss',
5733 L : 'DD.MM.YYYY',
5734 LL : 'D. MMMM YYYY',
5735 LLL : 'D. MMMM YYYY H:mm',
5736 LLLL : 'dddd, D. MMMM YYYY H:mm'
5737 },
5738 calendar : {
5739 sameDay : '[danas u] LT',
5740 nextDay : '[sutra u] LT',
5741 nextWeek : function () {
5742 switch (this.day()) {
5743 case 0:
5744 return '[u] [nedjelju] [u] LT';
5745 case 3:
5746 return '[u] [srijedu] [u] LT';
5747 case 6:
5748 return '[u] [subotu] [u] LT';
5749 case 1:
5750 case 2:
5751 case 4:
5752 case 5:
5753 return '[u] dddd [u] LT';
5754 }
5755 },
5756 lastDay : '[jučer u] LT',
5757 lastWeek : function () {
5758 switch (this.day()) {
5759 case 0:
5760 case 3:
5761 return '[prošlu] dddd [u] LT';
5762 case 6:
5763 return '[prošle] [subote] [u] LT';
5764 case 1:
5765 case 2:
5766 case 4:
5767 case 5:
5768 return '[prošli] dddd [u] LT';
5769 }
5770 },
5771 sameElse : 'L'
5772 },
5773 relativeTime : {
5774 future : 'za %s',
5775 past : 'prije %s',
5776 s : 'par sekundi',
5777 m : translate,
5778 mm : translate,
5779 h : translate,
5780 hh : translate,
5781 d : 'dan',
5782 dd : translate,
5783 M : 'mjesec',
5784 MM : translate,
5785 y : 'godinu',
5786 yy : translate
5787 },
5788 dayOfMonthOrdinalParse: /\d{1,2}\./,
5789 ordinal : '%d.',
5790 week : {
5791 dow : 1, // Monday is the first day of the week.
5792 doy : 7 // The week that contains Jan 1st is the first week of the year.
5793 }
5794 });
5795
5796 //! moment.js locale configuration
5797 //! locale : Catalan [ca]
5798 //! author : Juan G. Hurtado : https://github.com/juanghurtado
5799
5800 hooks.defineLocale('ca', {
5801 months : {
5802 standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),
5803 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('_'),
5804 isFormat: /D[oD]?(\s)+MMMM/
5805 },
5806 monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),
5807 monthsParseExact : true,
5808 weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),
5809 weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
5810 weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'),
5811 weekdaysParseExact : true,
5812 longDateFormat : {
5813 LT : 'H:mm',
5814 LTS : 'H:mm:ss',
5815 L : 'DD/MM/YYYY',
5816 LL : '[el] D MMMM [de] YYYY',
5817 ll : 'D MMM YYYY',
5818 LLL : '[el] D MMMM [de] YYYY [a les] H:mm',
5819 lll : 'D MMM YYYY, H:mm',
5820 LLLL : '[el] dddd D MMMM [de] YYYY [a les] H:mm',
5821 llll : 'ddd D MMM YYYY, H:mm'
5822 },
5823 calendar : {
5824 sameDay : function () {
5825 return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5826 },
5827 nextDay : function () {
5828 return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5829 },
5830 nextWeek : function () {
5831 return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5832 },
5833 lastDay : function () {
5834 return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5835 },
5836 lastWeek : function () {
5837 return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5838 },
5839 sameElse : 'L'
5840 },
5841 relativeTime : {
5842 future : 'd\'aquí %s',
5843 past : 'fa %s',
5844 s : 'uns segons',
5845 m : 'un minut',
5846 mm : '%d minuts',
5847 h : 'una hora',
5848 hh : '%d hores',
5849 d : 'un dia',
5850 dd : '%d dies',
5851 M : 'un mes',
5852 MM : '%d mesos',
5853 y : 'un any',
5854 yy : '%d anys'
5855 },
5856 dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
5857 ordinal : function (number, period) {
5858 var output = (number === 1) ? 'r' :
5859 (number === 2) ? 'n' :
5860 (number === 3) ? 'r' :
5861 (number === 4) ? 't' : 'è';
5862 if (period === 'w' || period === 'W') {
5863 output = 'a';
5864 }
5865 return number + output;
5866 },
5867 week : {
5868 dow : 1, // Monday is the first day of the week.
5869 doy : 4 // The week that contains Jan 4th is the first week of the year.
5870 }
5871 });
5872
5873 //! moment.js locale configuration
5874 //! locale : Czech [cs]
5875 //! author : petrbela : https://github.com/petrbela
5876
5877 var months$3 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_');
5878 var monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');
5879 function plural$1(n) {
5880 return (n > 1) && (n < 5) && (~~(n / 10) !== 1);
5881 }
5882 function translate$1(number, withoutSuffix, key, isFuture) {
5883 var result = number + ' ';
5884 switch (key) {
5885 case 's': // a few seconds / in a few seconds / a few seconds ago
5886 return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';
5887 case 'm': // a minute / in a minute / a minute ago
5888 return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');
5889 case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
5890 if (withoutSuffix || isFuture) {
5891 return result + (plural$1(number) ? 'minuty' : 'minut');
5892 } else {
5893 return result + 'minutami';
5894 }
5895 break;
5896 case 'h': // an hour / in an hour / an hour ago
5897 return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
5898 case 'hh': // 9 hours / in 9 hours / 9 hours ago
5899 if (withoutSuffix || isFuture) {
5900 return result + (plural$1(number) ? 'hodiny' : 'hodin');
5901 } else {
5902 return result + 'hodinami';
5903 }
5904 break;
5905 case 'd': // a day / in a day / a day ago
5906 return (withoutSuffix || isFuture) ? 'den' : 'dnem';
5907 case 'dd': // 9 days / in 9 days / 9 days ago
5908 if (withoutSuffix || isFuture) {
5909 return result + (plural$1(number) ? 'dny' : 'dní');
5910 } else {
5911 return result + 'dny';
5912 }
5913 break;
5914 case 'M': // a month / in a month / a month ago
5915 return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';
5916 case 'MM': // 9 months / in 9 months / 9 months ago
5917 if (withoutSuffix || isFuture) {
5918 return result + (plural$1(number) ? 'měsíce' : 'měsíců');
5919 } else {
5920 return result + 'měsíci';
5921 }
5922 break;
5923 case 'y': // a year / in a year / a year ago
5924 return (withoutSuffix || isFuture) ? 'rok' : 'rokem';
5925 case 'yy': // 9 years / in 9 years / 9 years ago
5926 if (withoutSuffix || isFuture) {
5927 return result + (plural$1(number) ? 'roky' : 'let');
5928 } else {
5929 return result + 'lety';
5930 }
5931 break;
5932 }
5933 }
5934
5935 hooks.defineLocale('cs', {
5936 months : months$3,
5937 monthsShort : monthsShort,
5938 monthsParse : (function (months, monthsShort) {
5939 var i, _monthsParse = [];
5940 for (i = 0; i < 12; i++) {
5941 // use custom parser to solve problem with July (červenec)
5942 _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
5943 }
5944 return _monthsParse;
5945 }(months$3, monthsShort)),
5946 shortMonthsParse : (function (monthsShort) {
5947 var i, _shortMonthsParse = [];
5948 for (i = 0; i < 12; i++) {
5949 _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i');
5950 }
5951 return _shortMonthsParse;
5952 }(monthsShort)),
5953 longMonthsParse : (function (months) {
5954 var i, _longMonthsParse = [];
5955 for (i = 0; i < 12; i++) {
5956 _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i');
5957 }
5958 return _longMonthsParse;
5959 }(months$3)),
5960 weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
5961 weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),
5962 weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),
5963 longDateFormat : {
5964 LT: 'H:mm',
5965 LTS : 'H:mm:ss',
5966 L : 'DD.MM.YYYY',
5967 LL : 'D. MMMM YYYY',
5968 LLL : 'D. MMMM YYYY H:mm',
5969 LLLL : 'dddd D. MMMM YYYY H:mm',
5970 l : 'D. M. YYYY'
5971 },
5972 calendar : {
5973 sameDay: '[dnes v] LT',
5974 nextDay: '[zítra v] LT',
5975 nextWeek: function () {
5976 switch (this.day()) {
5977 case 0:
5978 return '[v neděli v] LT';
5979 case 1:
5980 case 2:
5981 return '[v] dddd [v] LT';
5982 case 3:
5983 return '[ve středu v] LT';
5984 case 4:
5985 return '[ve čtvrtek v] LT';
5986 case 5:
5987 return '[v pátek v] LT';
5988 case 6:
5989 return '[v sobotu v] LT';
5990 }
5991 },
5992 lastDay: '[včera v] LT',
5993 lastWeek: function () {
5994 switch (this.day()) {
5995 case 0:
5996 return '[minulou neděli v] LT';
5997 case 1:
5998 case 2:
5999 return '[minulé] dddd [v] LT';
6000 case 3:
6001 return '[minulou středu v] LT';
6002 case 4:
6003 case 5:
6004 return '[minulý] dddd [v] LT';
6005 case 6:
6006 return '[minulou sobotu v] LT';
6007 }
6008 },
6009 sameElse: 'L'
6010 },
6011 relativeTime : {
6012 future : 'za %s',
6013 past : 'před %s',
6014 s : translate$1,
6015 m : translate$1,
6016 mm : translate$1,
6017 h : translate$1,
6018 hh : translate$1,
6019 d : translate$1,
6020 dd : translate$1,
6021 M : translate$1,
6022 MM : translate$1,
6023 y : translate$1,
6024 yy : translate$1
6025 },
6026 dayOfMonthOrdinalParse : /\d{1,2}\./,
6027 ordinal : '%d.',
6028 week : {
6029 dow : 1, // Monday is the first day of the week.
6030 doy : 4 // The week that contains Jan 4th is the first week of the year.
6031 }
6032 });
6033
6034 //! moment.js locale configuration
6035 //! locale : Chuvash [cv]
6036 //! author : Anatoly Mironov : https://github.com/mirontoli
6037
6038 hooks.defineLocale('cv', {
6039 months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),
6040 monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
6041 weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),
6042 weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
6043 weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
6044 longDateFormat : {
6045 LT : 'HH:mm',
6046 LTS : 'HH:mm:ss',
6047 L : 'DD-MM-YYYY',
6048 LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
6049 LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
6050 LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'
6051 },
6052 calendar : {
6053 sameDay: '[Паян] LT [сехетре]',
6054 nextDay: '[Ыран] LT [сехетре]',
6055 lastDay: '[Ӗнер] LT [сехетре]',
6056 nextWeek: '[Ҫитес] dddd LT [сехетре]',
6057 lastWeek: '[Иртнӗ] dddd LT [сехетре]',
6058 sameElse: 'L'
6059 },
6060 relativeTime : {
6061 future : function (output) {
6062 var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';
6063 return output + affix;
6064 },
6065 past : '%s каялла',
6066 s : 'пӗр-ик ҫеккунт',
6067 m : 'пӗр минут',
6068 mm : '%d минут',
6069 h : 'пӗр сехет',
6070 hh : '%d сехет',
6071 d : 'пӗр кун',
6072 dd : '%d кун',
6073 M : 'пӗр уйӑх',
6074 MM : '%d уйӑх',
6075 y : 'пӗр ҫул',
6076 yy : '%d ҫул'
6077 },
6078 dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
6079 ordinal : '%d-мӗш',
6080 week : {
6081 dow : 1, // Monday is the first day of the week.
6082 doy : 7 // The week that contains Jan 1st is the first week of the year.
6083 }
6084 });
6085
6086 //! moment.js locale configuration
6087 //! locale : Welsh [cy]
6088 //! author : Robert Allen : https://github.com/robgallen
6089 //! author : https://github.com/ryangreaves
6090
6091 hooks.defineLocale('cy', {
6092 months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),
6093 monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),
6094 weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),
6095 weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
6096 weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
6097 weekdaysParseExact : true,
6098 // time formats are the same as en-gb
6099 longDateFormat: {
6100 LT: 'HH:mm',
6101 LTS : 'HH:mm:ss',
6102 L: 'DD/MM/YYYY',
6103 LL: 'D MMMM YYYY',
6104 LLL: 'D MMMM YYYY HH:mm',
6105 LLLL: 'dddd, D MMMM YYYY HH:mm'
6106 },
6107 calendar: {
6108 sameDay: '[Heddiw am] LT',
6109 nextDay: '[Yfory am] LT',
6110 nextWeek: 'dddd [am] LT',
6111 lastDay: '[Ddoe am] LT',
6112 lastWeek: 'dddd [diwethaf am] LT',
6113 sameElse: 'L'
6114 },
6115 relativeTime: {
6116 future: 'mewn %s',
6117 past: '%s yn ôl',
6118 s: 'ychydig eiliadau',
6119 m: 'munud',
6120 mm: '%d munud',
6121 h: 'awr',
6122 hh: '%d awr',
6123 d: 'diwrnod',
6124 dd: '%d diwrnod',
6125 M: 'mis',
6126 MM: '%d mis',
6127 y: 'blwyddyn',
6128 yy: '%d flynedd'
6129 },
6130 dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
6131 // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
6132 ordinal: function (number) {
6133 var b = number,
6134 output = '',
6135 lookup = [
6136 '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed
6137 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed
6138 ];
6139 if (b > 20) {
6140 if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
6141 output = 'fed'; // not 30ain, 70ain or 90ain
6142 } else {
6143 output = 'ain';
6144 }
6145 } else if (b > 0) {
6146 output = lookup[b];
6147 }
6148 return number + output;
6149 },
6150 week : {
6151 dow : 1, // Monday is the first day of the week.
6152 doy : 4 // The week that contains Jan 4th is the first week of the year.
6153 }
6154 });
6155
6156 //! moment.js locale configuration
6157 //! locale : Danish [da]
6158 //! author : Ulrik Nielsen : https://github.com/mrbase
6159
6160 hooks.defineLocale('da', {
6161 months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),
6162 monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
6163 weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
6164 weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),
6165 weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
6166 longDateFormat : {
6167 LT : 'HH:mm',
6168 LTS : 'HH:mm:ss',
6169 L : 'DD/MM/YYYY',
6170 LL : 'D. MMMM YYYY',
6171 LLL : 'D. MMMM YYYY HH:mm',
6172 LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'
6173 },
6174 calendar : {
6175 sameDay : '[i dag kl.] LT',
6176 nextDay : '[i morgen kl.] LT',
6177 nextWeek : 'på dddd [kl.] LT',
6178 lastDay : '[i går kl.] LT',
6179 lastWeek : '[i] dddd[s kl.] LT',
6180 sameElse : 'L'
6181 },
6182 relativeTime : {
6183 future : 'om %s',
6184 past : '%s siden',
6185 s : 'få sekunder',
6186 m : 'et minut',
6187 mm : '%d minutter',
6188 h : 'en time',
6189 hh : '%d timer',
6190 d : 'en dag',
6191 dd : '%d dage',
6192 M : 'en måned',
6193 MM : '%d måneder',
6194 y : 'et år',
6195 yy : '%d år'
6196 },
6197 dayOfMonthOrdinalParse: /\d{1,2}\./,
6198 ordinal : '%d.',
6199 week : {
6200 dow : 1, // Monday is the first day of the week.
6201 doy : 4 // The week that contains Jan 4th is the first week of the year.
6202 }
6203 });
6204
6205 //! moment.js locale configuration
6206 //! locale : German (Austria) [de-at]
6207 //! author : lluchs : https://github.com/lluchs
6208 //! author: Menelion Elensúle: https://github.com/Oire
6209 //! author : Martin Groller : https://github.com/MadMG
6210 //! author : Mikolaj Dadela : https://github.com/mik01aj
6211
6212 function processRelativeTime(number, withoutSuffix, key, isFuture) {
6213 var format = {
6214 'm': ['eine Minute', 'einer Minute'],
6215 'h': ['eine Stunde', 'einer Stunde'],
6216 'd': ['ein Tag', 'einem Tag'],
6217 'dd': [number + ' Tage', number + ' Tagen'],
6218 'M': ['ein Monat', 'einem Monat'],
6219 'MM': [number + ' Monate', number + ' Monaten'],
6220 'y': ['ein Jahr', 'einem Jahr'],
6221 'yy': [number + ' Jahre', number + ' Jahren']
6222 };
6223 return withoutSuffix ? format[key][0] : format[key][1];
6224 }
6225
6226 hooks.defineLocale('de-at', {
6227 months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6228 monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
6229 monthsParseExact : true,
6230 weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6231 weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
6232 weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6233 weekdaysParseExact : true,
6234 longDateFormat : {
6235 LT: 'HH:mm',
6236 LTS: 'HH:mm:ss',
6237 L : 'DD.MM.YYYY',
6238 LL : 'D. MMMM YYYY',
6239 LLL : 'D. MMMM YYYY HH:mm',
6240 LLLL : 'dddd, D. MMMM YYYY HH:mm'
6241 },
6242 calendar : {
6243 sameDay: '[heute um] LT [Uhr]',
6244 sameElse: 'L',
6245 nextDay: '[morgen um] LT [Uhr]',
6246 nextWeek: 'dddd [um] LT [Uhr]',
6247 lastDay: '[gestern um] LT [Uhr]',
6248 lastWeek: '[letzten] dddd [um] LT [Uhr]'
6249 },
6250 relativeTime : {
6251 future : 'in %s',
6252 past : 'vor %s',
6253 s : 'ein paar Sekunden',
6254 m : processRelativeTime,
6255 mm : '%d Minuten',
6256 h : processRelativeTime,
6257 hh : '%d Stunden',
6258 d : processRelativeTime,
6259 dd : processRelativeTime,
6260 M : processRelativeTime,
6261 MM : processRelativeTime,
6262 y : processRelativeTime,
6263 yy : processRelativeTime
6264 },
6265 dayOfMonthOrdinalParse: /\d{1,2}\./,
6266 ordinal : '%d.',
6267 week : {
6268 dow : 1, // Monday is the first day of the week.
6269 doy : 4 // The week that contains Jan 4th is the first week of the year.
6270 }
6271 });
6272
6273 //! moment.js locale configuration
6274 //! locale : German (Switzerland) [de-ch]
6275 //! author : sschueller : https://github.com/sschueller
6276
6277 // based on: https://www.bk.admin.ch/dokumentation/sprachen/04915/05016/index.html?lang=de#
6278
6279 function processRelativeTime$1(number, withoutSuffix, key, isFuture) {
6280 var format = {
6281 'm': ['eine Minute', 'einer Minute'],
6282 'h': ['eine Stunde', 'einer Stunde'],
6283 'd': ['ein Tag', 'einem Tag'],
6284 'dd': [number + ' Tage', number + ' Tagen'],
6285 'M': ['ein Monat', 'einem Monat'],
6286 'MM': [number + ' Monate', number + ' Monaten'],
6287 'y': ['ein Jahr', 'einem Jahr'],
6288 'yy': [number + ' Jahre', number + ' Jahren']
6289 };
6290 return withoutSuffix ? format[key][0] : format[key][1];
6291 }
6292
6293 hooks.defineLocale('de-ch', {
6294 months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6295 monthsShort : 'Jan._Febr._März_April_Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.'.split('_'),
6296 monthsParseExact : true,
6297 weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6298 weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6299 weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6300 weekdaysParseExact : true,
6301 longDateFormat : {
6302 LT: 'HH.mm',
6303 LTS: 'HH.mm.ss',
6304 L : 'DD.MM.YYYY',
6305 LL : 'D. MMMM YYYY',
6306 LLL : 'D. MMMM YYYY HH.mm',
6307 LLLL : 'dddd, D. MMMM YYYY HH.mm'
6308 },
6309 calendar : {
6310 sameDay: '[heute um] LT [Uhr]',
6311 sameElse: 'L',
6312 nextDay: '[morgen um] LT [Uhr]',
6313 nextWeek: 'dddd [um] LT [Uhr]',
6314 lastDay: '[gestern um] LT [Uhr]',
6315 lastWeek: '[letzten] dddd [um] LT [Uhr]'
6316 },
6317 relativeTime : {
6318 future : 'in %s',
6319 past : 'vor %s',
6320 s : 'ein paar Sekunden',
6321 m : processRelativeTime$1,
6322 mm : '%d Minuten',
6323 h : processRelativeTime$1,
6324 hh : '%d Stunden',
6325 d : processRelativeTime$1,
6326 dd : processRelativeTime$1,
6327 M : processRelativeTime$1,
6328 MM : processRelativeTime$1,
6329 y : processRelativeTime$1,
6330 yy : processRelativeTime$1
6331 },
6332 dayOfMonthOrdinalParse: /\d{1,2}\./,
6333 ordinal : '%d.',
6334 week : {
6335 dow : 1, // Monday is the first day of the week.
6336 doy : 4 // The week that contains Jan 4th is the first week of the year.
6337 }
6338 });
6339
6340 //! moment.js locale configuration
6341 //! locale : German [de]
6342 //! author : lluchs : https://github.com/lluchs
6343 //! author: Menelion Elensúle: https://github.com/Oire
6344 //! author : Mikolaj Dadela : https://github.com/mik01aj
6345
6346 function processRelativeTime$2(number, withoutSuffix, key, isFuture) {
6347 var format = {
6348 'm': ['eine Minute', 'einer Minute'],
6349 'h': ['eine Stunde', 'einer Stunde'],
6350 'd': ['ein Tag', 'einem Tag'],
6351 'dd': [number + ' Tage', number + ' Tagen'],
6352 'M': ['ein Monat', 'einem Monat'],
6353 'MM': [number + ' Monate', number + ' Monaten'],
6354 'y': ['ein Jahr', 'einem Jahr'],
6355 'yy': [number + ' Jahre', number + ' Jahren']
6356 };
6357 return withoutSuffix ? format[key][0] : format[key][1];
6358 }
6359
6360 hooks.defineLocale('de', {
6361 months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6362 monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
6363 monthsParseExact : true,
6364 weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6365 weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
6366 weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6367 weekdaysParseExact : true,
6368 longDateFormat : {
6369 LT: 'HH:mm',
6370 LTS: 'HH:mm:ss',
6371 L : 'DD.MM.YYYY',
6372 LL : 'D. MMMM YYYY',
6373 LLL : 'D. MMMM YYYY HH:mm',
6374 LLLL : 'dddd, D. MMMM YYYY HH:mm'
6375 },
6376 calendar : {
6377 sameDay: '[heute um] LT [Uhr]',
6378 sameElse: 'L',
6379 nextDay: '[morgen um] LT [Uhr]',
6380 nextWeek: 'dddd [um] LT [Uhr]',
6381 lastDay: '[gestern um] LT [Uhr]',
6382 lastWeek: '[letzten] dddd [um] LT [Uhr]'
6383 },
6384 relativeTime : {
6385 future : 'in %s',
6386 past : 'vor %s',
6387 s : 'ein paar Sekunden',
6388 m : processRelativeTime$2,
6389 mm : '%d Minuten',
6390 h : processRelativeTime$2,
6391 hh : '%d Stunden',
6392 d : processRelativeTime$2,
6393 dd : processRelativeTime$2,
6394 M : processRelativeTime$2,
6395 MM : processRelativeTime$2,
6396 y : processRelativeTime$2,
6397 yy : processRelativeTime$2
6398 },
6399 dayOfMonthOrdinalParse: /\d{1,2}\./,
6400 ordinal : '%d.',
6401 week : {
6402 dow : 1, // Monday is the first day of the week.
6403 doy : 4 // The week that contains Jan 4th is the first week of the year.
6404 }
6405 });
6406
6407 //! moment.js locale configuration
6408 //! locale : Maldivian [dv]
6409 //! author : Jawish Hameed : https://github.com/jawish
6410
6411 var months$4 = [
6412 'ޖެނުއަރީ',
6413 'ފެބްރުއަރީ',
6414 'މާރިޗު',
6415 'އޭޕްރީލު',
6416 'މޭ',
6417 'ޖޫން',
6418 'ޖުލައި',
6419 'އޯގަސްޓު',
6420 'ސެޕްޓެމްބަރު',
6421 'އޮކްޓޯބަރު',
6422 'ނޮވެމްބަރު',
6423 'ޑިސެމްބަރު'
6424 ];
6425 var weekdays = [
6426 'އާދިއްތަ',
6427 'ހޯމަ',
6428 'އަންގާރަ',
6429 'ބުދަ',
6430 'ބުރާސްފަތި',
6431 'ހުކުރު',
6432 'ހޮނިހިރު'
6433 ];
6434
6435 hooks.defineLocale('dv', {
6436 months : months$4,
6437 monthsShort : months$4,
6438 weekdays : weekdays,
6439 weekdaysShort : weekdays,
6440 weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
6441 longDateFormat : {
6442
6443 LT : 'HH:mm',
6444 LTS : 'HH:mm:ss',
6445 L : 'D/M/YYYY',
6446 LL : 'D MMMM YYYY',
6447 LLL : 'D MMMM YYYY HH:mm',
6448 LLLL : 'dddd D MMMM YYYY HH:mm'
6449 },
6450 meridiemParse: /މކ|މފ/,
6451 isPM : function (input) {
6452 return 'މފ' === input;
6453 },
6454 meridiem : function (hour, minute, isLower) {
6455 if (hour < 12) {
6456 return 'މކ';
6457 } else {
6458 return 'މފ';
6459 }
6460 },
6461 calendar : {
6462 sameDay : '[މިއަދު] LT',
6463 nextDay : '[މާދަމާ] LT',
6464 nextWeek : 'dddd LT',
6465 lastDay : '[އިއްޔެ] LT',
6466 lastWeek : '[ފާއިތުވި] dddd LT',
6467 sameElse : 'L'
6468 },
6469 relativeTime : {
6470 future : 'ތެރޭގައި %s',
6471 past : 'ކުރިން %s',
6472 s : 'ސިކުންތުކޮޅެއް',
6473 m : 'މިނިޓެއް',
6474 mm : 'މިނިޓު %d',
6475 h : 'ގަޑިއިރެއް',
6476 hh : 'ގަޑިއިރު %d',
6477 d : 'ދުވަހެއް',
6478 dd : 'ދުވަސް %d',
6479 M : 'މަހެއް',
6480 MM : 'މަސް %d',
6481 y : 'އަހަރެއް',
6482 yy : 'އަހަރު %d'
6483 },
6484 preparse: function (string) {
6485 return string.replace(/،/g, ',');
6486 },
6487 postformat: function (string) {
6488 return string.replace(/,/g, '،');
6489 },
6490 week : {
6491 dow : 7, // Sunday is the first day of the week.
6492 doy : 12 // The week that contains Jan 1st is the first week of the year.
6493 }
6494 });
6495
6496 //! moment.js locale configuration
6497 //! locale : Greek [el]
6498 //! author : Aggelos Karalias : https://github.com/mehiel
6499
6500 hooks.defineLocale('el', {
6501 monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),
6502 monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),
6503 months : function (momentToFormat, format) {
6504 if (!momentToFormat) {
6505 return this._monthsNominativeEl;
6506 } else if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'
6507 return this._monthsGenitiveEl[momentToFormat.month()];
6508 } else {
6509 return this._monthsNominativeEl[momentToFormat.month()];
6510 }
6511 },
6512 monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
6513 weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),
6514 weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
6515 weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
6516 meridiem : function (hours, minutes, isLower) {
6517 if (hours > 11) {
6518 return isLower ? 'μμ' : 'ΜΜ';
6519 } else {
6520 return isLower ? 'πμ' : 'ΠΜ';
6521 }
6522 },
6523 isPM : function (input) {
6524 return ((input + '').toLowerCase()[0] === 'μ');
6525 },
6526 meridiemParse : /[ΠΜ]\.?Μ?\.?/i,
6527 longDateFormat : {
6528 LT : 'h:mm A',
6529 LTS : 'h:mm:ss A',
6530 L : 'DD/MM/YYYY',
6531 LL : 'D MMMM YYYY',
6532 LLL : 'D MMMM YYYY h:mm A',
6533 LLLL : 'dddd, D MMMM YYYY h:mm A'
6534 },
6535 calendarEl : {
6536 sameDay : '[Σήμερα {}] LT',
6537 nextDay : '[Αύριο {}] LT',
6538 nextWeek : 'dddd [{}] LT',
6539 lastDay : '[Χθες {}] LT',
6540 lastWeek : function () {
6541 switch (this.day()) {
6542 case 6:
6543 return '[το προηγούμενο] dddd [{}] LT';
6544 default:
6545 return '[την προηγούμενη] dddd [{}] LT';
6546 }
6547 },
6548 sameElse : 'L'
6549 },
6550 calendar : function (key, mom) {
6551 var output = this._calendarEl[key],
6552 hours = mom && mom.hours();
6553 if (isFunction(output)) {
6554 output = output.apply(mom);
6555 }
6556 return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));
6557 },
6558 relativeTime : {
6559 future : 'σε %s',
6560 past : '%s πριν',
6561 s : 'λίγα δευτερόλεπτα',
6562 m : 'ένα λεπτό',
6563 mm : '%d λεπτά',
6564 h : 'μία ώρα',
6565 hh : '%d ώρες',
6566 d : 'μία μέρα',
6567 dd : '%d μέρες',
6568 M : 'ένας μήνας',
6569 MM : '%d μήνες',
6570 y : 'ένας χρόνος',
6571 yy : '%d χρόνια'
6572 },
6573 dayOfMonthOrdinalParse: /\d{1,2}η/,
6574 ordinal: '%dη',
6575 week : {
6576 dow : 1, // Monday is the first day of the week.
6577 doy : 4 // The week that contains Jan 4st is the first week of the year.
6578 }
6579 });
6580
6581 //! moment.js locale configuration
6582 //! locale : English (Australia) [en-au]
6583 //! author : Jared Morse : https://github.com/jarcoal
6584
6585 hooks.defineLocale('en-au', {
6586 months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6587 monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6588 weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6589 weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6590 weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6591 longDateFormat : {
6592 LT : 'h:mm A',
6593 LTS : 'h:mm:ss A',
6594 L : 'DD/MM/YYYY',
6595 LL : 'D MMMM YYYY',
6596 LLL : 'D MMMM YYYY h:mm A',
6597 LLLL : 'dddd, D MMMM YYYY h:mm A'
6598 },
6599 calendar : {
6600 sameDay : '[Today at] LT',
6601 nextDay : '[Tomorrow at] LT',
6602 nextWeek : 'dddd [at] LT',
6603 lastDay : '[Yesterday at] LT',
6604 lastWeek : '[Last] dddd [at] LT',
6605 sameElse : 'L'
6606 },
6607 relativeTime : {
6608 future : 'in %s',
6609 past : '%s ago',
6610 s : 'a few seconds',
6611 m : 'a minute',
6612 mm : '%d minutes',
6613 h : 'an hour',
6614 hh : '%d hours',
6615 d : 'a day',
6616 dd : '%d days',
6617 M : 'a month',
6618 MM : '%d months',
6619 y : 'a year',
6620 yy : '%d years'
6621 },
6622 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6623 ordinal : function (number) {
6624 var b = number % 10,
6625 output = (~~(number % 100 / 10) === 1) ? 'th' :
6626 (b === 1) ? 'st' :
6627 (b === 2) ? 'nd' :
6628 (b === 3) ? 'rd' : 'th';
6629 return number + output;
6630 },
6631 week : {
6632 dow : 1, // Monday is the first day of the week.
6633 doy : 4 // The week that contains Jan 4th is the first week of the year.
6634 }
6635 });
6636
6637 //! moment.js locale configuration
6638 //! locale : English (Canada) [en-ca]
6639 //! author : Jonathan Abourbih : https://github.com/jonbca
6640
6641 hooks.defineLocale('en-ca', {
6642 months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6643 monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6644 weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6645 weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6646 weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6647 longDateFormat : {
6648 LT : 'h:mm A',
6649 LTS : 'h:mm:ss A',
6650 L : 'YYYY-MM-DD',
6651 LL : 'MMMM D, YYYY',
6652 LLL : 'MMMM D, YYYY h:mm A',
6653 LLLL : 'dddd, MMMM D, YYYY h:mm A'
6654 },
6655 calendar : {
6656 sameDay : '[Today at] LT',
6657 nextDay : '[Tomorrow at] LT',
6658 nextWeek : 'dddd [at] LT',
6659 lastDay : '[Yesterday at] LT',
6660 lastWeek : '[Last] dddd [at] LT',
6661 sameElse : 'L'
6662 },
6663 relativeTime : {
6664 future : 'in %s',
6665 past : '%s ago',
6666 s : 'a few seconds',
6667 m : 'a minute',
6668 mm : '%d minutes',
6669 h : 'an hour',
6670 hh : '%d hours',
6671 d : 'a day',
6672 dd : '%d days',
6673 M : 'a month',
6674 MM : '%d months',
6675 y : 'a year',
6676 yy : '%d years'
6677 },
6678 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6679 ordinal : function (number) {
6680 var b = number % 10,
6681 output = (~~(number % 100 / 10) === 1) ? 'th' :
6682 (b === 1) ? 'st' :
6683 (b === 2) ? 'nd' :
6684 (b === 3) ? 'rd' : 'th';
6685 return number + output;
6686 }
6687 });
6688
6689 //! moment.js locale configuration
6690 //! locale : English (United Kingdom) [en-gb]
6691 //! author : Chris Gedrim : https://github.com/chrisgedrim
6692
6693 hooks.defineLocale('en-gb', {
6694 months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6695 monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6696 weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6697 weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6698 weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6699 longDateFormat : {
6700 LT : 'HH:mm',
6701 LTS : 'HH:mm:ss',
6702 L : 'DD/MM/YYYY',
6703 LL : 'D MMMM YYYY',
6704 LLL : 'D MMMM YYYY HH:mm',
6705 LLLL : 'dddd, D MMMM YYYY HH:mm'
6706 },
6707 calendar : {
6708 sameDay : '[Today at] LT',
6709 nextDay : '[Tomorrow at] LT',
6710 nextWeek : 'dddd [at] LT',
6711 lastDay : '[Yesterday at] LT',
6712 lastWeek : '[Last] dddd [at] LT',
6713 sameElse : 'L'
6714 },
6715 relativeTime : {
6716 future : 'in %s',
6717 past : '%s ago',
6718 s : 'a few seconds',
6719 m : 'a minute',
6720 mm : '%d minutes',
6721 h : 'an hour',
6722 hh : '%d hours',
6723 d : 'a day',
6724 dd : '%d days',
6725 M : 'a month',
6726 MM : '%d months',
6727 y : 'a year',
6728 yy : '%d years'
6729 },
6730 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6731 ordinal : function (number) {
6732 var b = number % 10,
6733 output = (~~(number % 100 / 10) === 1) ? 'th' :
6734 (b === 1) ? 'st' :
6735 (b === 2) ? 'nd' :
6736 (b === 3) ? 'rd' : 'th';
6737 return number + output;
6738 },
6739 week : {
6740 dow : 1, // Monday is the first day of the week.
6741 doy : 4 // The week that contains Jan 4th is the first week of the year.
6742 }
6743 });
6744
6745 //! moment.js locale configuration
6746 //! locale : English (Ireland) [en-ie]
6747 //! author : Chris Cartlidge : https://github.com/chriscartlidge
6748
6749 hooks.defineLocale('en-ie', {
6750 months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6751 monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6752 weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6753 weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6754 weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6755 longDateFormat : {
6756 LT : 'HH:mm',
6757 LTS : 'HH:mm:ss',
6758 L : 'DD-MM-YYYY',
6759 LL : 'D MMMM YYYY',
6760 LLL : 'D MMMM YYYY HH:mm',
6761 LLLL : 'dddd D MMMM YYYY HH:mm'
6762 },
6763 calendar : {
6764 sameDay : '[Today at] LT',
6765 nextDay : '[Tomorrow at] LT',
6766 nextWeek : 'dddd [at] LT',
6767 lastDay : '[Yesterday at] LT',
6768 lastWeek : '[Last] dddd [at] LT',
6769 sameElse : 'L'
6770 },
6771 relativeTime : {
6772 future : 'in %s',
6773 past : '%s ago',
6774 s : 'a few seconds',
6775 m : 'a minute',
6776 mm : '%d minutes',
6777 h : 'an hour',
6778 hh : '%d hours',
6779 d : 'a day',
6780 dd : '%d days',
6781 M : 'a month',
6782 MM : '%d months',
6783 y : 'a year',
6784 yy : '%d years'
6785 },
6786 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6787 ordinal : function (number) {
6788 var b = number % 10,
6789 output = (~~(number % 100 / 10) === 1) ? 'th' :
6790 (b === 1) ? 'st' :
6791 (b === 2) ? 'nd' :
6792 (b === 3) ? 'rd' : 'th';
6793 return number + output;
6794 },
6795 week : {
6796 dow : 1, // Monday is the first day of the week.
6797 doy : 4 // The week that contains Jan 4th is the first week of the year.
6798 }
6799 });
6800
6801 //! moment.js locale configuration
6802 //! locale : English (New Zealand) [en-nz]
6803 //! author : Luke McGregor : https://github.com/lukemcgregor
6804
6805 hooks.defineLocale('en-nz', {
6806 months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6807 monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6808 weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6809 weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6810 weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6811 longDateFormat : {
6812 LT : 'h:mm A',
6813 LTS : 'h:mm:ss A',
6814 L : 'DD/MM/YYYY',
6815 LL : 'D MMMM YYYY',
6816 LLL : 'D MMMM YYYY h:mm A',
6817 LLLL : 'dddd, D MMMM YYYY h:mm A'
6818 },
6819 calendar : {
6820 sameDay : '[Today at] LT',
6821 nextDay : '[Tomorrow at] LT',
6822 nextWeek : 'dddd [at] LT',
6823 lastDay : '[Yesterday at] LT',
6824 lastWeek : '[Last] dddd [at] LT',
6825 sameElse : 'L'
6826 },
6827 relativeTime : {
6828 future : 'in %s',
6829 past : '%s ago',
6830 s : 'a few seconds',
6831 m : 'a minute',
6832 mm : '%d minutes',
6833 h : 'an hour',
6834 hh : '%d hours',
6835 d : 'a day',
6836 dd : '%d days',
6837 M : 'a month',
6838 MM : '%d months',
6839 y : 'a year',
6840 yy : '%d years'
6841 },
6842 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6843 ordinal : function (number) {
6844 var b = number % 10,
6845 output = (~~(number % 100 / 10) === 1) ? 'th' :
6846 (b === 1) ? 'st' :
6847 (b === 2) ? 'nd' :
6848 (b === 3) ? 'rd' : 'th';
6849 return number + output;
6850 },
6851 week : {
6852 dow : 1, // Monday is the first day of the week.
6853 doy : 4 // The week that contains Jan 4th is the first week of the year.
6854 }
6855 });
6856
6857 //! moment.js locale configuration
6858 //! locale : Esperanto [eo]
6859 //! author : Colin Dean : https://github.com/colindean
6860 //! author : Mia Nordentoft Imperatori : https://github.com/miestasmia
6861 //! comment : miestasmia corrected the translation by colindean
6862
6863 hooks.defineLocale('eo', {
6864 months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),
6865 monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),
6866 weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
6867 weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
6868 weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
6869 longDateFormat : {
6870 LT : 'HH:mm',
6871 LTS : 'HH:mm:ss',
6872 L : 'YYYY-MM-DD',
6873 LL : 'D[-a de] MMMM, YYYY',
6874 LLL : 'D[-a de] MMMM, YYYY HH:mm',
6875 LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'
6876 },
6877 meridiemParse: /[ap]\.t\.m/i,
6878 isPM: function (input) {
6879 return input.charAt(0).toLowerCase() === 'p';
6880 },
6881 meridiem : function (hours, minutes, isLower) {
6882 if (hours > 11) {
6883 return isLower ? 'p.t.m.' : 'P.T.M.';
6884 } else {
6885 return isLower ? 'a.t.m.' : 'A.T.M.';
6886 }
6887 },
6888 calendar : {
6889 sameDay : '[Hodiaŭ je] LT',
6890 nextDay : '[Morgaŭ je] LT',
6891 nextWeek : 'dddd [je] LT',
6892 lastDay : '[Hieraŭ je] LT',
6893 lastWeek : '[pasinta] dddd [je] LT',
6894 sameElse : 'L'
6895 },
6896 relativeTime : {
6897 future : 'post %s',
6898 past : 'antaŭ %s',
6899 s : 'sekundoj',
6900 m : 'minuto',
6901 mm : '%d minutoj',
6902 h : 'horo',
6903 hh : '%d horoj',
6904 d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo
6905 dd : '%d tagoj',
6906 M : 'monato',
6907 MM : '%d monatoj',
6908 y : 'jaro',
6909 yy : '%d jaroj'
6910 },
6911 dayOfMonthOrdinalParse: /\d{1,2}a/,
6912 ordinal : '%da',
6913 week : {
6914 dow : 1, // Monday is the first day of the week.
6915 doy : 7 // The week that contains Jan 1st is the first week of the year.
6916 }
6917 });
6918
6919 //! moment.js locale configuration
6920 //! locale : Spanish (Dominican Republic) [es-do]
6921
6922 var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');
6923 var monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
6924
6925 hooks.defineLocale('es-do', {
6926 months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
6927 monthsShort : function (m, format) {
6928 if (!m) {
6929 return monthsShortDot;
6930 } else if (/-MMM-/.test(format)) {
6931 return monthsShort$1[m.month()];
6932 } else {
6933 return monthsShortDot[m.month()];
6934 }
6935 },
6936 monthsParseExact : true,
6937 weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
6938 weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
6939 weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
6940 weekdaysParseExact : true,
6941 longDateFormat : {
6942 LT : 'h:mm A',
6943 LTS : 'h:mm:ss A',
6944 L : 'DD/MM/YYYY',
6945 LL : 'D [de] MMMM [de] YYYY',
6946 LLL : 'D [de] MMMM [de] YYYY h:mm A',
6947 LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'
6948 },
6949 calendar : {
6950 sameDay : function () {
6951 return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6952 },
6953 nextDay : function () {
6954 return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6955 },
6956 nextWeek : function () {
6957 return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6958 },
6959 lastDay : function () {
6960 return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6961 },
6962 lastWeek : function () {
6963 return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
6964 },
6965 sameElse : 'L'
6966 },
6967 relativeTime : {
6968 future : 'en %s',
6969 past : 'hace %s',
6970 s : 'unos segundos',
6971 m : 'un minuto',
6972 mm : '%d minutos',
6973 h : 'una hora',
6974 hh : '%d horas',
6975 d : 'un día',
6976 dd : '%d días',
6977 M : 'un mes',
6978 MM : '%d meses',
6979 y : 'un año',
6980 yy : '%d años'
6981 },
6982 dayOfMonthOrdinalParse : /\d{1,2}º/,
6983 ordinal : '%dº',
6984 week : {
6985 dow : 1, // Monday is the first day of the week.
6986 doy : 4 // The week that contains Jan 4th is the first week of the year.
6987 }
6988 });
6989
6990 //! moment.js locale configuration
6991 //! locale : Spanish [es]
6992 //! author : Julio Napurí : https://github.com/julionc
6993
6994 var monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');
6995 var monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
6996
6997 hooks.defineLocale('es', {
6998 months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
6999 monthsShort : function (m, format) {
7000 if (!m) {
7001 return monthsShortDot$1;
7002 } else if (/-MMM-/.test(format)) {
7003 return monthsShort$2[m.month()];
7004 } else {
7005 return monthsShortDot$1[m.month()];
7006 }
7007 },
7008 monthsParseExact : true,
7009 weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
7010 weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
7011 weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
7012 weekdaysParseExact : true,
7013 longDateFormat : {
7014 LT : 'H:mm',
7015 LTS : 'H:mm:ss',
7016 L : 'DD/MM/YYYY',
7017 LL : 'D [de] MMMM [de] YYYY',
7018 LLL : 'D [de] MMMM [de] YYYY H:mm',
7019 LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
7020 },
7021 calendar : {
7022 sameDay : function () {
7023 return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7024 },
7025 nextDay : function () {
7026 return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7027 },
7028 nextWeek : function () {
7029 return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7030 },
7031 lastDay : function () {
7032 return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7033 },
7034 lastWeek : function () {
7035 return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7036 },
7037 sameElse : 'L'
7038 },
7039 relativeTime : {
7040 future : 'en %s',
7041 past : 'hace %s',
7042 s : 'unos segundos',
7043 m : 'un minuto',
7044 mm : '%d minutos',
7045 h : 'una hora',
7046 hh : '%d horas',
7047 d : 'un día',
7048 dd : '%d días',
7049 M : 'un mes',
7050 MM : '%d meses',
7051 y : 'un año',
7052 yy : '%d años'
7053 },
7054 dayOfMonthOrdinalParse : /\d{1,2}º/,
7055 ordinal : '%dº',
7056 week : {
7057 dow : 1, // Monday is the first day of the week.
7058 doy : 4 // The week that contains Jan 4th is the first week of the year.
7059 }
7060 });
7061
7062 //! moment.js locale configuration
7063 //! locale : Estonian [et]
7064 //! author : Henry Kehlmann : https://github.com/madhenry
7065 //! improvements : Illimar Tambek : https://github.com/ragulka
7066
7067 function processRelativeTime$3(number, withoutSuffix, key, isFuture) {
7068 var format = {
7069 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
7070 'm' : ['ühe minuti', 'üks minut'],
7071 'mm': [number + ' minuti', number + ' minutit'],
7072 'h' : ['ühe tunni', 'tund aega', 'üks tund'],
7073 'hh': [number + ' tunni', number + ' tundi'],
7074 'd' : ['ühe päeva', 'üks päev'],
7075 'M' : ['kuu aja', 'kuu aega', 'üks kuu'],
7076 'MM': [number + ' kuu', number + ' kuud'],
7077 'y' : ['ühe aasta', 'aasta', 'üks aasta'],
7078 'yy': [number + ' aasta', number + ' aastat']
7079 };
7080 if (withoutSuffix) {
7081 return format[key][2] ? format[key][2] : format[key][1];
7082 }
7083 return isFuture ? format[key][0] : format[key][1];
7084 }
7085
7086 hooks.defineLocale('et', {
7087 months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),
7088 monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
7089 weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),
7090 weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),
7091 weekdaysMin : 'P_E_T_K_N_R_L'.split('_'),
7092 longDateFormat : {
7093 LT : 'H:mm',
7094 LTS : 'H:mm:ss',
7095 L : 'DD.MM.YYYY',
7096 LL : 'D. MMMM YYYY',
7097 LLL : 'D. MMMM YYYY H:mm',
7098 LLLL : 'dddd, D. MMMM YYYY H:mm'
7099 },
7100 calendar : {
7101 sameDay : '[Täna,] LT',
7102 nextDay : '[Homme,] LT',
7103 nextWeek : '[Järgmine] dddd LT',
7104 lastDay : '[Eile,] LT',
7105 lastWeek : '[Eelmine] dddd LT',
7106 sameElse : 'L'
7107 },
7108 relativeTime : {
7109 future : '%s pärast',
7110 past : '%s tagasi',
7111 s : processRelativeTime$3,
7112 m : processRelativeTime$3,
7113 mm : processRelativeTime$3,
7114 h : processRelativeTime$3,
7115 hh : processRelativeTime$3,
7116 d : processRelativeTime$3,
7117 dd : '%d päeva',
7118 M : processRelativeTime$3,
7119 MM : processRelativeTime$3,
7120 y : processRelativeTime$3,
7121 yy : processRelativeTime$3
7122 },
7123 dayOfMonthOrdinalParse: /\d{1,2}\./,
7124 ordinal : '%d.',
7125 week : {
7126 dow : 1, // Monday is the first day of the week.
7127 doy : 4 // The week that contains Jan 4th is the first week of the year.
7128 }
7129 });
7130
7131 //! moment.js locale configuration
7132 //! locale : Basque [eu]
7133 //! author : Eneko Illarramendi : https://github.com/eillarra
7134
7135 hooks.defineLocale('eu', {
7136 months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),
7137 monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),
7138 monthsParseExact : true,
7139 weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),
7140 weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),
7141 weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),
7142 weekdaysParseExact : true,
7143 longDateFormat : {
7144 LT : 'HH:mm',
7145 LTS : 'HH:mm:ss',
7146 L : 'YYYY-MM-DD',
7147 LL : 'YYYY[ko] MMMM[ren] D[a]',
7148 LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',
7149 LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
7150 l : 'YYYY-M-D',
7151 ll : 'YYYY[ko] MMM D[a]',
7152 lll : 'YYYY[ko] MMM D[a] HH:mm',
7153 llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'
7154 },
7155 calendar : {
7156 sameDay : '[gaur] LT[etan]',
7157 nextDay : '[bihar] LT[etan]',
7158 nextWeek : 'dddd LT[etan]',
7159 lastDay : '[atzo] LT[etan]',
7160 lastWeek : '[aurreko] dddd LT[etan]',
7161 sameElse : 'L'
7162 },
7163 relativeTime : {
7164 future : '%s barru',
7165 past : 'duela %s',
7166 s : 'segundo batzuk',
7167 m : 'minutu bat',
7168 mm : '%d minutu',
7169 h : 'ordu bat',
7170 hh : '%d ordu',
7171 d : 'egun bat',
7172 dd : '%d egun',
7173 M : 'hilabete bat',
7174 MM : '%d hilabete',
7175 y : 'urte bat',
7176 yy : '%d urte'
7177 },
7178 dayOfMonthOrdinalParse: /\d{1,2}\./,
7179 ordinal : '%d.',
7180 week : {
7181 dow : 1, // Monday is the first day of the week.
7182 doy : 7 // The week that contains Jan 1st is the first week of the year.
7183 }
7184 });
7185
7186 //! moment.js locale configuration
7187 //! locale : Persian [fa]
7188 //! author : Ebrahim Byagowi : https://github.com/ebraminio
7189
7190 var symbolMap$5 = {
7191 '1': '۱',
7192 '2': '۲',
7193 '3': '۳',
7194 '4': '۴',
7195 '5': '۵',
7196 '6': '۶',
7197 '7': '۷',
7198 '8': '۸',
7199 '9': '۹',
7200 '0': '۰'
7201 };
7202 var numberMap$4 = {
7203 '۱': '1',
7204 '۲': '2',
7205 '۳': '3',
7206 '۴': '4',
7207 '۵': '5',
7208 '۶': '6',
7209 '۷': '7',
7210 '۸': '8',
7211 '۹': '9',
7212 '۰': '0'
7213 };
7214
7215 hooks.defineLocale('fa', {
7216 months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
7217 monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
7218 weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
7219 weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
7220 weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),
7221 weekdaysParseExact : true,
7222 longDateFormat : {
7223 LT : 'HH:mm',
7224 LTS : 'HH:mm:ss',
7225 L : 'DD/MM/YYYY',
7226 LL : 'D MMMM YYYY',
7227 LLL : 'D MMMM YYYY HH:mm',
7228 LLLL : 'dddd, D MMMM YYYY HH:mm'
7229 },
7230 meridiemParse: /قبل از ظهر|بعد از ظهر/,
7231 isPM: function (input) {
7232 return /بعد از ظهر/.test(input);
7233 },
7234 meridiem : function (hour, minute, isLower) {
7235 if (hour < 12) {
7236 return 'قبل از ظهر';
7237 } else {
7238 return 'بعد از ظهر';
7239 }
7240 },
7241 calendar : {
7242 sameDay : '[امروز ساعت] LT',
7243 nextDay : '[فردا ساعت] LT',
7244 nextWeek : 'dddd [ساعت] LT',
7245 lastDay : '[دیروز ساعت] LT',
7246 lastWeek : 'dddd [پیش] [ساعت] LT',
7247 sameElse : 'L'
7248 },
7249 relativeTime : {
7250 future : 'در %s',
7251 past : '%s پیش',
7252 s : 'چند ثانیه',
7253 m : 'یک دقیقه',
7254 mm : '%d دقیقه',
7255 h : 'یک ساعت',
7256 hh : '%d ساعت',
7257 d : 'یک روز',
7258 dd : '%d روز',
7259 M : 'یک ماه',
7260 MM : '%d ماه',
7261 y : 'یک سال',
7262 yy : '%d سال'
7263 },
7264 preparse: function (string) {
7265 return string.replace(/[۰-۹]/g, function (match) {
7266 return numberMap$4[match];
7267 }).replace(/،/g, ',');
7268 },
7269 postformat: function (string) {
7270 return string.replace(/\d/g, function (match) {
7271 return symbolMap$5[match];
7272 }).replace(/,/g, '،');
7273 },
7274 dayOfMonthOrdinalParse: /\d{1,2}م/,
7275 ordinal : '%dم',
7276 week : {
7277 dow : 6, // Saturday is the first day of the week.
7278 doy : 12 // The week that contains Jan 1st is the first week of the year.
7279 }
7280 });
7281
7282 //! moment.js locale configuration
7283 //! locale : Finnish [fi]
7284 //! author : Tarmo Aidantausta : https://github.com/bleadof
7285
7286 var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' ');
7287 var numbersFuture = [
7288 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
7289 numbersPast[7], numbersPast[8], numbersPast[9]
7290 ];
7291 function translate$2(number, withoutSuffix, key, isFuture) {
7292 var result = '';
7293 switch (key) {
7294 case 's':
7295 return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
7296 case 'm':
7297 return isFuture ? 'minuutin' : 'minuutti';
7298 case 'mm':
7299 result = isFuture ? 'minuutin' : 'minuuttia';
7300 break;
7301 case 'h':
7302 return isFuture ? 'tunnin' : 'tunti';
7303 case 'hh':
7304 result = isFuture ? 'tunnin' : 'tuntia';
7305 break;
7306 case 'd':
7307 return isFuture ? 'päivän' : 'päivä';
7308 case 'dd':
7309 result = isFuture ? 'päivän' : 'päivää';
7310 break;
7311 case 'M':
7312 return isFuture ? 'kuukauden' : 'kuukausi';
7313 case 'MM':
7314 result = isFuture ? 'kuukauden' : 'kuukautta';
7315 break;
7316 case 'y':
7317 return isFuture ? 'vuoden' : 'vuosi';
7318 case 'yy':
7319 result = isFuture ? 'vuoden' : 'vuotta';
7320 break;
7321 }
7322 result = verbalNumber(number, isFuture) + ' ' + result;
7323 return result;
7324 }
7325 function verbalNumber(number, isFuture) {
7326 return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;
7327 }
7328
7329 hooks.defineLocale('fi', {
7330 months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
7331 monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
7332 weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
7333 weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),
7334 weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),
7335 longDateFormat : {
7336 LT : 'HH.mm',
7337 LTS : 'HH.mm.ss',
7338 L : 'DD.MM.YYYY',
7339 LL : 'Do MMMM[ta] YYYY',
7340 LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',
7341 LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
7342 l : 'D.M.YYYY',
7343 ll : 'Do MMM YYYY',
7344 lll : 'Do MMM YYYY, [klo] HH.mm',
7345 llll : 'ddd, Do MMM YYYY, [klo] HH.mm'
7346 },
7347 calendar : {
7348 sameDay : '[tänään] [klo] LT',
7349 nextDay : '[huomenna] [klo] LT',
7350 nextWeek : 'dddd [klo] LT',
7351 lastDay : '[eilen] [klo] LT',
7352 lastWeek : '[viime] dddd[na] [klo] LT',
7353 sameElse : 'L'
7354 },
7355 relativeTime : {
7356 future : '%s päästä',
7357 past : '%s sitten',
7358 s : translate$2,
7359 m : translate$2,
7360 mm : translate$2,
7361 h : translate$2,
7362 hh : translate$2,
7363 d : translate$2,
7364 dd : translate$2,
7365 M : translate$2,
7366 MM : translate$2,
7367 y : translate$2,
7368 yy : translate$2
7369 },
7370 dayOfMonthOrdinalParse: /\d{1,2}\./,
7371 ordinal : '%d.',
7372 week : {
7373 dow : 1, // Monday is the first day of the week.
7374 doy : 4 // The week that contains Jan 4th is the first week of the year.
7375 }
7376 });
7377
7378 //! moment.js locale configuration
7379 //! locale : Faroese [fo]
7380 //! author : Ragnar Johannesen : https://github.com/ragnar123
7381
7382 hooks.defineLocale('fo', {
7383 months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
7384 monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
7385 weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),
7386 weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
7387 weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),
7388 longDateFormat : {
7389 LT : 'HH:mm',
7390 LTS : 'HH:mm:ss',
7391 L : 'DD/MM/YYYY',
7392 LL : 'D MMMM YYYY',
7393 LLL : 'D MMMM YYYY HH:mm',
7394 LLLL : 'dddd D. MMMM, YYYY HH:mm'
7395 },
7396 calendar : {
7397 sameDay : '[Í dag kl.] LT',
7398 nextDay : '[Í morgin kl.] LT',
7399 nextWeek : 'dddd [kl.] LT',
7400 lastDay : '[Í gjár kl.] LT',
7401 lastWeek : '[síðstu] dddd [kl] LT',
7402 sameElse : 'L'
7403 },
7404 relativeTime : {
7405 future : 'um %s',
7406 past : '%s síðani',
7407 s : 'fá sekund',
7408 m : 'ein minutt',
7409 mm : '%d minuttir',
7410 h : 'ein tími',
7411 hh : '%d tímar',
7412 d : 'ein dagur',
7413 dd : '%d dagar',
7414 M : 'ein mánaði',
7415 MM : '%d mánaðir',
7416 y : 'eitt ár',
7417 yy : '%d ár'
7418 },
7419 dayOfMonthOrdinalParse: /\d{1,2}\./,
7420 ordinal : '%d.',
7421 week : {
7422 dow : 1, // Monday is the first day of the week.
7423 doy : 4 // The week that contains Jan 4th is the first week of the year.
7424 }
7425 });
7426
7427 //! moment.js locale configuration
7428 //! locale : French (Canada) [fr-ca]
7429 //! author : Jonathan Abourbih : https://github.com/jonbca
7430
7431 hooks.defineLocale('fr-ca', {
7432 months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7433 monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
7434 monthsParseExact : true,
7435 weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7436 weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7437 weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
7438 weekdaysParseExact : true,
7439 longDateFormat : {
7440 LT : 'HH:mm',
7441 LTS : 'HH:mm:ss',
7442 L : 'YYYY-MM-DD',
7443 LL : 'D MMMM YYYY',
7444 LLL : 'D MMMM YYYY HH:mm',
7445 LLLL : 'dddd D MMMM YYYY HH:mm'
7446 },
7447 calendar : {
7448 sameDay : '[Aujourd’hui à] LT',
7449 nextDay : '[Demain à] LT',
7450 nextWeek : 'dddd [à] LT',
7451 lastDay : '[Hier à] LT',
7452 lastWeek : 'dddd [dernier à] LT',
7453 sameElse : 'L'
7454 },
7455 relativeTime : {
7456 future : 'dans %s',
7457 past : 'il y a %s',
7458 s : 'quelques secondes',
7459 m : 'une minute',
7460 mm : '%d minutes',
7461 h : 'une heure',
7462 hh : '%d heures',
7463 d : 'un jour',
7464 dd : '%d jours',
7465 M : 'un mois',
7466 MM : '%d mois',
7467 y : 'un an',
7468 yy : '%d ans'
7469 },
7470 dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
7471 ordinal : function (number, period) {
7472 switch (period) {
7473 // Words with masculine grammatical gender: mois, trimestre, jour
7474 default:
7475 case 'M':
7476 case 'Q':
7477 case 'D':
7478 case 'DDD':
7479 case 'd':
7480 return number + (number === 1 ? 'er' : 'e');
7481
7482 // Words with feminine grammatical gender: semaine
7483 case 'w':
7484 case 'W':
7485 return number + (number === 1 ? 're' : 'e');
7486 }
7487 }
7488 });
7489
7490 //! moment.js locale configuration
7491 //! locale : French (Switzerland) [fr-ch]
7492 //! author : Gaspard Bucher : https://github.com/gaspard
7493
7494 hooks.defineLocale('fr-ch', {
7495 months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7496 monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
7497 monthsParseExact : true,
7498 weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7499 weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7500 weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
7501 weekdaysParseExact : true,
7502 longDateFormat : {
7503 LT : 'HH:mm',
7504 LTS : 'HH:mm:ss',
7505 L : 'DD.MM.YYYY',
7506 LL : 'D MMMM YYYY',
7507 LLL : 'D MMMM YYYY HH:mm',
7508 LLLL : 'dddd D MMMM YYYY HH:mm'
7509 },
7510 calendar : {
7511 sameDay : '[Aujourd’hui à] LT',
7512 nextDay : '[Demain à] LT',
7513 nextWeek : 'dddd [à] LT',
7514 lastDay : '[Hier à] LT',
7515 lastWeek : 'dddd [dernier à] LT',
7516 sameElse : 'L'
7517 },
7518 relativeTime : {
7519 future : 'dans %s',
7520 past : 'il y a %s',
7521 s : 'quelques secondes',
7522 m : 'une minute',
7523 mm : '%d minutes',
7524 h : 'une heure',
7525 hh : '%d heures',
7526 d : 'un jour',
7527 dd : '%d jours',
7528 M : 'un mois',
7529 MM : '%d mois',
7530 y : 'un an',
7531 yy : '%d ans'
7532 },
7533 dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
7534 ordinal : function (number, period) {
7535 switch (period) {
7536 // Words with masculine grammatical gender: mois, trimestre, jour
7537 default:
7538 case 'M':
7539 case 'Q':
7540 case 'D':
7541 case 'DDD':
7542 case 'd':
7543 return number + (number === 1 ? 'er' : 'e');
7544
7545 // Words with feminine grammatical gender: semaine
7546 case 'w':
7547 case 'W':
7548 return number + (number === 1 ? 're' : 'e');
7549 }
7550 },
7551 week : {
7552 dow : 1, // Monday is the first day of the week.
7553 doy : 4 // The week that contains Jan 4th is the first week of the year.
7554 }
7555 });
7556
7557 //! moment.js locale configuration
7558 //! locale : French [fr]
7559 //! author : John Fischer : https://github.com/jfroffice
7560
7561 hooks.defineLocale('fr', {
7562 months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7563 monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
7564 monthsParseExact : true,
7565 weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7566 weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7567 weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
7568 weekdaysParseExact : true,
7569 longDateFormat : {
7570 LT : 'HH:mm',
7571 LTS : 'HH:mm:ss',
7572 L : 'DD/MM/YYYY',
7573 LL : 'D MMMM YYYY',
7574 LLL : 'D MMMM YYYY HH:mm',
7575 LLLL : 'dddd D MMMM YYYY HH:mm'
7576 },
7577 calendar : {
7578 sameDay : '[Aujourd’hui à] LT',
7579 nextDay : '[Demain à] LT',
7580 nextWeek : 'dddd [à] LT',
7581 lastDay : '[Hier à] LT',
7582 lastWeek : 'dddd [dernier à] LT',
7583 sameElse : 'L'
7584 },
7585 relativeTime : {
7586 future : 'dans %s',
7587 past : 'il y a %s',
7588 s : 'quelques secondes',
7589 m : 'une minute',
7590 mm : '%d minutes',
7591 h : 'une heure',
7592 hh : '%d heures',
7593 d : 'un jour',
7594 dd : '%d jours',
7595 M : 'un mois',
7596 MM : '%d mois',
7597 y : 'un an',
7598 yy : '%d ans'
7599 },
7600 dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
7601 ordinal : function (number, period) {
7602 switch (period) {
7603 // TODO: Return 'e' when day of month > 1. Move this case inside
7604 // block for masculine words below.
7605 // See https://github.com/moment/moment/issues/3375
7606 case 'D':
7607 return number + (number === 1 ? 'er' : '');
7608
7609 // Words with masculine grammatical gender: mois, trimestre, jour
7610 default:
7611 case 'M':
7612 case 'Q':
7613 case 'DDD':
7614 case 'd':
7615 return number + (number === 1 ? 'er' : 'e');
7616
7617 // Words with feminine grammatical gender: semaine
7618 case 'w':
7619 case 'W':
7620 return number + (number === 1 ? 're' : 'e');
7621 }
7622 },
7623 week : {
7624 dow : 1, // Monday is the first day of the week.
7625 doy : 4 // The week that contains Jan 4th is the first week of the year.
7626 }
7627 });
7628
7629 //! moment.js locale configuration
7630 //! locale : Frisian [fy]
7631 //! author : Robin van der Vliet : https://github.com/robin0van0der0v
7632
7633 var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_');
7634 var monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
7635
7636 hooks.defineLocale('fy', {
7637 months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),
7638 monthsShort : function (m, format) {
7639 if (!m) {
7640 return monthsShortWithDots;
7641 } else if (/-MMM-/.test(format)) {
7642 return monthsShortWithoutDots[m.month()];
7643 } else {
7644 return monthsShortWithDots[m.month()];
7645 }
7646 },
7647 monthsParseExact : true,
7648 weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),
7649 weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),
7650 weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
7651 weekdaysParseExact : true,
7652 longDateFormat : {
7653 LT : 'HH:mm',
7654 LTS : 'HH:mm:ss',
7655 L : 'DD-MM-YYYY',
7656 LL : 'D MMMM YYYY',
7657 LLL : 'D MMMM YYYY HH:mm',
7658 LLLL : 'dddd D MMMM YYYY HH:mm'
7659 },
7660 calendar : {
7661 sameDay: '[hjoed om] LT',
7662 nextDay: '[moarn om] LT',
7663 nextWeek: 'dddd [om] LT',
7664 lastDay: '[juster om] LT',
7665 lastWeek: '[ôfrûne] dddd [om] LT',
7666 sameElse: 'L'
7667 },
7668 relativeTime : {
7669 future : 'oer %s',
7670 past : '%s lyn',
7671 s : 'in pear sekonden',
7672 m : 'ien minút',
7673 mm : '%d minuten',
7674 h : 'ien oere',
7675 hh : '%d oeren',
7676 d : 'ien dei',
7677 dd : '%d dagen',
7678 M : 'ien moanne',
7679 MM : '%d moannen',
7680 y : 'ien jier',
7681 yy : '%d jierren'
7682 },
7683 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
7684 ordinal : function (number) {
7685 return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
7686 },
7687 week : {
7688 dow : 1, // Monday is the first day of the week.
7689 doy : 4 // The week that contains Jan 4th is the first week of the year.
7690 }
7691 });
7692
7693 //! moment.js locale configuration
7694 //! locale : Scottish Gaelic [gd]
7695 //! author : Jon Ashdown : https://github.com/jonashdown
7696
7697 var months$5 = [
7698 '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'
7699 ];
7700
7701 var monthsShort$3 = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];
7702
7703 var weekdays$1 = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];
7704
7705 var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];
7706
7707 var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
7708
7709 hooks.defineLocale('gd', {
7710 months : months$5,
7711 monthsShort : monthsShort$3,
7712 monthsParseExact : true,
7713 weekdays : weekdays$1,
7714 weekdaysShort : weekdaysShort,
7715 weekdaysMin : weekdaysMin,
7716 longDateFormat : {
7717 LT : 'HH:mm',
7718 LTS : 'HH:mm:ss',
7719 L : 'DD/MM/YYYY',
7720 LL : 'D MMMM YYYY',
7721 LLL : 'D MMMM YYYY HH:mm',
7722 LLLL : 'dddd, D MMMM YYYY HH:mm'
7723 },
7724 calendar : {
7725 sameDay : '[An-diugh aig] LT',
7726 nextDay : '[A-màireach aig] LT',
7727 nextWeek : 'dddd [aig] LT',
7728 lastDay : '[An-dè aig] LT',
7729 lastWeek : 'dddd [seo chaidh] [aig] LT',
7730 sameElse : 'L'
7731 },
7732 relativeTime : {
7733 future : 'ann an %s',
7734 past : 'bho chionn %s',
7735 s : 'beagan diogan',
7736 m : 'mionaid',
7737 mm : '%d mionaidean',
7738 h : 'uair',
7739 hh : '%d uairean',
7740 d : 'latha',
7741 dd : '%d latha',
7742 M : 'mìos',
7743 MM : '%d mìosan',
7744 y : 'bliadhna',
7745 yy : '%d bliadhna'
7746 },
7747 dayOfMonthOrdinalParse : /\d{1,2}(d|na|mh)/,
7748 ordinal : function (number) {
7749 var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
7750 return number + output;
7751 },
7752 week : {
7753 dow : 1, // Monday is the first day of the week.
7754 doy : 4 // The week that contains Jan 4th is the first week of the year.
7755 }
7756 });
7757
7758 //! moment.js locale configuration
7759 //! locale : Galician [gl]
7760 //! author : Juan G. Hurtado : https://github.com/juanghurtado
7761
7762 hooks.defineLocale('gl', {
7763 months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),
7764 monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),
7765 monthsParseExact: true,
7766 weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
7767 weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
7768 weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),
7769 weekdaysParseExact : true,
7770 longDateFormat : {
7771 LT : 'H:mm',
7772 LTS : 'H:mm:ss',
7773 L : 'DD/MM/YYYY',
7774 LL : 'D [de] MMMM [de] YYYY',
7775 LLL : 'D [de] MMMM [de] YYYY H:mm',
7776 LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
7777 },
7778 calendar : {
7779 sameDay : function () {
7780 return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
7781 },
7782 nextDay : function () {
7783 return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
7784 },
7785 nextWeek : function () {
7786 return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
7787 },
7788 lastDay : function () {
7789 return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';
7790 },
7791 lastWeek : function () {
7792 return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
7793 },
7794 sameElse : 'L'
7795 },
7796 relativeTime : {
7797 future : function (str) {
7798 if (str.indexOf('un') === 0) {
7799 return 'n' + str;
7800 }
7801 return 'en ' + str;
7802 },
7803 past : 'hai %s',
7804 s : 'uns segundos',
7805 m : 'un minuto',
7806 mm : '%d minutos',
7807 h : 'unha hora',
7808 hh : '%d horas',
7809 d : 'un día',
7810 dd : '%d días',
7811 M : 'un mes',
7812 MM : '%d meses',
7813 y : 'un ano',
7814 yy : '%d anos'
7815 },
7816 dayOfMonthOrdinalParse : /\d{1,2}º/,
7817 ordinal : '%dº',
7818 week : {
7819 dow : 1, // Monday is the first day of the week.
7820 doy : 4 // The week that contains Jan 4th is the first week of the year.
7821 }
7822 });
7823
7824 //! moment.js locale configuration
7825 //! locale : Konkani Latin script [gom-latn]
7826 //! author : The Discoverer : https://github.com/WikiDiscoverer
7827
7828 function processRelativeTime$4(number, withoutSuffix, key, isFuture) {
7829 var format = {
7830 's': ['thodde secondanim', 'thodde second'],
7831 'm': ['eka mintan', 'ek minute'],
7832 'mm': [number + ' mintanim', number + ' mintam'],
7833 'h': ['eka horan', 'ek hor'],
7834 'hh': [number + ' horanim', number + ' hor'],
7835 'd': ['eka disan', 'ek dis'],
7836 'dd': [number + ' disanim', number + ' dis'],
7837 'M': ['eka mhoinean', 'ek mhoino'],
7838 'MM': [number + ' mhoineanim', number + ' mhoine'],
7839 'y': ['eka vorsan', 'ek voros'],
7840 'yy': [number + ' vorsanim', number + ' vorsam']
7841 };
7842 return withoutSuffix ? format[key][0] : format[key][1];
7843 }
7844
7845 hooks.defineLocale('gom-latn', {
7846 months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),
7847 monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),
7848 monthsParseExact : true,
7849 weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\'var'.split('_'),
7850 weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
7851 weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
7852 weekdaysParseExact : true,
7853 longDateFormat : {
7854 LT : 'A h:mm [vazta]',
7855 LTS : 'A h:mm:ss [vazta]',
7856 L : 'DD-MM-YYYY',
7857 LL : 'D MMMM YYYY',
7858 LLL : 'D MMMM YYYY A h:mm [vazta]',
7859 LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',
7860 llll: 'ddd, D MMM YYYY, A h:mm [vazta]'
7861 },
7862 calendar : {
7863 sameDay: '[Aiz] LT',
7864 nextDay: '[Faleam] LT',
7865 nextWeek: '[Ieta to] dddd[,] LT',
7866 lastDay: '[Kal] LT',
7867 lastWeek: '[Fatlo] dddd[,] LT',
7868 sameElse: 'L'
7869 },
7870 relativeTime : {
7871 future : '%s',
7872 past : '%s adim',
7873 s : processRelativeTime$4,
7874 m : processRelativeTime$4,
7875 mm : processRelativeTime$4,
7876 h : processRelativeTime$4,
7877 hh : processRelativeTime$4,
7878 d : processRelativeTime$4,
7879 dd : processRelativeTime$4,
7880 M : processRelativeTime$4,
7881 MM : processRelativeTime$4,
7882 y : processRelativeTime$4,
7883 yy : processRelativeTime$4
7884 },
7885 dayOfMonthOrdinalParse : /\d{1,2}(er)/,
7886 ordinal : function (number, period) {
7887 switch (period) {
7888 // the ordinal 'er' only applies to day of the month
7889 case 'D':
7890 return number + 'er';
7891 default:
7892 case 'M':
7893 case 'Q':
7894 case 'DDD':
7895 case 'd':
7896 case 'w':
7897 case 'W':
7898 return number;
7899 }
7900 },
7901 week : {
7902 dow : 1, // Monday is the first day of the week.
7903 doy : 4 // The week that contains Jan 4th is the first week of the year.
7904 },
7905 meridiemParse: /rati|sokalli|donparam|sanje/,
7906 meridiemHour : function (hour, meridiem) {
7907 if (hour === 12) {
7908 hour = 0;
7909 }
7910 if (meridiem === 'rati') {
7911 return hour < 4 ? hour : hour + 12;
7912 } else if (meridiem === 'sokalli') {
7913 return hour;
7914 } else if (meridiem === 'donparam') {
7915 return hour > 12 ? hour : hour + 12;
7916 } else if (meridiem === 'sanje') {
7917 return hour + 12;
7918 }
7919 },
7920 meridiem : function (hour, minute, isLower) {
7921 if (hour < 4) {
7922 return 'rati';
7923 } else if (hour < 12) {
7924 return 'sokalli';
7925 } else if (hour < 16) {
7926 return 'donparam';
7927 } else if (hour < 20) {
7928 return 'sanje';
7929 } else {
7930 return 'rati';
7931 }
7932 }
7933 });
7934
7935 //! moment.js locale configuration
7936 //! locale : Hebrew [he]
7937 //! author : Tomer Cohen : https://github.com/tomer
7938 //! author : Moshe Simantov : https://github.com/DevelopmentIL
7939 //! author : Tal Ater : https://github.com/TalAter
7940
7941 hooks.defineLocale('he', {
7942 months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),
7943 monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
7944 weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
7945 weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
7946 weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),
7947 longDateFormat : {
7948 LT : 'HH:mm',
7949 LTS : 'HH:mm:ss',
7950 L : 'DD/MM/YYYY',
7951 LL : 'D [ב]MMMM YYYY',
7952 LLL : 'D [ב]MMMM YYYY HH:mm',
7953 LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',
7954 l : 'D/M/YYYY',
7955 ll : 'D MMM YYYY',
7956 lll : 'D MMM YYYY HH:mm',
7957 llll : 'ddd, D MMM YYYY HH:mm'
7958 },
7959 calendar : {
7960 sameDay : '[היום ב־]LT',
7961 nextDay : '[מחר ב־]LT',
7962 nextWeek : 'dddd [בשעה] LT',
7963 lastDay : '[אתמול ב־]LT',
7964 lastWeek : '[ביום] dddd [האחרון בשעה] LT',
7965 sameElse : 'L'
7966 },
7967 relativeTime : {
7968 future : 'בעוד %s',
7969 past : 'לפני %s',
7970 s : 'מספר שניות',
7971 m : 'דקה',
7972 mm : '%d דקות',
7973 h : 'שעה',
7974 hh : function (number) {
7975 if (number === 2) {
7976 return 'שעתיים';
7977 }
7978 return number + ' שעות';
7979 },
7980 d : 'יום',
7981 dd : function (number) {
7982 if (number === 2) {
7983 return 'יומיים';
7984 }
7985 return number + ' ימים';
7986 },
7987 M : 'חודש',
7988 MM : function (number) {
7989 if (number === 2) {
7990 return 'חודשיים';
7991 }
7992 return number + ' חודשים';
7993 },
7994 y : 'שנה',
7995 yy : function (number) {
7996 if (number === 2) {
7997 return 'שנתיים';
7998 } else if (number % 10 === 0 && number !== 10) {
7999 return number + ' שנה';
8000 }
8001 return number + ' שנים';
8002 }
8003 },
8004 meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
8005 isPM : function (input) {
8006 return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
8007 },
8008 meridiem : function (hour, minute, isLower) {
8009 if (hour < 5) {
8010 return 'לפנות בוקר';
8011 } else if (hour < 10) {
8012 return 'בבוקר';
8013 } else if (hour < 12) {
8014 return isLower ? 'לפנה"צ' : 'לפני הצהריים';
8015 } else if (hour < 18) {
8016 return isLower ? 'אחה"צ' : 'אחרי הצהריים';
8017 } else {
8018 return 'בערב';
8019 }
8020 }
8021 });
8022
8023 //! moment.js locale configuration
8024 //! locale : Hindi [hi]
8025 //! author : Mayank Singhal : https://github.com/mayanksinghal
8026
8027 var symbolMap$6 = {
8028 '1': '१',
8029 '2': '२',
8030 '3': '३',
8031 '4': '४',
8032 '5': '५',
8033 '6': '६',
8034 '7': '७',
8035 '8': '८',
8036 '9': '९',
8037 '0': '०'
8038 };
8039 var numberMap$5 = {
8040 '१': '1',
8041 '२': '2',
8042 '३': '3',
8043 '४': '4',
8044 '५': '5',
8045 '६': '6',
8046 '७': '7',
8047 '८': '8',
8048 '९': '9',
8049 '०': '0'
8050 };
8051
8052 hooks.defineLocale('hi', {
8053 months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),
8054 monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
8055 monthsParseExact: true,
8056 weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
8057 weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
8058 weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
8059 longDateFormat : {
8060 LT : 'A h:mm बजे',
8061 LTS : 'A h:mm:ss बजे',
8062 L : 'DD/MM/YYYY',
8063 LL : 'D MMMM YYYY',
8064 LLL : 'D MMMM YYYY, A h:mm बजे',
8065 LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'
8066 },
8067 calendar : {
8068 sameDay : '[आज] LT',
8069 nextDay : '[कल] LT',
8070 nextWeek : 'dddd, LT',
8071 lastDay : '[कल] LT',
8072 lastWeek : '[पिछले] dddd, LT',
8073 sameElse : 'L'
8074 },
8075 relativeTime : {
8076 future : '%s में',
8077 past : '%s पहले',
8078 s : 'कुछ ही क्षण',
8079 m : 'एक मिनट',
8080 mm : '%d मिनट',
8081 h : 'एक घंटा',
8082 hh : '%d घंटे',
8083 d : 'एक दिन',
8084 dd : '%d दिन',
8085 M : 'एक महीने',
8086 MM : '%d महीने',
8087 y : 'एक वर्ष',
8088 yy : '%d वर्ष'
8089 },
8090 preparse: function (string) {
8091 return string.replace(/[१२३४५६७८९०]/g, function (match) {
8092 return numberMap$5[match];
8093 });
8094 },
8095 postformat: function (string) {
8096 return string.replace(/\d/g, function (match) {
8097 return symbolMap$6[match];
8098 });
8099 },
8100 // Hindi notation for meridiems are quite fuzzy in practice. While there exists
8101 // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
8102 meridiemParse: /रात|सुबह|दोपहर|शाम/,
8103 meridiemHour : function (hour, meridiem) {
8104 if (hour === 12) {
8105 hour = 0;
8106 }
8107 if (meridiem === 'रात') {
8108 return hour < 4 ? hour : hour + 12;
8109 } else if (meridiem === 'सुबह') {
8110 return hour;
8111 } else if (meridiem === 'दोपहर') {
8112 return hour >= 10 ? hour : hour + 12;
8113 } else if (meridiem === 'शाम') {
8114 return hour + 12;
8115 }
8116 },
8117 meridiem : function (hour, minute, isLower) {
8118 if (hour < 4) {
8119 return 'रात';
8120 } else if (hour < 10) {
8121 return 'सुबह';
8122 } else if (hour < 17) {
8123 return 'दोपहर';
8124 } else if (hour < 20) {
8125 return 'शाम';
8126 } else {
8127 return 'रात';
8128 }
8129 },
8130 week : {
8131 dow : 0, // Sunday is the first day of the week.
8132 doy : 6 // The week that contains Jan 1st is the first week of the year.
8133 }
8134 });
8135
8136 //! moment.js locale configuration
8137 //! locale : Croatian [hr]
8138 //! author : Bojan Marković : https://github.com/bmarkovic
8139
8140 function translate$3(number, withoutSuffix, key) {
8141 var result = number + ' ';
8142 switch (key) {
8143 case 'm':
8144 return withoutSuffix ? 'jedna minuta' : 'jedne minute';
8145 case 'mm':
8146 if (number === 1) {
8147 result += 'minuta';
8148 } else if (number === 2 || number === 3 || number === 4) {
8149 result += 'minute';
8150 } else {
8151 result += 'minuta';
8152 }
8153 return result;
8154 case 'h':
8155 return withoutSuffix ? 'jedan sat' : 'jednog sata';
8156 case 'hh':
8157 if (number === 1) {
8158 result += 'sat';
8159 } else if (number === 2 || number === 3 || number === 4) {
8160 result += 'sata';
8161 } else {
8162 result += 'sati';
8163 }
8164 return result;
8165 case 'dd':
8166 if (number === 1) {
8167 result += 'dan';
8168 } else {
8169 result += 'dana';
8170 }
8171 return result;
8172 case 'MM':
8173 if (number === 1) {
8174 result += 'mjesec';
8175 } else if (number === 2 || number === 3 || number === 4) {
8176 result += 'mjeseca';
8177 } else {
8178 result += 'mjeseci';
8179 }
8180 return result;
8181 case 'yy':
8182 if (number === 1) {
8183 result += 'godina';
8184 } else if (number === 2 || number === 3 || number === 4) {
8185 result += 'godine';
8186 } else {
8187 result += 'godina';
8188 }
8189 return result;
8190 }
8191 }
8192
8193 hooks.defineLocale('hr', {
8194 months : {
8195 format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),
8196 standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')
8197 },
8198 monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),
8199 monthsParseExact: true,
8200 weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
8201 weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
8202 weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
8203 weekdaysParseExact : true,
8204 longDateFormat : {
8205 LT : 'H:mm',
8206 LTS : 'H:mm:ss',
8207 L : 'DD.MM.YYYY',
8208 LL : 'D. MMMM YYYY',
8209 LLL : 'D. MMMM YYYY H:mm',
8210 LLLL : 'dddd, D. MMMM YYYY H:mm'
8211 },
8212 calendar : {
8213 sameDay : '[danas u] LT',
8214 nextDay : '[sutra u] LT',
8215 nextWeek : function () {
8216 switch (this.day()) {
8217 case 0:
8218 return '[u] [nedjelju] [u] LT';
8219 case 3:
8220 return '[u] [srijedu] [u] LT';
8221 case 6:
8222 return '[u] [subotu] [u] LT';
8223 case 1:
8224 case 2:
8225 case 4:
8226 case 5:
8227 return '[u] dddd [u] LT';
8228 }
8229 },
8230 lastDay : '[jučer u] LT',
8231 lastWeek : function () {
8232 switch (this.day()) {
8233 case 0:
8234 case 3:
8235 return '[prošlu] dddd [u] LT';
8236 case 6:
8237 return '[prošle] [subote] [u] LT';
8238 case 1:
8239 case 2:
8240 case 4:
8241 case 5:
8242 return '[prošli] dddd [u] LT';
8243 }
8244 },
8245 sameElse : 'L'
8246 },
8247 relativeTime : {
8248 future : 'za %s',
8249 past : 'prije %s',
8250 s : 'par sekundi',
8251 m : translate$3,
8252 mm : translate$3,
8253 h : translate$3,
8254 hh : translate$3,
8255 d : 'dan',
8256 dd : translate$3,
8257 M : 'mjesec',
8258 MM : translate$3,
8259 y : 'godinu',
8260 yy : translate$3
8261 },
8262 dayOfMonthOrdinalParse: /\d{1,2}\./,
8263 ordinal : '%d.',
8264 week : {
8265 dow : 1, // Monday is the first day of the week.
8266 doy : 7 // The week that contains Jan 1st is the first week of the year.
8267 }
8268 });
8269
8270 //! moment.js locale configuration
8271 //! locale : Hungarian [hu]
8272 //! author : Adam Brunner : https://github.com/adambrunner
8273
8274 var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
8275 function translate$4(number, withoutSuffix, key, isFuture) {
8276 var num = number,
8277 suffix;
8278 switch (key) {
8279 case 's':
8280 return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';
8281 case 'm':
8282 return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
8283 case 'mm':
8284 return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
8285 case 'h':
8286 return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
8287 case 'hh':
8288 return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
8289 case 'd':
8290 return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
8291 case 'dd':
8292 return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
8293 case 'M':
8294 return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
8295 case 'MM':
8296 return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
8297 case 'y':
8298 return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
8299 case 'yy':
8300 return num + (isFuture || withoutSuffix ? ' év' : ' éve');
8301 }
8302 return '';
8303 }
8304 function week(isFuture) {
8305 return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';
8306 }
8307
8308 hooks.defineLocale('hu', {
8309 months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),
8310 monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),
8311 weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
8312 weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
8313 weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),
8314 longDateFormat : {
8315 LT : 'H:mm',
8316 LTS : 'H:mm:ss',
8317 L : 'YYYY.MM.DD.',
8318 LL : 'YYYY. MMMM D.',
8319 LLL : 'YYYY. MMMM D. H:mm',
8320 LLLL : 'YYYY. MMMM D., dddd H:mm'
8321 },
8322 meridiemParse: /de|du/i,
8323 isPM: function (input) {
8324 return input.charAt(1).toLowerCase() === 'u';
8325 },
8326 meridiem : function (hours, minutes, isLower) {
8327 if (hours < 12) {
8328 return isLower === true ? 'de' : 'DE';
8329 } else {
8330 return isLower === true ? 'du' : 'DU';
8331 }
8332 },
8333 calendar : {
8334 sameDay : '[ma] LT[-kor]',
8335 nextDay : '[holnap] LT[-kor]',
8336 nextWeek : function () {
8337 return week.call(this, true);
8338 },
8339 lastDay : '[tegnap] LT[-kor]',
8340 lastWeek : function () {
8341 return week.call(this, false);
8342 },
8343 sameElse : 'L'
8344 },
8345 relativeTime : {
8346 future : '%s múlva',
8347 past : '%s',
8348 s : translate$4,
8349 m : translate$4,
8350 mm : translate$4,
8351 h : translate$4,
8352 hh : translate$4,
8353 d : translate$4,
8354 dd : translate$4,
8355 M : translate$4,
8356 MM : translate$4,
8357 y : translate$4,
8358 yy : translate$4
8359 },
8360 dayOfMonthOrdinalParse: /\d{1,2}\./,
8361 ordinal : '%d.',
8362 week : {
8363 dow : 1, // Monday is the first day of the week.
8364 doy : 4 // The week that contains Jan 4th is the first week of the year.
8365 }
8366 });
8367
8368 //! moment.js locale configuration
8369 //! locale : Armenian [hy-am]
8370 //! author : Armendarabyan : https://github.com/armendarabyan
8371
8372 hooks.defineLocale('hy-am', {
8373 months : {
8374 format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),
8375 standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')
8376 },
8377 monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
8378 weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),
8379 weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
8380 weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
8381 longDateFormat : {
8382 LT : 'HH:mm',
8383 LTS : 'HH:mm:ss',
8384 L : 'DD.MM.YYYY',
8385 LL : 'D MMMM YYYY թ.',
8386 LLL : 'D MMMM YYYY թ., HH:mm',
8387 LLLL : 'dddd, D MMMM YYYY թ., HH:mm'
8388 },
8389 calendar : {
8390 sameDay: '[այսօր] LT',
8391 nextDay: '[վաղը] LT',
8392 lastDay: '[երեկ] LT',
8393 nextWeek: function () {
8394 return 'dddd [օրը ժամը] LT';
8395 },
8396 lastWeek: function () {
8397 return '[անցած] dddd [օրը ժամը] LT';
8398 },
8399 sameElse: 'L'
8400 },
8401 relativeTime : {
8402 future : '%s հետո',
8403 past : '%s առաջ',
8404 s : 'մի քանի վայրկյան',
8405 m : 'րոպե',
8406 mm : '%d րոպե',
8407 h : 'ժամ',
8408 hh : '%d ժամ',
8409 d : 'օր',
8410 dd : '%d օր',
8411 M : 'ամիս',
8412 MM : '%d ամիս',
8413 y : 'տարի',
8414 yy : '%d տարի'
8415 },
8416 meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
8417 isPM: function (input) {
8418 return /^(ցերեկվա|երեկոյան)$/.test(input);
8419 },
8420 meridiem : function (hour) {
8421 if (hour < 4) {
8422 return 'գիշերվա';
8423 } else if (hour < 12) {
8424 return 'առավոտվա';
8425 } else if (hour < 17) {
8426 return 'ցերեկվա';
8427 } else {
8428 return 'երեկոյան';
8429 }
8430 },
8431 dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
8432 ordinal: function (number, period) {
8433 switch (period) {
8434 case 'DDD':
8435 case 'w':
8436 case 'W':
8437 case 'DDDo':
8438 if (number === 1) {
8439 return number + '-ին';
8440 }
8441 return number + '-րդ';
8442 default:
8443 return number;
8444 }
8445 },
8446 week : {
8447 dow : 1, // Monday is the first day of the week.
8448 doy : 7 // The week that contains Jan 1st is the first week of the year.
8449 }
8450 });
8451
8452 //! moment.js locale configuration
8453 //! locale : Indonesian [id]
8454 //! author : Mohammad Satrio Utomo : https://github.com/tyok
8455 //! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
8456
8457 hooks.defineLocale('id', {
8458 months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),
8459 monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),
8460 weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
8461 weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
8462 weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
8463 longDateFormat : {
8464 LT : 'HH.mm',
8465 LTS : 'HH.mm.ss',
8466 L : 'DD/MM/YYYY',
8467 LL : 'D MMMM YYYY',
8468 LLL : 'D MMMM YYYY [pukul] HH.mm',
8469 LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
8470 },
8471 meridiemParse: /pagi|siang|sore|malam/,
8472 meridiemHour : function (hour, meridiem) {
8473 if (hour === 12) {
8474 hour = 0;
8475 }
8476 if (meridiem === 'pagi') {
8477 return hour;
8478 } else if (meridiem === 'siang') {
8479 return hour >= 11 ? hour : hour + 12;
8480 } else if (meridiem === 'sore' || meridiem === 'malam') {
8481 return hour + 12;
8482 }
8483 },
8484 meridiem : function (hours, minutes, isLower) {
8485 if (hours < 11) {
8486 return 'pagi';
8487 } else if (hours < 15) {
8488 return 'siang';
8489 } else if (hours < 19) {
8490 return 'sore';
8491 } else {
8492 return 'malam';
8493 }
8494 },
8495 calendar : {
8496 sameDay : '[Hari ini pukul] LT',
8497 nextDay : '[Besok pukul] LT',
8498 nextWeek : 'dddd [pukul] LT',
8499 lastDay : '[Kemarin pukul] LT',
8500 lastWeek : 'dddd [lalu pukul] LT',
8501 sameElse : 'L'
8502 },
8503 relativeTime : {
8504 future : 'dalam %s',
8505 past : '%s yang lalu',
8506 s : 'beberapa detik',
8507 m : 'semenit',
8508 mm : '%d menit',
8509 h : 'sejam',
8510 hh : '%d jam',
8511 d : 'sehari',
8512 dd : '%d hari',
8513 M : 'sebulan',
8514 MM : '%d bulan',
8515 y : 'setahun',
8516 yy : '%d tahun'
8517 },
8518 week : {
8519 dow : 1, // Monday is the first day of the week.
8520 doy : 7 // The week that contains Jan 1st is the first week of the year.
8521 }
8522 });
8523
8524 //! moment.js locale configuration
8525 //! locale : Icelandic [is]
8526 //! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
8527
8528 function plural$2(n) {
8529 if (n % 100 === 11) {
8530 return true;
8531 } else if (n % 10 === 1) {
8532 return false;
8533 }
8534 return true;
8535 }
8536 function translate$5(number, withoutSuffix, key, isFuture) {
8537 var result = number + ' ';
8538 switch (key) {
8539 case 's':
8540 return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';
8541 case 'm':
8542 return withoutSuffix ? 'mínúta' : 'mínútu';
8543 case 'mm':
8544 if (plural$2(number)) {
8545 return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');
8546 } else if (withoutSuffix) {
8547 return result + 'mínúta';
8548 }
8549 return result + 'mínútu';
8550 case 'hh':
8551 if (plural$2(number)) {
8552 return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');
8553 }
8554 return result + 'klukkustund';
8555 case 'd':
8556 if (withoutSuffix) {
8557 return 'dagur';
8558 }
8559 return isFuture ? 'dag' : 'degi';
8560 case 'dd':
8561 if (plural$2(number)) {
8562 if (withoutSuffix) {
8563 return result + 'dagar';
8564 }
8565 return result + (isFuture ? 'daga' : 'dögum');
8566 } else if (withoutSuffix) {
8567 return result + 'dagur';
8568 }
8569 return result + (isFuture ? 'dag' : 'degi');
8570 case 'M':
8571 if (withoutSuffix) {
8572 return 'mánuður';
8573 }
8574 return isFuture ? 'mánuð' : 'mánuði';
8575 case 'MM':
8576 if (plural$2(number)) {
8577 if (withoutSuffix) {
8578 return result + 'mánuðir';
8579 }
8580 return result + (isFuture ? 'mánuði' : 'mánuðum');
8581 } else if (withoutSuffix) {
8582 return result + 'mánuður';
8583 }
8584 return result + (isFuture ? 'mánuð' : 'mánuði');
8585 case 'y':
8586 return withoutSuffix || isFuture ? 'ár' : 'ári';
8587 case 'yy':
8588 if (plural$2(number)) {
8589 return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
8590 }
8591 return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
8592 }
8593 }
8594
8595 hooks.defineLocale('is', {
8596 months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),
8597 monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
8598 weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),
8599 weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
8600 weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
8601 longDateFormat : {
8602 LT : 'H:mm',
8603 LTS : 'H:mm:ss',
8604 L : 'DD.MM.YYYY',
8605 LL : 'D. MMMM YYYY',
8606 LLL : 'D. MMMM YYYY [kl.] H:mm',
8607 LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'
8608 },
8609 calendar : {
8610 sameDay : '[í dag kl.] LT',
8611 nextDay : '[á morgun kl.] LT',
8612 nextWeek : 'dddd [kl.] LT',
8613 lastDay : '[í gær kl.] LT',
8614 lastWeek : '[síðasta] dddd [kl.] LT',
8615 sameElse : 'L'
8616 },
8617 relativeTime : {
8618 future : 'eftir %s',
8619 past : 'fyrir %s síðan',
8620 s : translate$5,
8621 m : translate$5,
8622 mm : translate$5,
8623 h : 'klukkustund',
8624 hh : translate$5,
8625 d : translate$5,
8626 dd : translate$5,
8627 M : translate$5,
8628 MM : translate$5,
8629 y : translate$5,
8630 yy : translate$5
8631 },
8632 dayOfMonthOrdinalParse: /\d{1,2}\./,
8633 ordinal : '%d.',
8634 week : {
8635 dow : 1, // Monday is the first day of the week.
8636 doy : 4 // The week that contains Jan 4th is the first week of the year.
8637 }
8638 });
8639
8640 //! moment.js locale configuration
8641 //! locale : Italian [it]
8642 //! author : Lorenzo : https://github.com/aliem
8643 //! author: Mattia Larentis: https://github.com/nostalgiaz
8644
8645 hooks.defineLocale('it', {
8646 months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
8647 monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
8648 weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),
8649 weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
8650 weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),
8651 longDateFormat : {
8652 LT : 'HH:mm',
8653 LTS : 'HH:mm:ss',
8654 L : 'DD/MM/YYYY',
8655 LL : 'D MMMM YYYY',
8656 LLL : 'D MMMM YYYY HH:mm',
8657 LLLL : 'dddd, D MMMM YYYY HH:mm'
8658 },
8659 calendar : {
8660 sameDay: '[Oggi alle] LT',
8661 nextDay: '[Domani alle] LT',
8662 nextWeek: 'dddd [alle] LT',
8663 lastDay: '[Ieri alle] LT',
8664 lastWeek: function () {
8665 switch (this.day()) {
8666 case 0:
8667 return '[la scorsa] dddd [alle] LT';
8668 default:
8669 return '[lo scorso] dddd [alle] LT';
8670 }
8671 },
8672 sameElse: 'L'
8673 },
8674 relativeTime : {
8675 future : function (s) {
8676 return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;
8677 },
8678 past : '%s fa',
8679 s : 'alcuni secondi',
8680 m : 'un minuto',
8681 mm : '%d minuti',
8682 h : 'un\'ora',
8683 hh : '%d ore',
8684 d : 'un giorno',
8685 dd : '%d giorni',
8686 M : 'un mese',
8687 MM : '%d mesi',
8688 y : 'un anno',
8689 yy : '%d anni'
8690 },
8691 dayOfMonthOrdinalParse : /\d{1,2}º/,
8692 ordinal: '%dº',
8693 week : {
8694 dow : 1, // Monday is the first day of the week.
8695 doy : 4 // The week that contains Jan 4th is the first week of the year.
8696 }
8697 });
8698
8699 //! moment.js locale configuration
8700 //! locale : Japanese [ja]
8701 //! author : LI Long : https://github.com/baryon
8702
8703 hooks.defineLocale('ja', {
8704 months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
8705 monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
8706 weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
8707 weekdaysShort : '日_月_火_水_木_金_土'.split('_'),
8708 weekdaysMin : '日_月_火_水_木_金_土'.split('_'),
8709 longDateFormat : {
8710 LT : 'HH:mm',
8711 LTS : 'HH:mm:ss',
8712 L : 'YYYY/MM/DD',
8713 LL : 'YYYY年M月D日',
8714 LLL : 'YYYY年M月D日 HH:mm',
8715 LLLL : 'YYYY年M月D日 HH:mm dddd',
8716 l : 'YYYY/MM/DD',
8717 ll : 'YYYY年M月D日',
8718 lll : 'YYYY年M月D日 HH:mm',
8719 llll : 'YYYY年M月D日 HH:mm dddd'
8720 },
8721 meridiemParse: /午前|午後/i,
8722 isPM : function (input) {
8723 return input === '午後';
8724 },
8725 meridiem : function (hour, minute, isLower) {
8726 if (hour < 12) {
8727 return '午前';
8728 } else {
8729 return '午後';
8730 }
8731 },
8732 calendar : {
8733 sameDay : '[今日] LT',
8734 nextDay : '[明日] LT',
8735 nextWeek : '[来週]dddd LT',
8736 lastDay : '[昨日] LT',
8737 lastWeek : '[前週]dddd LT',
8738 sameElse : 'L'
8739 },
8740 dayOfMonthOrdinalParse : /\d{1,2}日/,
8741 ordinal : function (number, period) {
8742 switch (period) {
8743 case 'd':
8744 case 'D':
8745 case 'DDD':
8746 return number + '日';
8747 default:
8748 return number;
8749 }
8750 },
8751 relativeTime : {
8752 future : '%s後',
8753 past : '%s前',
8754 s : '数秒',
8755 m : '1分',
8756 mm : '%d分',
8757 h : '1時間',
8758 hh : '%d時間',
8759 d : '1日',
8760 dd : '%d日',
8761 M : '1ヶ月',
8762 MM : '%dヶ月',
8763 y : '1年',
8764 yy : '%d年'
8765 }
8766 });
8767
8768 //! moment.js locale configuration
8769 //! locale : Javanese [jv]
8770 //! author : Rony Lantip : https://github.com/lantip
8771 //! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
8772
8773 hooks.defineLocale('jv', {
8774 months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),
8775 monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
8776 weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
8777 weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
8778 weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
8779 longDateFormat : {
8780 LT : 'HH.mm',
8781 LTS : 'HH.mm.ss',
8782 L : 'DD/MM/YYYY',
8783 LL : 'D MMMM YYYY',
8784 LLL : 'D MMMM YYYY [pukul] HH.mm',
8785 LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
8786 },
8787 meridiemParse: /enjing|siyang|sonten|ndalu/,
8788 meridiemHour : function (hour, meridiem) {
8789 if (hour === 12) {
8790 hour = 0;
8791 }
8792 if (meridiem === 'enjing') {
8793 return hour;
8794 } else if (meridiem === 'siyang') {
8795 return hour >= 11 ? hour : hour + 12;
8796 } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
8797 return hour + 12;
8798 }
8799 },
8800 meridiem : function (hours, minutes, isLower) {
8801 if (hours < 11) {
8802 return 'enjing';
8803 } else if (hours < 15) {
8804 return 'siyang';
8805 } else if (hours < 19) {
8806 return 'sonten';
8807 } else {
8808 return 'ndalu';
8809 }
8810 },
8811 calendar : {
8812 sameDay : '[Dinten puniko pukul] LT',
8813 nextDay : '[Mbenjang pukul] LT',
8814 nextWeek : 'dddd [pukul] LT',
8815 lastDay : '[Kala wingi pukul] LT',
8816 lastWeek : 'dddd [kepengker pukul] LT',
8817 sameElse : 'L'
8818 },
8819 relativeTime : {
8820 future : 'wonten ing %s',
8821 past : '%s ingkang kepengker',
8822 s : 'sawetawis detik',
8823 m : 'setunggal menit',
8824 mm : '%d menit',
8825 h : 'setunggal jam',
8826 hh : '%d jam',
8827 d : 'sedinten',
8828 dd : '%d dinten',
8829 M : 'sewulan',
8830 MM : '%d wulan',
8831 y : 'setaun',
8832 yy : '%d taun'
8833 },
8834 week : {
8835 dow : 1, // Monday is the first day of the week.
8836 doy : 7 // The week that contains Jan 1st is the first week of the year.
8837 }
8838 });
8839
8840 //! moment.js locale configuration
8841 //! locale : Georgian [ka]
8842 //! author : Irakli Janiashvili : https://github.com/irakli-janiashvili
8843
8844 hooks.defineLocale('ka', {
8845 months : {
8846 standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
8847 format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')
8848 },
8849 monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
8850 weekdays : {
8851 standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
8852 format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),
8853 isFormat: /(წინა|შემდეგ)/
8854 },
8855 weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
8856 weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
8857 longDateFormat : {
8858 LT : 'h:mm A',
8859 LTS : 'h:mm:ss A',
8860 L : 'DD/MM/YYYY',
8861 LL : 'D MMMM YYYY',
8862 LLL : 'D MMMM YYYY h:mm A',
8863 LLLL : 'dddd, D MMMM YYYY h:mm A'
8864 },
8865 calendar : {
8866 sameDay : '[დღეს] LT[-ზე]',
8867 nextDay : '[ხვალ] LT[-ზე]',
8868 lastDay : '[გუშინ] LT[-ზე]',
8869 nextWeek : '[შემდეგ] dddd LT[-ზე]',
8870 lastWeek : '[წინა] dddd LT-ზე',
8871 sameElse : 'L'
8872 },
8873 relativeTime : {
8874 future : function (s) {
8875 return (/(წამი|წუთი|საათი|წელი)/).test(s) ?
8876 s.replace(/ი$/, 'ში') :
8877 s + 'ში';
8878 },
8879 past : function (s) {
8880 if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {
8881 return s.replace(/(ი|ე)$/, 'ის უკან');
8882 }
8883 if ((/წელი/).test(s)) {
8884 return s.replace(/წელი$/, 'წლის უკან');
8885 }
8886 },
8887 s : 'რამდენიმე წამი',
8888 m : 'წუთი',
8889 mm : '%d წუთი',
8890 h : 'საათი',
8891 hh : '%d საათი',
8892 d : 'დღე',
8893 dd : '%d დღე',
8894 M : 'თვე',
8895 MM : '%d თვე',
8896 y : 'წელი',
8897 yy : '%d წელი'
8898 },
8899 dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
8900 ordinal : function (number) {
8901 if (number === 0) {
8902 return number;
8903 }
8904 if (number === 1) {
8905 return number + '-ლი';
8906 }
8907 if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {
8908 return 'მე-' + number;
8909 }
8910 return number + '-ე';
8911 },
8912 week : {
8913 dow : 1,
8914 doy : 7
8915 }
8916 });
8917
8918 //! moment.js locale configuration
8919 //! locale : Kazakh [kk]
8920 //! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
8921
8922 var suffixes$1 = {
8923 0: '-ші',
8924 1: '-ші',
8925 2: '-ші',
8926 3: '-ші',
8927 4: '-ші',
8928 5: '-ші',
8929 6: '-шы',
8930 7: '-ші',
8931 8: '-ші',
8932 9: '-шы',
8933 10: '-шы',
8934 20: '-шы',
8935 30: '-шы',
8936 40: '-шы',
8937 50: '-ші',
8938 60: '-шы',
8939 70: '-ші',
8940 80: '-ші',
8941 90: '-шы',
8942 100: '-ші'
8943 };
8944
8945 hooks.defineLocale('kk', {
8946 months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),
8947 monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
8948 weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),
8949 weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
8950 weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
8951 longDateFormat : {
8952 LT : 'HH:mm',
8953 LTS : 'HH:mm:ss',
8954 L : 'DD.MM.YYYY',
8955 LL : 'D MMMM YYYY',
8956 LLL : 'D MMMM YYYY HH:mm',
8957 LLLL : 'dddd, D MMMM YYYY HH:mm'
8958 },
8959 calendar : {
8960 sameDay : '[Бүгін сағат] LT',
8961 nextDay : '[Ертең сағат] LT',
8962 nextWeek : 'dddd [сағат] LT',
8963 lastDay : '[Кеше сағат] LT',
8964 lastWeek : '[Өткен аптаның] dddd [сағат] LT',
8965 sameElse : 'L'
8966 },
8967 relativeTime : {
8968 future : '%s ішінде',
8969 past : '%s бұрын',
8970 s : 'бірнеше секунд',
8971 m : 'бір минут',
8972 mm : '%d минут',
8973 h : 'бір сағат',
8974 hh : '%d сағат',
8975 d : 'бір күн',
8976 dd : '%d күн',
8977 M : 'бір ай',
8978 MM : '%d ай',
8979 y : 'бір жыл',
8980 yy : '%d жыл'
8981 },
8982 dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
8983 ordinal : function (number) {
8984 var a = number % 10,
8985 b = number >= 100 ? 100 : null;
8986 return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);
8987 },
8988 week : {
8989 dow : 1, // Monday is the first day of the week.
8990 doy : 7 // The week that contains Jan 1st is the first week of the year.
8991 }
8992 });
8993
8994 //! moment.js locale configuration
8995 //! locale : Cambodian [km]
8996 //! author : Kruy Vanna : https://github.com/kruyvanna
8997
8998 hooks.defineLocale('km', {
8999 months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
9000 monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
9001 weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
9002 weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
9003 weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
9004 longDateFormat: {
9005 LT: 'HH:mm',
9006 LTS : 'HH:mm:ss',
9007 L: 'DD/MM/YYYY',
9008 LL: 'D MMMM YYYY',
9009 LLL: 'D MMMM YYYY HH:mm',
9010 LLLL: 'dddd, D MMMM YYYY HH:mm'
9011 },
9012 calendar: {
9013 sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
9014 nextDay: '[ស្អែក ម៉ោង] LT',
9015 nextWeek: 'dddd [ម៉ោង] LT',
9016 lastDay: '[ម្សិលមិញ ម៉ោង] LT',
9017 lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
9018 sameElse: 'L'
9019 },
9020 relativeTime: {
9021 future: '%sទៀត',
9022 past: '%sមុន',
9023 s: 'ប៉ុន្មានវិនាទី',
9024 m: 'មួយនាទី',
9025 mm: '%d នាទី',
9026 h: 'មួយម៉ោង',
9027 hh: '%d ម៉ោង',
9028 d: 'មួយថ្ងៃ',
9029 dd: '%d ថ្ងៃ',
9030 M: 'មួយខែ',
9031 MM: '%d ខែ',
9032 y: 'មួយឆ្នាំ',
9033 yy: '%d ឆ្នាំ'
9034 },
9035 week: {
9036 dow: 1, // Monday is the first day of the week.
9037 doy: 4 // The week that contains Jan 4th is the first week of the year.
9038 }
9039 });
9040
9041 //! moment.js locale configuration
9042 //! locale : Kannada [kn]
9043 //! author : Rajeev Naik : https://github.com/rajeevnaikte
9044
9045 var symbolMap$7 = {
9046 '1': '೧',
9047 '2': '೨',
9048 '3': '೩',
9049 '4': '೪',
9050 '5': '೫',
9051 '6': '೬',
9052 '7': '೭',
9053 '8': '೮',
9054 '9': '೯',
9055 '0': '೦'
9056 };
9057 var numberMap$6 = {
9058 '೧': '1',
9059 '೨': '2',
9060 '೩': '3',
9061 '೪': '4',
9062 '೫': '5',
9063 '೬': '6',
9064 '೭': '7',
9065 '೮': '8',
9066 '೯': '9',
9067 '೦': '0'
9068 };
9069
9070 hooks.defineLocale('kn', {
9071 months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),
9072 monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬ_ಅಕ್ಟೋಬ_ನವೆಂಬ_ಡಿಸೆಂಬ'.split('_'),
9073 monthsParseExact: true,
9074 weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),
9075 weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
9076 weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
9077 longDateFormat : {
9078 LT : 'A h:mm',
9079 LTS : 'A h:mm:ss',
9080 L : 'DD/MM/YYYY',
9081 LL : 'D MMMM YYYY',
9082 LLL : 'D MMMM YYYY, A h:mm',
9083 LLLL : 'dddd, D MMMM YYYY, A h:mm'
9084 },
9085 calendar : {
9086 sameDay : '[ಇಂದು] LT',
9087 nextDay : '[ನಾಳೆ] LT',
9088 nextWeek : 'dddd, LT',
9089 lastDay : '[ನಿನ್ನೆ] LT',
9090 lastWeek : '[ಕೊನೆಯ] dddd, LT',
9091 sameElse : 'L'
9092 },
9093 relativeTime : {
9094 future : '%s ನಂತರ',
9095 past : '%s ಹಿಂದೆ',
9096 s : 'ಕೆಲವು ಕ್ಷಣಗಳು',
9097 m : 'ಒಂದು ನಿಮಿಷ',
9098 mm : '%d ನಿಮಿಷ',
9099 h : 'ಒಂದು ಗಂಟೆ',
9100 hh : '%d ಗಂಟೆ',
9101 d : 'ಒಂದು ದಿನ',
9102 dd : '%d ದಿನ',
9103 M : 'ಒಂದು ತಿಂಗಳು',
9104 MM : '%d ತಿಂಗಳು',
9105 y : 'ಒಂದು ವರ್ಷ',
9106 yy : '%d ವರ್ಷ'
9107 },
9108 preparse: function (string) {
9109 return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
9110 return numberMap$6[match];
9111 });
9112 },
9113 postformat: function (string) {
9114 return string.replace(/\d/g, function (match) {
9115 return symbolMap$7[match];
9116 });
9117 },
9118 meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
9119 meridiemHour : function (hour, meridiem) {
9120 if (hour === 12) {
9121 hour = 0;
9122 }
9123 if (meridiem === 'ರಾತ್ರಿ') {
9124 return hour < 4 ? hour : hour + 12;
9125 } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
9126 return hour;
9127 } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
9128 return hour >= 10 ? hour : hour + 12;
9129 } else if (meridiem === 'ಸಂಜೆ') {
9130 return hour + 12;
9131 }
9132 },
9133 meridiem : function (hour, minute, isLower) {
9134 if (hour < 4) {
9135 return 'ರಾತ್ರಿ';
9136 } else if (hour < 10) {
9137 return 'ಬೆಳಿಗ್ಗೆ';
9138 } else if (hour < 17) {
9139 return 'ಮಧ್ಯಾಹ್ನ';
9140 } else if (hour < 20) {
9141 return 'ಸಂಜೆ';
9142 } else {
9143 return 'ರಾತ್ರಿ';
9144 }
9145 },
9146 dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
9147 ordinal : function (number) {
9148 return number + 'ನೇ';
9149 },
9150 week : {
9151 dow : 0, // Sunday is the first day of the week.
9152 doy : 6 // The week that contains Jan 1st is the first week of the year.
9153 }
9154 });
9155
9156 //! moment.js locale configuration
9157 //! locale : Korean [ko]
9158 //! author : Kyungwook, Park : https://github.com/kyungw00k
9159 //! author : Jeeeyul Lee <jeeeyul@gmail.com>
9160
9161 hooks.defineLocale('ko', {
9162 months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
9163 monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
9164 weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
9165 weekdaysShort : '일_월_화_수_목_금_토'.split('_'),
9166 weekdaysMin : '일_월_화_수_목_금_토'.split('_'),
9167 longDateFormat : {
9168 LT : 'A h:mm',
9169 LTS : 'A h:mm:ss',
9170 L : 'YYYY.MM.DD',
9171 LL : 'YYYY년 MMMM D일',
9172 LLL : 'YYYY년 MMMM D일 A h:mm',
9173 LLLL : 'YYYY년 MMMM D일 dddd A h:mm',
9174 l : 'YYYY.MM.DD',
9175 ll : 'YYYY년 MMMM D일',
9176 lll : 'YYYY년 MMMM D일 A h:mm',
9177 llll : 'YYYY년 MMMM D일 dddd A h:mm'
9178 },
9179 calendar : {
9180 sameDay : '오늘 LT',
9181 nextDay : '내일 LT',
9182 nextWeek : 'dddd LT',
9183 lastDay : '어제 LT',
9184 lastWeek : '지난주 dddd LT',
9185 sameElse : 'L'
9186 },
9187 relativeTime : {
9188 future : '%s 후',
9189 past : '%s 전',
9190 s : '몇 초',
9191 ss : '%d초',
9192 m : '1분',
9193 mm : '%d분',
9194 h : '한 시간',
9195 hh : '%d시간',
9196 d : '하루',
9197 dd : '%d일',
9198 M : '한 달',
9199 MM : '%d달',
9200 y : '일 년',
9201 yy : '%d년'
9202 },
9203 dayOfMonthOrdinalParse : /\d{1,2}일/,
9204 ordinal : '%d일',
9205 meridiemParse : /오전|오후/,
9206 isPM : function (token) {
9207 return token === '오후';
9208 },
9209 meridiem : function (hour, minute, isUpper) {
9210 return hour < 12 ? '오전' : '오후';
9211 }
9212 });
9213
9214 //! moment.js locale configuration
9215 //! locale : Kyrgyz [ky]
9216 //! author : Chyngyz Arystan uulu : https://github.com/chyngyz
9217
9218
9219 var suffixes$2 = {
9220 0: '-чү',
9221 1: '-чи',
9222 2: '-чи',
9223 3: '-чү',
9224 4: '-чү',
9225 5: '-чи',
9226 6: '-чы',
9227 7: '-чи',
9228 8: '-чи',
9229 9: '-чу',
9230 10: '-чу',
9231 20: '-чы',
9232 30: '-чу',
9233 40: '-чы',
9234 50: '-чү',
9235 60: '-чы',
9236 70: '-чи',
9237 80: '-чи',
9238 90: '-чу',
9239 100: '-чү'
9240 };
9241
9242 hooks.defineLocale('ky', {
9243 months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
9244 monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
9245 weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),
9246 weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
9247 weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
9248 longDateFormat : {
9249 LT : 'HH:mm',
9250 LTS : 'HH:mm:ss',
9251 L : 'DD.MM.YYYY',
9252 LL : 'D MMMM YYYY',
9253 LLL : 'D MMMM YYYY HH:mm',
9254 LLLL : 'dddd, D MMMM YYYY HH:mm'
9255 },
9256 calendar : {
9257 sameDay : '[Бүгүн саат] LT',
9258 nextDay : '[Эртең саат] LT',
9259 nextWeek : 'dddd [саат] LT',
9260 lastDay : '[Кече саат] LT',
9261 lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT',
9262 sameElse : 'L'
9263 },
9264 relativeTime : {
9265 future : '%s ичинде',
9266 past : '%s мурун',
9267 s : 'бирнече секунд',
9268 m : 'бир мүнөт',
9269 mm : '%d мүнөт',
9270 h : 'бир саат',
9271 hh : '%d саат',
9272 d : 'бир күн',
9273 dd : '%d күн',
9274 M : 'бир ай',
9275 MM : '%d ай',
9276 y : 'бир жыл',
9277 yy : '%d жыл'
9278 },
9279 dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
9280 ordinal : function (number) {
9281 var a = number % 10,
9282 b = number >= 100 ? 100 : null;
9283 return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);
9284 },
9285 week : {
9286 dow : 1, // Monday is the first day of the week.
9287 doy : 7 // The week that contains Jan 1st is the first week of the year.
9288 }
9289 });
9290
9291 //! moment.js locale configuration
9292 //! locale : Luxembourgish [lb]
9293 //! author : mweimerskirch : https://github.com/mweimerskirch
9294 //! author : David Raison : https://github.com/kwisatz
9295
9296 function processRelativeTime$5(number, withoutSuffix, key, isFuture) {
9297 var format = {
9298 'm': ['eng Minutt', 'enger Minutt'],
9299 'h': ['eng Stonn', 'enger Stonn'],
9300 'd': ['een Dag', 'engem Dag'],
9301 'M': ['ee Mount', 'engem Mount'],
9302 'y': ['ee Joer', 'engem Joer']
9303 };
9304 return withoutSuffix ? format[key][0] : format[key][1];
9305 }
9306 function processFutureTime(string) {
9307 var number = string.substr(0, string.indexOf(' '));
9308 if (eifelerRegelAppliesToNumber(number)) {
9309 return 'a ' + string;
9310 }
9311 return 'an ' + string;
9312 }
9313 function processPastTime(string) {
9314 var number = string.substr(0, string.indexOf(' '));
9315 if (eifelerRegelAppliesToNumber(number)) {
9316 return 'viru ' + string;
9317 }
9318 return 'virun ' + string;
9319 }
9320 /**
9321 * Returns true if the word before the given number loses the '-n' ending.
9322 * e.g. 'an 10 Deeg' but 'a 5 Deeg'
9323 *
9324 * @param number {integer}
9325 * @returns {boolean}
9326 */
9327 function eifelerRegelAppliesToNumber(number) {
9328 number = parseInt(number, 10);
9329 if (isNaN(number)) {
9330 return false;
9331 }
9332 if (number < 0) {
9333 // Negative Number --> always true
9334 return true;
9335 } else if (number < 10) {
9336 // Only 1 digit
9337 if (4 <= number && number <= 7) {
9338 return true;
9339 }
9340 return false;
9341 } else if (number < 100) {
9342 // 2 digits
9343 var lastDigit = number % 10, firstDigit = number / 10;
9344 if (lastDigit === 0) {
9345 return eifelerRegelAppliesToNumber(firstDigit);
9346 }
9347 return eifelerRegelAppliesToNumber(lastDigit);
9348 } else if (number < 10000) {
9349 // 3 or 4 digits --> recursively check first digit
9350 while (number >= 10) {
9351 number = number / 10;
9352 }
9353 return eifelerRegelAppliesToNumber(number);
9354 } else {
9355 // Anything larger than 4 digits: recursively check first n-3 digits
9356 number = number / 1000;
9357 return eifelerRegelAppliesToNumber(number);
9358 }
9359 }
9360
9361 hooks.defineLocale('lb', {
9362 months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
9363 monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
9364 monthsParseExact : true,
9365 weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),
9366 weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
9367 weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
9368 weekdaysParseExact : true,
9369 longDateFormat: {
9370 LT: 'H:mm [Auer]',
9371 LTS: 'H:mm:ss [Auer]',
9372 L: 'DD.MM.YYYY',
9373 LL: 'D. MMMM YYYY',
9374 LLL: 'D. MMMM YYYY H:mm [Auer]',
9375 LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'
9376 },
9377 calendar: {
9378 sameDay: '[Haut um] LT',
9379 sameElse: 'L',
9380 nextDay: '[Muer um] LT',
9381 nextWeek: 'dddd [um] LT',
9382 lastDay: '[Gëschter um] LT',
9383 lastWeek: function () {
9384 // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
9385 switch (this.day()) {
9386 case 2:
9387 case 4:
9388 return '[Leschten] dddd [um] LT';
9389 default:
9390 return '[Leschte] dddd [um] LT';
9391 }
9392 }
9393 },
9394 relativeTime : {
9395 future : processFutureTime,
9396 past : processPastTime,
9397 s : 'e puer Sekonnen',
9398 m : processRelativeTime$5,
9399 mm : '%d Minutten',
9400 h : processRelativeTime$5,
9401 hh : '%d Stonnen',
9402 d : processRelativeTime$5,
9403 dd : '%d Deeg',
9404 M : processRelativeTime$5,
9405 MM : '%d Méint',
9406 y : processRelativeTime$5,
9407 yy : '%d Joer'
9408 },
9409 dayOfMonthOrdinalParse: /\d{1,2}\./,
9410 ordinal: '%d.',
9411 week: {
9412 dow: 1, // Monday is the first day of the week.
9413 doy: 4 // The week that contains Jan 4th is the first week of the year.
9414 }
9415 });
9416
9417 //! moment.js locale configuration
9418 //! locale : Lao [lo]
9419 //! author : Ryan Hart : https://github.com/ryanhart2
9420
9421 hooks.defineLocale('lo', {
9422 months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
9423 monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
9424 weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
9425 weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
9426 weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
9427 weekdaysParseExact : true,
9428 longDateFormat : {
9429 LT : 'HH:mm',
9430 LTS : 'HH:mm:ss',
9431 L : 'DD/MM/YYYY',
9432 LL : 'D MMMM YYYY',
9433 LLL : 'D MMMM YYYY HH:mm',
9434 LLLL : 'ວັນdddd D MMMM YYYY HH:mm'
9435 },
9436 meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
9437 isPM: function (input) {
9438 return input === 'ຕອນແລງ';
9439 },
9440 meridiem : function (hour, minute, isLower) {
9441 if (hour < 12) {
9442 return 'ຕອນເຊົ້າ';
9443 } else {
9444 return 'ຕອນແລງ';
9445 }
9446 },
9447 calendar : {
9448 sameDay : '[ມື້ນີ້ເວລາ] LT',
9449 nextDay : '[ມື້ອື່ນເວລາ] LT',
9450 nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',
9451 lastDay : '[ມື້ວານນີ້ເວລາ] LT',
9452 lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
9453 sameElse : 'L'
9454 },
9455 relativeTime : {
9456 future : 'ອີກ %s',
9457 past : '%sຜ່ານມາ',
9458 s : 'ບໍ່ເທົ່າໃດວິນາທີ',
9459 m : '1 ນາທີ',
9460 mm : '%d ນາທີ',
9461 h : '1 ຊົ່ວໂມງ',
9462 hh : '%d ຊົ່ວໂມງ',
9463 d : '1 ມື້',
9464 dd : '%d ມື້',
9465 M : '1 ເດືອນ',
9466 MM : '%d ເດືອນ',
9467 y : '1 ປີ',
9468 yy : '%d ປີ'
9469 },
9470 dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
9471 ordinal : function (number) {
9472 return 'ທີ່' + number;
9473 }
9474 });
9475
9476 //! moment.js locale configuration
9477 //! locale : Lithuanian [lt]
9478 //! author : Mindaugas Mozūras : https://github.com/mmozuras
9479
9480 var units = {
9481 'm' : 'minutė_minutės_minutę',
9482 'mm': 'minutės_minučių_minutes',
9483 'h' : 'valanda_valandos_valandą',
9484 'hh': 'valandos_valandų_valandas',
9485 'd' : 'diena_dienos_dieną',
9486 'dd': 'dienos_dienų_dienas',
9487 'M' : 'mėnuo_mėnesio_mėnesį',
9488 'MM': 'mėnesiai_mėnesių_mėnesius',
9489 'y' : 'metai_metų_metus',
9490 'yy': 'metai_metų_metus'
9491 };
9492 function translateSeconds(number, withoutSuffix, key, isFuture) {
9493 if (withoutSuffix) {
9494 return 'kelios sekundės';
9495 } else {
9496 return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
9497 }
9498 }
9499 function translateSingular(number, withoutSuffix, key, isFuture) {
9500 return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);
9501 }
9502 function special(number) {
9503 return number % 10 === 0 || (number > 10 && number < 20);
9504 }
9505 function forms(key) {
9506 return units[key].split('_');
9507 }
9508 function translate$6(number, withoutSuffix, key, isFuture) {
9509 var result = number + ' ';
9510 if (number === 1) {
9511 return result + translateSingular(number, withoutSuffix, key[0], isFuture);
9512 } else if (withoutSuffix) {
9513 return result + (special(number) ? forms(key)[1] : forms(key)[0]);
9514 } else {
9515 if (isFuture) {
9516 return result + forms(key)[1];
9517 } else {
9518 return result + (special(number) ? forms(key)[1] : forms(key)[2]);
9519 }
9520 }
9521 }
9522 hooks.defineLocale('lt', {
9523 months : {
9524 format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),
9525 standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),
9526 isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/
9527 },
9528 monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
9529 weekdays : {
9530 format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),
9531 standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),
9532 isFormat: /dddd HH:mm/
9533 },
9534 weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
9535 weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),
9536 weekdaysParseExact : true,
9537 longDateFormat : {
9538 LT : 'HH:mm',
9539 LTS : 'HH:mm:ss',
9540 L : 'YYYY-MM-DD',
9541 LL : 'YYYY [m.] MMMM D [d.]',
9542 LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
9543 LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
9544 l : 'YYYY-MM-DD',
9545 ll : 'YYYY [m.] MMMM D [d.]',
9546 lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
9547 llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'
9548 },
9549 calendar : {
9550 sameDay : '[Šiandien] LT',
9551 nextDay : '[Rytoj] LT',
9552 nextWeek : 'dddd LT',
9553 lastDay : '[Vakar] LT',
9554 lastWeek : '[Praėjusį] dddd LT',
9555 sameElse : 'L'
9556 },
9557 relativeTime : {
9558 future : 'po %s',
9559 past : 'prieš %s',
9560 s : translateSeconds,
9561 m : translateSingular,
9562 mm : translate$6,
9563 h : translateSingular,
9564 hh : translate$6,
9565 d : translateSingular,
9566 dd : translate$6,
9567 M : translateSingular,
9568 MM : translate$6,
9569 y : translateSingular,
9570 yy : translate$6
9571 },
9572 dayOfMonthOrdinalParse: /\d{1,2}-oji/,
9573 ordinal : function (number) {
9574 return number + '-oji';
9575 },
9576 week : {
9577 dow : 1, // Monday is the first day of the week.
9578 doy : 4 // The week that contains Jan 4th is the first week of the year.
9579 }
9580 });
9581
9582 //! moment.js locale configuration
9583 //! locale : Latvian [lv]
9584 //! author : Kristaps Karlsons : https://github.com/skakri
9585 //! author : Jānis Elmeris : https://github.com/JanisE
9586
9587 var units$1 = {
9588 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
9589 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
9590 'h': 'stundas_stundām_stunda_stundas'.split('_'),
9591 'hh': 'stundas_stundām_stunda_stundas'.split('_'),
9592 'd': 'dienas_dienām_diena_dienas'.split('_'),
9593 'dd': 'dienas_dienām_diena_dienas'.split('_'),
9594 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
9595 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
9596 'y': 'gada_gadiem_gads_gadi'.split('_'),
9597 'yy': 'gada_gadiem_gads_gadi'.split('_')
9598 };
9599 /**
9600 * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
9601 */
9602 function format$1(forms, number, withoutSuffix) {
9603 if (withoutSuffix) {
9604 // E.g. "21 minūte", "3 minūtes".
9605 return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
9606 } else {
9607 // E.g. "21 minūtes" as in "pēc 21 minūtes".
9608 // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
9609 return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
9610 }
9611 }
9612 function relativeTimeWithPlural$1(number, withoutSuffix, key) {
9613 return number + ' ' + format$1(units$1[key], number, withoutSuffix);
9614 }
9615 function relativeTimeWithSingular(number, withoutSuffix, key) {
9616 return format$1(units$1[key], number, withoutSuffix);
9617 }
9618 function relativeSeconds(number, withoutSuffix) {
9619 return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
9620 }
9621
9622 hooks.defineLocale('lv', {
9623 months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),
9624 monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
9625 weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),
9626 weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),
9627 weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),
9628 weekdaysParseExact : true,
9629 longDateFormat : {
9630 LT : 'HH:mm',
9631 LTS : 'HH:mm:ss',
9632 L : 'DD.MM.YYYY.',
9633 LL : 'YYYY. [gada] D. MMMM',
9634 LLL : 'YYYY. [gada] D. MMMM, HH:mm',
9635 LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'
9636 },
9637 calendar : {
9638 sameDay : '[Šodien pulksten] LT',
9639 nextDay : '[Rīt pulksten] LT',
9640 nextWeek : 'dddd [pulksten] LT',
9641 lastDay : '[Vakar pulksten] LT',
9642 lastWeek : '[Pagājušā] dddd [pulksten] LT',
9643 sameElse : 'L'
9644 },
9645 relativeTime : {
9646 future : 'pēc %s',
9647 past : 'pirms %s',
9648 s : relativeSeconds,
9649 m : relativeTimeWithSingular,
9650 mm : relativeTimeWithPlural$1,
9651 h : relativeTimeWithSingular,
9652 hh : relativeTimeWithPlural$1,
9653 d : relativeTimeWithSingular,
9654 dd : relativeTimeWithPlural$1,
9655 M : relativeTimeWithSingular,
9656 MM : relativeTimeWithPlural$1,
9657 y : relativeTimeWithSingular,
9658 yy : relativeTimeWithPlural$1
9659 },
9660 dayOfMonthOrdinalParse: /\d{1,2}\./,
9661 ordinal : '%d.',
9662 week : {
9663 dow : 1, // Monday is the first day of the week.
9664 doy : 4 // The week that contains Jan 4th is the first week of the year.
9665 }
9666 });
9667
9668 //! moment.js locale configuration
9669 //! locale : Montenegrin [me]
9670 //! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac
9671
9672 var translator = {
9673 words: { //Different grammatical cases
9674 m: ['jedan minut', 'jednog minuta'],
9675 mm: ['minut', 'minuta', 'minuta'],
9676 h: ['jedan sat', 'jednog sata'],
9677 hh: ['sat', 'sata', 'sati'],
9678 dd: ['dan', 'dana', 'dana'],
9679 MM: ['mjesec', 'mjeseca', 'mjeseci'],
9680 yy: ['godina', 'godine', 'godina']
9681 },
9682 correctGrammaticalCase: function (number, wordKey) {
9683 return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
9684 },
9685 translate: function (number, withoutSuffix, key) {
9686 var wordKey = translator.words[key];
9687 if (key.length === 1) {
9688 return withoutSuffix ? wordKey[0] : wordKey[1];
9689 } else {
9690 return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
9691 }
9692 }
9693 };
9694
9695 hooks.defineLocale('me', {
9696 months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
9697 monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
9698 monthsParseExact : true,
9699 weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
9700 weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
9701 weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
9702 weekdaysParseExact : true,
9703 longDateFormat: {
9704 LT: 'H:mm',
9705 LTS : 'H:mm:ss',
9706 L: 'DD.MM.YYYY',
9707 LL: 'D. MMMM YYYY',
9708 LLL: 'D. MMMM YYYY H:mm',
9709 LLLL: 'dddd, D. MMMM YYYY H:mm'
9710 },
9711 calendar: {
9712 sameDay: '[danas u] LT',
9713 nextDay: '[sjutra u] LT',
9714
9715 nextWeek: function () {
9716 switch (this.day()) {
9717 case 0:
9718 return '[u] [nedjelju] [u] LT';
9719 case 3:
9720 return '[u] [srijedu] [u] LT';
9721 case 6:
9722 return '[u] [subotu] [u] LT';
9723 case 1:
9724 case 2:
9725 case 4:
9726 case 5:
9727 return '[u] dddd [u] LT';
9728 }
9729 },
9730 lastDay : '[juče u] LT',
9731 lastWeek : function () {
9732 var lastWeekDays = [
9733 '[prošle] [nedjelje] [u] LT',
9734 '[prošlog] [ponedjeljka] [u] LT',
9735 '[prošlog] [utorka] [u] LT',
9736 '[prošle] [srijede] [u] LT',
9737 '[prošlog] [četvrtka] [u] LT',
9738 '[prošlog] [petka] [u] LT',
9739 '[prošle] [subote] [u] LT'
9740 ];
9741 return lastWeekDays[this.day()];
9742 },
9743 sameElse : 'L'
9744 },
9745 relativeTime : {
9746 future : 'za %s',
9747 past : 'prije %s',
9748 s : 'nekoliko sekundi',
9749 m : translator.translate,
9750 mm : translator.translate,
9751 h : translator.translate,
9752 hh : translator.translate,
9753 d : 'dan',
9754 dd : translator.translate,
9755 M : 'mjesec',
9756 MM : translator.translate,
9757 y : 'godinu',
9758 yy : translator.translate
9759 },
9760 dayOfMonthOrdinalParse: /\d{1,2}\./,
9761 ordinal : '%d.',
9762 week : {
9763 dow : 1, // Monday is the first day of the week.
9764 doy : 7 // The week that contains Jan 1st is the first week of the year.
9765 }
9766 });
9767
9768 //! moment.js locale configuration
9769 //! locale : Maori [mi]
9770 //! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal
9771
9772 hooks.defineLocale('mi', {
9773 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('_'),
9774 monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),
9775 monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
9776 monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
9777 monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
9778 monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
9779 weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
9780 weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
9781 weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
9782 longDateFormat: {
9783 LT: 'HH:mm',
9784 LTS: 'HH:mm:ss',
9785 L: 'DD/MM/YYYY',
9786 LL: 'D MMMM YYYY',
9787 LLL: 'D MMMM YYYY [i] HH:mm',
9788 LLLL: 'dddd, D MMMM YYYY [i] HH:mm'
9789 },
9790 calendar: {
9791 sameDay: '[i teie mahana, i] LT',
9792 nextDay: '[apopo i] LT',
9793 nextWeek: 'dddd [i] LT',
9794 lastDay: '[inanahi i] LT',
9795 lastWeek: 'dddd [whakamutunga i] LT',
9796 sameElse: 'L'
9797 },
9798 relativeTime: {
9799 future: 'i roto i %s',
9800 past: '%s i mua',
9801 s: 'te hēkona ruarua',
9802 m: 'he meneti',
9803 mm: '%d meneti',
9804 h: 'te haora',
9805 hh: '%d haora',
9806 d: 'he ra',
9807 dd: '%d ra',
9808 M: 'he marama',
9809 MM: '%d marama',
9810 y: 'he tau',
9811 yy: '%d tau'
9812 },
9813 dayOfMonthOrdinalParse: /\d{1,2}º/,
9814 ordinal: '%dº',
9815 week : {
9816 dow : 1, // Monday is the first day of the week.
9817 doy : 4 // The week that contains Jan 4th is the first week of the year.
9818 }
9819 });
9820
9821 //! moment.js locale configuration
9822 //! locale : Macedonian [mk]
9823 //! author : Borislav Mickov : https://github.com/B0k0
9824
9825 hooks.defineLocale('mk', {
9826 months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),
9827 monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
9828 weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),
9829 weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
9830 weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),
9831 longDateFormat : {
9832 LT : 'H:mm',
9833 LTS : 'H:mm:ss',
9834 L : 'D.MM.YYYY',
9835 LL : 'D MMMM YYYY',
9836 LLL : 'D MMMM YYYY H:mm',
9837 LLLL : 'dddd, D MMMM YYYY H:mm'
9838 },
9839 calendar : {
9840 sameDay : '[Денес во] LT',
9841 nextDay : '[Утре во] LT',
9842 nextWeek : '[Во] dddd [во] LT',
9843 lastDay : '[Вчера во] LT',
9844 lastWeek : function () {
9845 switch (this.day()) {
9846 case 0:
9847 case 3:
9848 case 6:
9849 return '[Изминатата] dddd [во] LT';
9850 case 1:
9851 case 2:
9852 case 4:
9853 case 5:
9854 return '[Изминатиот] dddd [во] LT';
9855 }
9856 },
9857 sameElse : 'L'
9858 },
9859 relativeTime : {
9860 future : 'после %s',
9861 past : 'пред %s',
9862 s : 'неколку секунди',
9863 m : 'минута',
9864 mm : '%d минути',
9865 h : 'час',
9866 hh : '%d часа',
9867 d : 'ден',
9868 dd : '%d дена',
9869 M : 'месец',
9870 MM : '%d месеци',
9871 y : 'година',
9872 yy : '%d години'
9873 },
9874 dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
9875 ordinal : function (number) {
9876 var lastDigit = number % 10,
9877 last2Digits = number % 100;
9878 if (number === 0) {
9879 return number + '-ев';
9880 } else if (last2Digits === 0) {
9881 return number + '-ен';
9882 } else if (last2Digits > 10 && last2Digits < 20) {
9883 return number + '-ти';
9884 } else if (lastDigit === 1) {
9885 return number + '-ви';
9886 } else if (lastDigit === 2) {
9887 return number + '-ри';
9888 } else if (lastDigit === 7 || lastDigit === 8) {
9889 return number + '-ми';
9890 } else {
9891 return number + '-ти';
9892 }
9893 },
9894 week : {
9895 dow : 1, // Monday is the first day of the week.
9896 doy : 7 // The week that contains Jan 1st is the first week of the year.
9897 }
9898 });
9899
9900 //! moment.js locale configuration
9901 //! locale : Malayalam [ml]
9902 //! author : Floyd Pink : https://github.com/floydpink
9903
9904 hooks.defineLocale('ml', {
9905 months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),
9906 monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),
9907 monthsParseExact : true,
9908 weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),
9909 weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
9910 weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
9911 longDateFormat : {
9912 LT : 'A h:mm -നു',
9913 LTS : 'A h:mm:ss -നു',
9914 L : 'DD/MM/YYYY',
9915 LL : 'D MMMM YYYY',
9916 LLL : 'D MMMM YYYY, A h:mm -നു',
9917 LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'
9918 },
9919 calendar : {
9920 sameDay : '[ഇന്ന്] LT',
9921 nextDay : '[നാളെ] LT',
9922 nextWeek : 'dddd, LT',
9923 lastDay : '[ഇന്നലെ] LT',
9924 lastWeek : '[കഴിഞ്ഞ] dddd, LT',
9925 sameElse : 'L'
9926 },
9927 relativeTime : {
9928 future : '%s കഴിഞ്ഞ്',
9929 past : '%s മുൻപ്',
9930 s : 'അൽപ നിമിഷങ്ങൾ',
9931 m : 'ഒരു മിനിറ്റ്',
9932 mm : '%d മിനിറ്റ്',
9933 h : 'ഒരു മണിക്കൂർ',
9934 hh : '%d മണിക്കൂർ',
9935 d : 'ഒരു ദിവസം',
9936 dd : '%d ദിവസം',
9937 M : 'ഒരു മാസം',
9938 MM : '%d മാസം',
9939 y : 'ഒരു വർഷം',
9940 yy : '%d വർഷം'
9941 },
9942 meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
9943 meridiemHour : function (hour, meridiem) {
9944 if (hour === 12) {
9945 hour = 0;
9946 }
9947 if ((meridiem === 'രാത്രി' && hour >= 4) ||
9948 meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
9949 meridiem === 'വൈകുന്നേരം') {
9950 return hour + 12;
9951 } else {
9952 return hour;
9953 }
9954 },
9955 meridiem : function (hour, minute, isLower) {
9956 if (hour < 4) {
9957 return 'രാത്രി';
9958 } else if (hour < 12) {
9959 return 'രാവിലെ';
9960 } else if (hour < 17) {
9961 return 'ഉച്ച കഴിഞ്ഞ്';
9962 } else if (hour < 20) {
9963 return 'വൈകുന്നേരം';
9964 } else {
9965 return 'രാത്രി';
9966 }
9967 }
9968 });
9969
9970 //! moment.js locale configuration
9971 //! locale : Marathi [mr]
9972 //! author : Harshad Kale : https://github.com/kalehv
9973 //! author : Vivek Athalye : https://github.com/vnathalye
9974
9975 var symbolMap$8 = {
9976 '1': '१',
9977 '2': '२',
9978 '3': '३',
9979 '4': '४',
9980 '5': '५',
9981 '6': '६',
9982 '7': '७',
9983 '8': '८',
9984 '9': '९',
9985 '0': '०'
9986 };
9987 var numberMap$7 = {
9988 '१': '1',
9989 '२': '2',
9990 '३': '3',
9991 '४': '4',
9992 '५': '5',
9993 '६': '6',
9994 '७': '7',
9995 '८': '8',
9996 '९': '9',
9997 '०': '0'
9998 };
9999
10000 function relativeTimeMr(number, withoutSuffix, string, isFuture)
10001 {
10002 var output = '';
10003 if (withoutSuffix) {
10004 switch (string) {
10005 case 's': output = 'काही सेकंद'; break;
10006 case 'm': output = 'एक मिनिट'; break;
10007 case 'mm': output = '%d मिनिटे'; break;
10008 case 'h': output = 'एक तास'; break;
10009 case 'hh': output = '%d तास'; break;
10010 case 'd': output = 'एक दिवस'; break;
10011 case 'dd': output = '%d दिवस'; break;
10012 case 'M': output = 'एक महिना'; break;
10013 case 'MM': output = '%d महिने'; break;
10014 case 'y': output = 'एक वर्ष'; break;
10015 case 'yy': output = '%d वर्षे'; break;
10016 }
10017 }
10018 else {
10019 switch (string) {
10020 case 's': output = 'काही सेकंदां'; break;
10021 case 'm': output = 'एका मिनिटा'; break;
10022 case 'mm': output = '%d मिनिटां'; break;
10023 case 'h': output = 'एका तासा'; break;
10024 case 'hh': output = '%d तासां'; break;
10025 case 'd': output = 'एका दिवसा'; break;
10026 case 'dd': output = '%d दिवसां'; break;
10027 case 'M': output = 'एका महिन्या'; break;
10028 case 'MM': output = '%d महिन्यां'; break;
10029 case 'y': output = 'एका वर्षा'; break;
10030 case 'yy': output = '%d वर्षां'; break;
10031 }
10032 }
10033 return output.replace(/%d/i, number);
10034 }
10035
10036 hooks.defineLocale('mr', {
10037 months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),
10038 monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),
10039 monthsParseExact : true,
10040 weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
10041 weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
10042 weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
10043 longDateFormat : {
10044 LT : 'A h:mm वाजता',
10045 LTS : 'A h:mm:ss वाजता',
10046 L : 'DD/MM/YYYY',
10047 LL : 'D MMMM YYYY',
10048 LLL : 'D MMMM YYYY, A h:mm वाजता',
10049 LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'
10050 },
10051 calendar : {
10052 sameDay : '[आज] LT',
10053 nextDay : '[उद्या] LT',
10054 nextWeek : 'dddd, LT',
10055 lastDay : '[काल] LT',
10056 lastWeek: '[मागील] dddd, LT',
10057 sameElse : 'L'
10058 },
10059 relativeTime : {
10060 future: '%sमध्ये',
10061 past: '%sपूर्वी',
10062 s: relativeTimeMr,
10063 m: relativeTimeMr,
10064 mm: relativeTimeMr,
10065 h: relativeTimeMr,
10066 hh: relativeTimeMr,
10067 d: relativeTimeMr,
10068 dd: relativeTimeMr,
10069 M: relativeTimeMr,
10070 MM: relativeTimeMr,
10071 y: relativeTimeMr,
10072 yy: relativeTimeMr
10073 },
10074 preparse: function (string) {
10075 return string.replace(/[१२३४५६७८९०]/g, function (match) {
10076 return numberMap$7[match];
10077 });
10078 },
10079 postformat: function (string) {
10080 return string.replace(/\d/g, function (match) {
10081 return symbolMap$8[match];
10082 });
10083 },
10084 meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,
10085 meridiemHour : function (hour, meridiem) {
10086 if (hour === 12) {
10087 hour = 0;
10088 }
10089 if (meridiem === 'रात्री') {
10090 return hour < 4 ? hour : hour + 12;
10091 } else if (meridiem === 'सकाळी') {
10092 return hour;
10093 } else if (meridiem === 'दुपारी') {
10094 return hour >= 10 ? hour : hour + 12;
10095 } else if (meridiem === 'सायंकाळी') {
10096 return hour + 12;
10097 }
10098 },
10099 meridiem: function (hour, minute, isLower) {
10100 if (hour < 4) {
10101 return 'रात्री';
10102 } else if (hour < 10) {
10103 return 'सकाळी';
10104 } else if (hour < 17) {
10105 return 'दुपारी';
10106 } else if (hour < 20) {
10107 return 'सायंकाळी';
10108 } else {
10109 return 'रात्री';
10110 }
10111 },
10112 week : {
10113 dow : 0, // Sunday is the first day of the week.
10114 doy : 6 // The week that contains Jan 1st is the first week of the year.
10115 }
10116 });
10117
10118 //! moment.js locale configuration
10119 //! locale : Malay [ms-my]
10120 //! note : DEPRECATED, the correct one is [ms]
10121 //! author : Weldan Jamili : https://github.com/weldan
10122
10123 hooks.defineLocale('ms-my', {
10124 months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
10125 monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
10126 weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
10127 weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
10128 weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
10129 longDateFormat : {
10130 LT : 'HH.mm',
10131 LTS : 'HH.mm.ss',
10132 L : 'DD/MM/YYYY',
10133 LL : 'D MMMM YYYY',
10134 LLL : 'D MMMM YYYY [pukul] HH.mm',
10135 LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
10136 },
10137 meridiemParse: /pagi|tengahari|petang|malam/,
10138 meridiemHour: function (hour, meridiem) {
10139 if (hour === 12) {
10140 hour = 0;
10141 }
10142 if (meridiem === 'pagi') {
10143 return hour;
10144 } else if (meridiem === 'tengahari') {
10145 return hour >= 11 ? hour : hour + 12;
10146 } else if (meridiem === 'petang' || meridiem === 'malam') {
10147 return hour + 12;
10148 }
10149 },
10150 meridiem : function (hours, minutes, isLower) {
10151 if (hours < 11) {
10152 return 'pagi';
10153 } else if (hours < 15) {
10154 return 'tengahari';
10155 } else if (hours < 19) {
10156 return 'petang';
10157 } else {
10158 return 'malam';
10159 }
10160 },
10161 calendar : {
10162 sameDay : '[Hari ini pukul] LT',
10163 nextDay : '[Esok pukul] LT',
10164 nextWeek : 'dddd [pukul] LT',
10165 lastDay : '[Kelmarin pukul] LT',
10166 lastWeek : 'dddd [lepas pukul] LT',
10167 sameElse : 'L'
10168 },
10169 relativeTime : {
10170 future : 'dalam %s',
10171 past : '%s yang lepas',
10172 s : 'beberapa saat',
10173 m : 'seminit',
10174 mm : '%d minit',
10175 h : 'sejam',
10176 hh : '%d jam',
10177 d : 'sehari',
10178 dd : '%d hari',
10179 M : 'sebulan',
10180 MM : '%d bulan',
10181 y : 'setahun',
10182 yy : '%d tahun'
10183 },
10184 week : {
10185 dow : 1, // Monday is the first day of the week.
10186 doy : 7 // The week that contains Jan 1st is the first week of the year.
10187 }
10188 });
10189
10190 //! moment.js locale configuration
10191 //! locale : Malay [ms]
10192 //! author : Weldan Jamili : https://github.com/weldan
10193
10194 hooks.defineLocale('ms', {
10195 months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
10196 monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
10197 weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
10198 weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
10199 weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
10200 longDateFormat : {
10201 LT : 'HH.mm',
10202 LTS : 'HH.mm.ss',
10203 L : 'DD/MM/YYYY',
10204 LL : 'D MMMM YYYY',
10205 LLL : 'D MMMM YYYY [pukul] HH.mm',
10206 LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
10207 },
10208 meridiemParse: /pagi|tengahari|petang|malam/,
10209 meridiemHour: function (hour, meridiem) {
10210 if (hour === 12) {
10211 hour = 0;
10212 }
10213 if (meridiem === 'pagi') {
10214 return hour;
10215 } else if (meridiem === 'tengahari') {
10216 return hour >= 11 ? hour : hour + 12;
10217 } else if (meridiem === 'petang' || meridiem === 'malam') {
10218 return hour + 12;
10219 }
10220 },
10221 meridiem : function (hours, minutes, isLower) {
10222 if (hours < 11) {
10223 return 'pagi';
10224 } else if (hours < 15) {
10225 return 'tengahari';
10226 } else if (hours < 19) {
10227 return 'petang';
10228 } else {
10229 return 'malam';
10230 }
10231 },
10232 calendar : {
10233 sameDay : '[Hari ini pukul] LT',
10234 nextDay : '[Esok pukul] LT',
10235 nextWeek : 'dddd [pukul] LT',
10236 lastDay : '[Kelmarin pukul] LT',
10237 lastWeek : 'dddd [lepas pukul] LT',
10238 sameElse : 'L'
10239 },
10240 relativeTime : {
10241 future : 'dalam %s',
10242 past : '%s yang lepas',
10243 s : 'beberapa saat',
10244 m : 'seminit',
10245 mm : '%d minit',
10246 h : 'sejam',
10247 hh : '%d jam',
10248 d : 'sehari',
10249 dd : '%d hari',
10250 M : 'sebulan',
10251 MM : '%d bulan',
10252 y : 'setahun',
10253 yy : '%d tahun'
10254 },
10255 week : {
10256 dow : 1, // Monday is the first day of the week.
10257 doy : 7 // The week that contains Jan 1st is the first week of the year.
10258 }
10259 });
10260
10261 //! moment.js locale configuration
10262 //! locale : Burmese [my]
10263 //! author : Squar team, mysquar.com
10264 //! author : David Rossellat : https://github.com/gholadr
10265 //! author : Tin Aung Lin : https://github.com/thanyawzinmin
10266
10267 var symbolMap$9 = {
10268 '1': '၁',
10269 '2': '၂',
10270 '3': '၃',
10271 '4': '၄',
10272 '5': '၅',
10273 '6': '၆',
10274 '7': '၇',
10275 '8': '၈',
10276 '9': '၉',
10277 '0': '၀'
10278 };
10279 var numberMap$8 = {
10280 '၁': '1',
10281 '၂': '2',
10282 '၃': '3',
10283 '၄': '4',
10284 '၅': '5',
10285 '၆': '6',
10286 '၇': '7',
10287 '၈': '8',
10288 '၉': '9',
10289 '၀': '0'
10290 };
10291
10292 hooks.defineLocale('my', {
10293 months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),
10294 monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
10295 weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),
10296 weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
10297 weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
10298
10299 longDateFormat: {
10300 LT: 'HH:mm',
10301 LTS: 'HH:mm:ss',
10302 L: 'DD/MM/YYYY',
10303 LL: 'D MMMM YYYY',
10304 LLL: 'D MMMM YYYY HH:mm',
10305 LLLL: 'dddd D MMMM YYYY HH:mm'
10306 },
10307 calendar: {
10308 sameDay: '[ယနေ.] LT [မှာ]',
10309 nextDay: '[မနက်ဖြန်] LT [မှာ]',
10310 nextWeek: 'dddd LT [မှာ]',
10311 lastDay: '[မနေ.က] LT [မှာ]',
10312 lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
10313 sameElse: 'L'
10314 },
10315 relativeTime: {
10316 future: 'လာမည့် %s မှာ',
10317 past: 'လွန်ခဲ့သော %s က',
10318 s: 'စက္ကန်.အနည်းငယ်',
10319 m: 'တစ်မိနစ်',
10320 mm: '%d မိနစ်',
10321 h: 'တစ်နာရီ',
10322 hh: '%d နာရီ',
10323 d: 'တစ်ရက်',
10324 dd: '%d ရက်',
10325 M: 'တစ်လ',
10326 MM: '%d လ',
10327 y: 'တစ်နှစ်',
10328 yy: '%d နှစ်'
10329 },
10330 preparse: function (string) {
10331 return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
10332 return numberMap$8[match];
10333 });
10334 },
10335 postformat: function (string) {
10336 return string.replace(/\d/g, function (match) {
10337 return symbolMap$9[match];
10338 });
10339 },
10340 week: {
10341 dow: 1, // Monday is the first day of the week.
10342 doy: 4 // The week that contains Jan 1st is the first week of the year.
10343 }
10344 });
10345
10346 //! moment.js locale configuration
10347 //! locale : Norwegian Bokmål [nb]
10348 //! authors : Espen Hovlandsdal : https://github.com/rexxars
10349 //! Sigurd Gartmann : https://github.com/sigurdga
10350
10351 hooks.defineLocale('nb', {
10352 months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
10353 monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
10354 monthsParseExact : true,
10355 weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
10356 weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),
10357 weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
10358 weekdaysParseExact : true,
10359 longDateFormat : {
10360 LT : 'HH:mm',
10361 LTS : 'HH:mm:ss',
10362 L : 'DD.MM.YYYY',
10363 LL : 'D. MMMM YYYY',
10364 LLL : 'D. MMMM YYYY [kl.] HH:mm',
10365 LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
10366 },
10367 calendar : {
10368 sameDay: '[i dag kl.] LT',
10369 nextDay: '[i morgen kl.] LT',
10370 nextWeek: 'dddd [kl.] LT',
10371 lastDay: '[i går kl.] LT',
10372 lastWeek: '[forrige] dddd [kl.] LT',
10373 sameElse: 'L'
10374 },
10375 relativeTime : {
10376 future : 'om %s',
10377 past : '%s siden',
10378 s : 'noen sekunder',
10379 m : 'ett minutt',
10380 mm : '%d minutter',
10381 h : 'en time',
10382 hh : '%d timer',
10383 d : 'en dag',
10384 dd : '%d dager',
10385 M : 'en måned',
10386 MM : '%d måneder',
10387 y : 'ett år',
10388 yy : '%d år'
10389 },
10390 dayOfMonthOrdinalParse: /\d{1,2}\./,
10391 ordinal : '%d.',
10392 week : {
10393 dow : 1, // Monday is the first day of the week.
10394 doy : 4 // The week that contains Jan 4th is the first week of the year.
10395 }
10396 });
10397
10398 //! moment.js locale configuration
10399 //! locale : Nepalese [ne]
10400 //! author : suvash : https://github.com/suvash
10401
10402 var symbolMap$10 = {
10403 '1': '१',
10404 '2': '२',
10405 '3': '३',
10406 '4': '४',
10407 '5': '५',
10408 '6': '६',
10409 '7': '७',
10410 '8': '८',
10411 '9': '९',
10412 '0': '०'
10413 };
10414 var numberMap$9 = {
10415 '१': '1',
10416 '२': '2',
10417 '३': '3',
10418 '४': '4',
10419 '५': '5',
10420 '६': '6',
10421 '७': '7',
10422 '८': '8',
10423 '९': '9',
10424 '०': '0'
10425 };
10426
10427 hooks.defineLocale('ne', {
10428 months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),
10429 monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),
10430 monthsParseExact : true,
10431 weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),
10432 weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
10433 weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
10434 weekdaysParseExact : true,
10435 longDateFormat : {
10436 LT : 'Aको h:mm बजे',
10437 LTS : 'Aको h:mm:ss बजे',
10438 L : 'DD/MM/YYYY',
10439 LL : 'D MMMM YYYY',
10440 LLL : 'D MMMM YYYY, Aको h:mm बजे',
10441 LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'
10442 },
10443 preparse: function (string) {
10444 return string.replace(/[१२३४५६७८९०]/g, function (match) {
10445 return numberMap$9[match];
10446 });
10447 },
10448 postformat: function (string) {
10449 return string.replace(/\d/g, function (match) {
10450 return symbolMap$10[match];
10451 });
10452 },
10453 meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
10454 meridiemHour : function (hour, meridiem) {
10455 if (hour === 12) {
10456 hour = 0;
10457 }
10458 if (meridiem === 'राति') {
10459 return hour < 4 ? hour : hour + 12;
10460 } else if (meridiem === 'बिहान') {
10461 return hour;
10462 } else if (meridiem === 'दिउँसो') {
10463 return hour >= 10 ? hour : hour + 12;
10464 } else if (meridiem === 'साँझ') {
10465 return hour + 12;
10466 }
10467 },
10468 meridiem : function (hour, minute, isLower) {
10469 if (hour < 3) {
10470 return 'राति';
10471 } else if (hour < 12) {
10472 return 'बिहान';
10473 } else if (hour < 16) {
10474 return 'दिउँसो';
10475 } else if (hour < 20) {
10476 return 'साँझ';
10477 } else {
10478 return 'राति';
10479 }
10480 },
10481 calendar : {
10482 sameDay : '[आज] LT',
10483 nextDay : '[भोलि] LT',
10484 nextWeek : '[आउँदो] dddd[,] LT',
10485 lastDay : '[हिजो] LT',
10486 lastWeek : '[गएको] dddd[,] LT',
10487 sameElse : 'L'
10488 },
10489 relativeTime : {
10490 future : '%sमा',
10491 past : '%s अगाडि',
10492 s : 'केही क्षण',
10493 m : 'एक मिनेट',
10494 mm : '%d मिनेट',
10495 h : 'एक घण्टा',
10496 hh : '%d घण्टा',
10497 d : 'एक दिन',
10498 dd : '%d दिन',
10499 M : 'एक महिना',
10500 MM : '%d महिना',
10501 y : 'एक बर्ष',
10502 yy : '%d बर्ष'
10503 },
10504 week : {
10505 dow : 0, // Sunday is the first day of the week.
10506 doy : 6 // The week that contains Jan 1st is the first week of the year.
10507 }
10508 });
10509
10510 //! moment.js locale configuration
10511 //! locale : Dutch (Belgium) [nl-be]
10512 //! author : Joris Röling : https://github.com/jorisroling
10513 //! author : Jacob Middag : https://github.com/middagj
10514
10515 var monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');
10516 var monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
10517
10518 var 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];
10519 var monthsRegex$1 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
10520
10521 hooks.defineLocale('nl-be', {
10522 months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
10523 monthsShort : function (m, format) {
10524 if (!m) {
10525 return monthsShortWithDots$1;
10526 } else if (/-MMM-/.test(format)) {
10527 return monthsShortWithoutDots$1[m.month()];
10528 } else {
10529 return monthsShortWithDots$1[m.month()];
10530 }
10531 },
10532
10533 monthsRegex: monthsRegex$1,
10534 monthsShortRegex: monthsRegex$1,
10535 monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,
10536 monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
10537
10538 monthsParse : monthsParse,
10539 longMonthsParse : monthsParse,
10540 shortMonthsParse : monthsParse,
10541
10542 weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
10543 weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
10544 weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),
10545 weekdaysParseExact : true,
10546 longDateFormat : {
10547 LT : 'HH:mm',
10548 LTS : 'HH:mm:ss',
10549 L : 'DD/MM/YYYY',
10550 LL : 'D MMMM YYYY',
10551 LLL : 'D MMMM YYYY HH:mm',
10552 LLLL : 'dddd D MMMM YYYY HH:mm'
10553 },
10554 calendar : {
10555 sameDay: '[vandaag om] LT',
10556 nextDay: '[morgen om] LT',
10557 nextWeek: 'dddd [om] LT',
10558 lastDay: '[gisteren om] LT',
10559 lastWeek: '[afgelopen] dddd [om] LT',
10560 sameElse: 'L'
10561 },
10562 relativeTime : {
10563 future : 'over %s',
10564 past : '%s geleden',
10565 s : 'een paar seconden',
10566 m : 'één minuut',
10567 mm : '%d minuten',
10568 h : 'één uur',
10569 hh : '%d uur',
10570 d : 'één dag',
10571 dd : '%d dagen',
10572 M : 'één maand',
10573 MM : '%d maanden',
10574 y : 'één jaar',
10575 yy : '%d jaar'
10576 },
10577 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
10578 ordinal : function (number) {
10579 return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
10580 },
10581 week : {
10582 dow : 1, // Monday is the first day of the week.
10583 doy : 4 // The week that contains Jan 4th is the first week of the year.
10584 }
10585 });
10586
10587 //! moment.js locale configuration
10588 //! locale : Dutch [nl]
10589 //! author : Joris Röling : https://github.com/jorisroling
10590 //! author : Jacob Middag : https://github.com/middagj
10591
10592 var monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');
10593 var monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
10594
10595 var monthsParse$1 = [/^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];
10596 var monthsRegex$2 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
10597
10598 hooks.defineLocale('nl', {
10599 months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
10600 monthsShort : function (m, format) {
10601 if (!m) {
10602 return monthsShortWithDots$2;
10603 } else if (/-MMM-/.test(format)) {
10604 return monthsShortWithoutDots$2[m.month()];
10605 } else {
10606 return monthsShortWithDots$2[m.month()];
10607 }
10608 },
10609
10610 monthsRegex: monthsRegex$2,
10611 monthsShortRegex: monthsRegex$2,
10612 monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,
10613 monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
10614
10615 monthsParse : monthsParse$1,
10616 longMonthsParse : monthsParse$1,
10617 shortMonthsParse : monthsParse$1,
10618
10619 weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
10620 weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
10621 weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),
10622 weekdaysParseExact : true,
10623 longDateFormat : {
10624 LT : 'HH:mm',
10625 LTS : 'HH:mm:ss',
10626 L : 'DD-MM-YYYY',
10627 LL : 'D MMMM YYYY',
10628 LLL : 'D MMMM YYYY HH:mm',
10629 LLLL : 'dddd D MMMM YYYY HH:mm'
10630 },
10631 calendar : {
10632 sameDay: '[vandaag om] LT',
10633 nextDay: '[morgen om] LT',
10634 nextWeek: 'dddd [om] LT',
10635 lastDay: '[gisteren om] LT',
10636 lastWeek: '[afgelopen] dddd [om] LT',
10637 sameElse: 'L'
10638 },
10639 relativeTime : {
10640 future : 'over %s',
10641 past : '%s geleden',
10642 s : 'een paar seconden',
10643 m : 'één minuut',
10644 mm : '%d minuten',
10645 h : 'één uur',
10646 hh : '%d uur',
10647 d : 'één dag',
10648 dd : '%d dagen',
10649 M : 'één maand',
10650 MM : '%d maanden',
10651 y : 'één jaar',
10652 yy : '%d jaar'
10653 },
10654 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
10655 ordinal : function (number) {
10656 return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
10657 },
10658 week : {
10659 dow : 1, // Monday is the first day of the week.
10660 doy : 4 // The week that contains Jan 4th is the first week of the year.
10661 }
10662 });
10663
10664 //! moment.js locale configuration
10665 //! locale : Nynorsk [nn]
10666 //! author : https://github.com/mechuwind
10667
10668 hooks.defineLocale('nn', {
10669 months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
10670 monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
10671 weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
10672 weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),
10673 weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),
10674 longDateFormat : {
10675 LT : 'HH:mm',
10676 LTS : 'HH:mm:ss',
10677 L : 'DD.MM.YYYY',
10678 LL : 'D. MMMM YYYY',
10679 LLL : 'D. MMMM YYYY [kl.] H:mm',
10680 LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
10681 },
10682 calendar : {
10683 sameDay: '[I dag klokka] LT',
10684 nextDay: '[I morgon klokka] LT',
10685 nextWeek: 'dddd [klokka] LT',
10686 lastDay: '[I går klokka] LT',
10687 lastWeek: '[Føregåande] dddd [klokka] LT',
10688 sameElse: 'L'
10689 },
10690 relativeTime : {
10691 future : 'om %s',
10692 past : '%s sidan',
10693 s : 'nokre sekund',
10694 m : 'eit minutt',
10695 mm : '%d minutt',
10696 h : 'ein time',
10697 hh : '%d timar',
10698 d : 'ein dag',
10699 dd : '%d dagar',
10700 M : 'ein månad',
10701 MM : '%d månader',
10702 y : 'eit år',
10703 yy : '%d år'
10704 },
10705 dayOfMonthOrdinalParse: /\d{1,2}\./,
10706 ordinal : '%d.',
10707 week : {
10708 dow : 1, // Monday is the first day of the week.
10709 doy : 4 // The week that contains Jan 4th is the first week of the year.
10710 }
10711 });
10712
10713 //! moment.js locale configuration
10714 //! locale : Punjabi (India) [pa-in]
10715 //! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit
10716
10717 var symbolMap$11 = {
10718 '1': '੧',
10719 '2': '੨',
10720 '3': '੩',
10721 '4': '੪',
10722 '5': '੫',
10723 '6': '੬',
10724 '7': '੭',
10725 '8': '੮',
10726 '9': '੯',
10727 '0': '੦'
10728 };
10729 var numberMap$10 = {
10730 '੧': '1',
10731 '੨': '2',
10732 '੩': '3',
10733 '੪': '4',
10734 '੫': '5',
10735 '੬': '6',
10736 '੭': '7',
10737 '੮': '8',
10738 '੯': '9',
10739 '੦': '0'
10740 };
10741
10742 hooks.defineLocale('pa-in', {
10743 // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi.
10744 months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
10745 monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
10746 weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),
10747 weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
10748 weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
10749 longDateFormat : {
10750 LT : 'A h:mm ਵਜੇ',
10751 LTS : 'A h:mm:ss ਵਜੇ',
10752 L : 'DD/MM/YYYY',
10753 LL : 'D MMMM YYYY',
10754 LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',
10755 LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'
10756 },
10757 calendar : {
10758 sameDay : '[ਅਜ] LT',
10759 nextDay : '[ਕਲ] LT',
10760 nextWeek : 'dddd, LT',
10761 lastDay : '[ਕਲ] LT',
10762 lastWeek : '[ਪਿਛਲੇ] dddd, LT',
10763 sameElse : 'L'
10764 },
10765 relativeTime : {
10766 future : '%s ਵਿੱਚ',
10767 past : '%s ਪਿਛਲੇ',
10768 s : 'ਕੁਝ ਸਕਿੰਟ',
10769 m : 'ਇਕ ਮਿੰਟ',
10770 mm : '%d ਮਿੰਟ',
10771 h : 'ਇੱਕ ਘੰਟਾ',
10772 hh : '%d ਘੰਟੇ',
10773 d : 'ਇੱਕ ਦਿਨ',
10774 dd : '%d ਦਿਨ',
10775 M : 'ਇੱਕ ਮਹੀਨਾ',
10776 MM : '%d ਮਹੀਨੇ',
10777 y : 'ਇੱਕ ਸਾਲ',
10778 yy : '%d ਸਾਲ'
10779 },
10780 preparse: function (string) {
10781 return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
10782 return numberMap$10[match];
10783 });
10784 },
10785 postformat: function (string) {
10786 return string.replace(/\d/g, function (match) {
10787 return symbolMap$11[match];
10788 });
10789 },
10790 // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
10791 // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
10792 meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
10793 meridiemHour : function (hour, meridiem) {
10794 if (hour === 12) {
10795 hour = 0;
10796 }
10797 if (meridiem === 'ਰਾਤ') {
10798 return hour < 4 ? hour : hour + 12;
10799 } else if (meridiem === 'ਸਵੇਰ') {
10800 return hour;
10801 } else if (meridiem === 'ਦੁਪਹਿਰ') {
10802 return hour >= 10 ? hour : hour + 12;
10803 } else if (meridiem === 'ਸ਼ਾਮ') {
10804 return hour + 12;
10805 }
10806 },
10807 meridiem : function (hour, minute, isLower) {
10808 if (hour < 4) {
10809 return 'ਰਾਤ';
10810 } else if (hour < 10) {
10811 return 'ਸਵੇਰ';
10812 } else if (hour < 17) {
10813 return 'ਦੁਪਹਿਰ';
10814 } else if (hour < 20) {
10815 return 'ਸ਼ਾਮ';
10816 } else {
10817 return 'ਰਾਤ';
10818 }
10819 },
10820 week : {
10821 dow : 0, // Sunday is the first day of the week.
10822 doy : 6 // The week that contains Jan 1st is the first week of the year.
10823 }
10824 });
10825
10826 //! moment.js locale configuration
10827 //! locale : Polish [pl]
10828 //! author : Rafal Hirsz : https://github.com/evoL
10829
10830 var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_');
10831 var monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');
10832 function plural$3(n) {
10833 return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);
10834 }
10835 function translate$7(number, withoutSuffix, key) {
10836 var result = number + ' ';
10837 switch (key) {
10838 case 'm':
10839 return withoutSuffix ? 'minuta' : 'minutę';
10840 case 'mm':
10841 return result + (plural$3(number) ? 'minuty' : 'minut');
10842 case 'h':
10843 return withoutSuffix ? 'godzina' : 'godzinę';
10844 case 'hh':
10845 return result + (plural$3(number) ? 'godziny' : 'godzin');
10846 case 'MM':
10847 return result + (plural$3(number) ? 'miesiące' : 'miesięcy');
10848 case 'yy':
10849 return result + (plural$3(number) ? 'lata' : 'lat');
10850 }
10851 }
10852
10853 hooks.defineLocale('pl', {
10854 months : function (momentToFormat, format) {
10855 if (!momentToFormat) {
10856 return monthsNominative;
10857 } else if (format === '') {
10858 // Hack: if format empty we know this is used to generate
10859 // RegExp by moment. Give then back both valid forms of months
10860 // in RegExp ready format.
10861 return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';
10862 } else if (/D MMMM/.test(format)) {
10863 return monthsSubjective[momentToFormat.month()];
10864 } else {
10865 return monthsNominative[momentToFormat.month()];
10866 }
10867 },
10868 monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
10869 weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
10870 weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
10871 weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
10872 longDateFormat : {
10873 LT : 'HH:mm',
10874 LTS : 'HH:mm:ss',
10875 L : 'DD.MM.YYYY',
10876 LL : 'D MMMM YYYY',
10877 LLL : 'D MMMM YYYY HH:mm',
10878 LLLL : 'dddd, D MMMM YYYY HH:mm'
10879 },
10880 calendar : {
10881 sameDay: '[Dziś o] LT',
10882 nextDay: '[Jutro o] LT',
10883 nextWeek: '[W] dddd [o] LT',
10884 lastDay: '[Wczoraj o] LT',
10885 lastWeek: function () {
10886 switch (this.day()) {
10887 case 0:
10888 return '[W zeszłą niedzielę o] LT';
10889 case 3:
10890 return '[W zeszłą środę o] LT';
10891 case 6:
10892 return '[W zeszłą sobotę o] LT';
10893 default:
10894 return '[W zeszły] dddd [o] LT';
10895 }
10896 },
10897 sameElse: 'L'
10898 },
10899 relativeTime : {
10900 future : 'za %s',
10901 past : '%s temu',
10902 s : 'kilka sekund',
10903 m : translate$7,
10904 mm : translate$7,
10905 h : translate$7,
10906 hh : translate$7,
10907 d : '1 dzień',
10908 dd : '%d dni',
10909 M : 'miesiąc',
10910 MM : translate$7,
10911 y : 'rok',
10912 yy : translate$7
10913 },
10914 dayOfMonthOrdinalParse: /\d{1,2}\./,
10915 ordinal : '%d.',
10916 week : {
10917 dow : 1, // Monday is the first day of the week.
10918 doy : 4 // The week that contains Jan 4th is the first week of the year.
10919 }
10920 });
10921
10922 //! moment.js locale configuration
10923 //! locale : Portuguese (Brazil) [pt-br]
10924 //! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
10925
10926 hooks.defineLocale('pt-br', {
10927 months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
10928 monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
10929 weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
10930 weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
10931 weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
10932 weekdaysParseExact : true,
10933 longDateFormat : {
10934 LT : 'HH:mm',
10935 LTS : 'HH:mm:ss',
10936 L : 'DD/MM/YYYY',
10937 LL : 'D [de] MMMM [de] YYYY',
10938 LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',
10939 LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
10940 },
10941 calendar : {
10942 sameDay: '[Hoje às] LT',
10943 nextDay: '[Amanhã às] LT',
10944 nextWeek: 'dddd [às] LT',
10945 lastDay: '[Ontem às] LT',
10946 lastWeek: function () {
10947 return (this.day() === 0 || this.day() === 6) ?
10948 '[Último] dddd [às] LT' : // Saturday + Sunday
10949 '[Última] dddd [às] LT'; // Monday - Friday
10950 },
10951 sameElse: 'L'
10952 },
10953 relativeTime : {
10954 future : 'em %s',
10955 past : '%s atrás',
10956 s : 'poucos segundos',
10957 m : 'um minuto',
10958 mm : '%d minutos',
10959 h : 'uma hora',
10960 hh : '%d horas',
10961 d : 'um dia',
10962 dd : '%d dias',
10963 M : 'um mês',
10964 MM : '%d meses',
10965 y : 'um ano',
10966 yy : '%d anos'
10967 },
10968 dayOfMonthOrdinalParse: /\d{1,2}º/,
10969 ordinal : '%dº'
10970 });
10971
10972 //! moment.js locale configuration
10973 //! locale : Portuguese [pt]
10974 //! author : Jefferson : https://github.com/jalex79
10975
10976 hooks.defineLocale('pt', {
10977 months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
10978 monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
10979 weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'),
10980 weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
10981 weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
10982 weekdaysParseExact : true,
10983 longDateFormat : {
10984 LT : 'HH:mm',
10985 LTS : 'HH:mm:ss',
10986 L : 'DD/MM/YYYY',
10987 LL : 'D [de] MMMM [de] YYYY',
10988 LLL : 'D [de] MMMM [de] YYYY HH:mm',
10989 LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'
10990 },
10991 calendar : {
10992 sameDay: '[Hoje às] LT',
10993 nextDay: '[Amanhã às] LT',
10994 nextWeek: 'dddd [às] LT',
10995 lastDay: '[Ontem às] LT',
10996 lastWeek: function () {
10997 return (this.day() === 0 || this.day() === 6) ?
10998 '[Último] dddd [às] LT' : // Saturday + Sunday
10999 '[Última] dddd [às] LT'; // Monday - Friday
11000 },
11001 sameElse: 'L'
11002 },
11003 relativeTime : {
11004 future : 'em %s',
11005 past : 'há %s',
11006 s : 'segundos',
11007 m : 'um minuto',
11008 mm : '%d minutos',
11009 h : 'uma hora',
11010 hh : '%d horas',
11011 d : 'um dia',
11012 dd : '%d dias',
11013 M : 'um mês',
11014 MM : '%d meses',
11015 y : 'um ano',
11016 yy : '%d anos'
11017 },
11018 dayOfMonthOrdinalParse: /\d{1,2}º/,
11019 ordinal : '%dº',
11020 week : {
11021 dow : 1, // Monday is the first day of the week.
11022 doy : 4 // The week that contains Jan 4th is the first week of the year.
11023 }
11024 });
11025
11026 //! moment.js locale configuration
11027 //! locale : Romanian [ro]
11028 //! author : Vlad Gurdiga : https://github.com/gurdiga
11029 //! author : Valentin Agachi : https://github.com/avaly
11030
11031 function relativeTimeWithPlural$2(number, withoutSuffix, key) {
11032 var format = {
11033 'mm': 'minute',
11034 'hh': 'ore',
11035 'dd': 'zile',
11036 'MM': 'luni',
11037 'yy': 'ani'
11038 },
11039 separator = ' ';
11040 if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
11041 separator = ' de ';
11042 }
11043 return number + separator + format[key];
11044 }
11045
11046 hooks.defineLocale('ro', {
11047 months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),
11048 monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),
11049 monthsParseExact: true,
11050 weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
11051 weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
11052 weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
11053 longDateFormat : {
11054 LT : 'H:mm',
11055 LTS : 'H:mm:ss',
11056 L : 'DD.MM.YYYY',
11057 LL : 'D MMMM YYYY',
11058 LLL : 'D MMMM YYYY H:mm',
11059 LLLL : 'dddd, D MMMM YYYY H:mm'
11060 },
11061 calendar : {
11062 sameDay: '[azi la] LT',
11063 nextDay: '[mâine la] LT',
11064 nextWeek: 'dddd [la] LT',
11065 lastDay: '[ieri la] LT',
11066 lastWeek: '[fosta] dddd [la] LT',
11067 sameElse: 'L'
11068 },
11069 relativeTime : {
11070 future : 'peste %s',
11071 past : '%s în urmă',
11072 s : 'câteva secunde',
11073 m : 'un minut',
11074 mm : relativeTimeWithPlural$2,
11075 h : 'o oră',
11076 hh : relativeTimeWithPlural$2,
11077 d : 'o zi',
11078 dd : relativeTimeWithPlural$2,
11079 M : 'o lună',
11080 MM : relativeTimeWithPlural$2,
11081 y : 'un an',
11082 yy : relativeTimeWithPlural$2
11083 },
11084 week : {
11085 dow : 1, // Monday is the first day of the week.
11086 doy : 7 // The week that contains Jan 1st is the first week of the year.
11087 }
11088 });
11089
11090 //! moment.js locale configuration
11091 //! locale : Russian [ru]
11092 //! author : Viktorminator : https://github.com/Viktorminator
11093 //! Author : Menelion Elensúle : https://github.com/Oire
11094 //! author : Коренберг Марк : https://github.com/socketpair
11095
11096 function plural$4(word, num) {
11097 var forms = word.split('_');
11098 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]);
11099 }
11100 function relativeTimeWithPlural$3(number, withoutSuffix, key) {
11101 var format = {
11102 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
11103 'hh': 'час_часа_часов',
11104 'dd': 'день_дня_дней',
11105 'MM': 'месяц_месяца_месяцев',
11106 'yy': 'год_года_лет'
11107 };
11108 if (key === 'm') {
11109 return withoutSuffix ? 'минута' : 'минуту';
11110 }
11111 else {
11112 return number + ' ' + plural$4(format[key], +number);
11113 }
11114 }
11115 var monthsParse$2 = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];
11116
11117 // http://new.gramota.ru/spravka/rules/139-prop : § 103
11118 // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
11119 // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
11120 hooks.defineLocale('ru', {
11121 months : {
11122 format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),
11123 standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')
11124 },
11125 monthsShort : {
11126 // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ?
11127 format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),
11128 standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')
11129 },
11130 weekdays : {
11131 standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),
11132 format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),
11133 isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/
11134 },
11135 weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
11136 weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
11137 monthsParse : monthsParse$2,
11138 longMonthsParse : monthsParse$2,
11139 shortMonthsParse : monthsParse$2,
11140
11141 // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
11142 monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
11143
11144 // копия предыдущего
11145 monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
11146
11147 // полные названия с падежами
11148 monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
11149
11150 // Выражение, которое соотвествует только сокращённым формам
11151 monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
11152 longDateFormat : {
11153 LT : 'HH:mm',
11154 LTS : 'HH:mm:ss',
11155 L : 'DD.MM.YYYY',
11156 LL : 'D MMMM YYYY г.',
11157 LLL : 'D MMMM YYYY г., HH:mm',
11158 LLLL : 'dddd, D MMMM YYYY г., HH:mm'
11159 },
11160 calendar : {
11161 sameDay: '[Сегодня в] LT',
11162 nextDay: '[Завтра в] LT',
11163 lastDay: '[Вчера в] LT',
11164 nextWeek: function (now) {
11165 if (now.week() !== this.week()) {
11166 switch (this.day()) {
11167 case 0:
11168 return '[В следующее] dddd [в] LT';
11169 case 1:
11170 case 2:
11171 case 4:
11172 return '[В следующий] dddd [в] LT';
11173 case 3:
11174 case 5:
11175 case 6:
11176 return '[В следующую] dddd [в] LT';
11177 }
11178 } else {
11179 if (this.day() === 2) {
11180 return '[Во] dddd [в] LT';
11181 } else {
11182 return '[В] dddd [в] LT';
11183 }
11184 }
11185 },
11186 lastWeek: function (now) {
11187 if (now.week() !== this.week()) {
11188 switch (this.day()) {
11189 case 0:
11190 return '[В прошлое] dddd [в] LT';
11191 case 1:
11192 case 2:
11193 case 4:
11194 return '[В прошлый] dddd [в] LT';
11195 case 3:
11196 case 5:
11197 case 6:
11198 return '[В прошлую] dddd [в] LT';
11199 }
11200 } else {
11201 if (this.day() === 2) {
11202 return '[Во] dddd [в] LT';
11203 } else {
11204 return '[В] dddd [в] LT';
11205 }
11206 }
11207 },
11208 sameElse: 'L'
11209 },
11210 relativeTime : {
11211 future : 'через %s',
11212 past : '%s назад',
11213 s : 'несколько секунд',
11214 m : relativeTimeWithPlural$3,
11215 mm : relativeTimeWithPlural$3,
11216 h : 'час',
11217 hh : relativeTimeWithPlural$3,
11218 d : 'день',
11219 dd : relativeTimeWithPlural$3,
11220 M : 'месяц',
11221 MM : relativeTimeWithPlural$3,
11222 y : 'год',
11223 yy : relativeTimeWithPlural$3
11224 },
11225 meridiemParse: /ночи|утра|дня|вечера/i,
11226 isPM : function (input) {
11227 return /^(дня|вечера)$/.test(input);
11228 },
11229 meridiem : function (hour, minute, isLower) {
11230 if (hour < 4) {
11231 return 'ночи';
11232 } else if (hour < 12) {
11233 return 'утра';
11234 } else if (hour < 17) {
11235 return 'дня';
11236 } else {
11237 return 'вечера';
11238 }
11239 },
11240 dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
11241 ordinal: function (number, period) {
11242 switch (period) {
11243 case 'M':
11244 case 'd':
11245 case 'DDD':
11246 return number + '-й';
11247 case 'D':
11248 return number + '-го';
11249 case 'w':
11250 case 'W':
11251 return number + '-я';
11252 default:
11253 return number;
11254 }
11255 },
11256 week : {
11257 dow : 1, // Monday is the first day of the week.
11258 doy : 7 // The week that contains Jan 1st is the first week of the year.
11259 }
11260 });
11261
11262 //! moment.js locale configuration
11263 //! locale : Sindhi [sd]
11264 //! author : Narain Sagar : https://github.com/narainsagar
11265
11266 var months$6 = [
11267 'جنوري',
11268 'فيبروري',
11269 'مارچ',
11270 'اپريل',
11271 'مئي',
11272 'جون',
11273 'جولاءِ',
11274 'آگسٽ',
11275 'سيپٽمبر',
11276 'آڪٽوبر',
11277 'نومبر',
11278 'ڊسمبر'
11279 ];
11280 var days$1 = [
11281 'آچر',
11282 'سومر',
11283 'اڱارو',
11284 'اربع',
11285 'خميس',
11286 'جمع',
11287 'ڇنڇر'
11288 ];
11289
11290 hooks.defineLocale('sd', {
11291 months : months$6,
11292 monthsShort : months$6,
11293 weekdays : days$1,
11294 weekdaysShort : days$1,
11295 weekdaysMin : days$1,
11296 longDateFormat : {
11297 LT : 'HH:mm',
11298 LTS : 'HH:mm:ss',
11299 L : 'DD/MM/YYYY',
11300 LL : 'D MMMM YYYY',
11301 LLL : 'D MMMM YYYY HH:mm',
11302 LLLL : 'dddd، D MMMM YYYY HH:mm'
11303 },
11304 meridiemParse: /صبح|شام/,
11305 isPM : function (input) {
11306 return 'شام' === input;
11307 },
11308 meridiem : function (hour, minute, isLower) {
11309 if (hour < 12) {
11310 return 'صبح';
11311 }
11312 return 'شام';
11313 },
11314 calendar : {
11315 sameDay : '[اڄ] LT',
11316 nextDay : '[سڀاڻي] LT',
11317 nextWeek : 'dddd [اڳين هفتي تي] LT',
11318 lastDay : '[ڪالهه] LT',
11319 lastWeek : '[گزريل هفتي] dddd [تي] LT',
11320 sameElse : 'L'
11321 },
11322 relativeTime : {
11323 future : '%s پوء',
11324 past : '%s اڳ',
11325 s : 'چند سيڪنڊ',
11326 m : 'هڪ منٽ',
11327 mm : '%d منٽ',
11328 h : 'هڪ ڪلاڪ',
11329 hh : '%d ڪلاڪ',
11330 d : 'هڪ ڏينهن',
11331 dd : '%d ڏينهن',
11332 M : 'هڪ مهينو',
11333 MM : '%d مهينا',
11334 y : 'هڪ سال',
11335 yy : '%d سال'
11336 },
11337 preparse: function (string) {
11338 return string.replace(/،/g, ',');
11339 },
11340 postformat: function (string) {
11341 return string.replace(/,/g, '،');
11342 },
11343 week : {
11344 dow : 1, // Monday is the first day of the week.
11345 doy : 4 // The week that contains Jan 4th is the first week of the year.
11346 }
11347 });
11348
11349 //! moment.js locale configuration
11350 //! locale : Northern Sami [se]
11351 //! authors : Bård Rolstad Henriksen : https://github.com/karamell
11352
11353
11354 hooks.defineLocale('se', {
11355 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('_'),
11356 monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
11357 weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),
11358 weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
11359 weekdaysMin : 's_v_m_g_d_b_L'.split('_'),
11360 longDateFormat : {
11361 LT : 'HH:mm',
11362 LTS : 'HH:mm:ss',
11363 L : 'DD.MM.YYYY',
11364 LL : 'MMMM D. [b.] YYYY',
11365 LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',
11366 LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'
11367 },
11368 calendar : {
11369 sameDay: '[otne ti] LT',
11370 nextDay: '[ihttin ti] LT',
11371 nextWeek: 'dddd [ti] LT',
11372 lastDay: '[ikte ti] LT',
11373 lastWeek: '[ovddit] dddd [ti] LT',
11374 sameElse: 'L'
11375 },
11376 relativeTime : {
11377 future : '%s geažes',
11378 past : 'maŋit %s',
11379 s : 'moadde sekunddat',
11380 m : 'okta minuhta',
11381 mm : '%d minuhtat',
11382 h : 'okta diimmu',
11383 hh : '%d diimmut',
11384 d : 'okta beaivi',
11385 dd : '%d beaivvit',
11386 M : 'okta mánnu',
11387 MM : '%d mánut',
11388 y : 'okta jahki',
11389 yy : '%d jagit'
11390 },
11391 dayOfMonthOrdinalParse: /\d{1,2}\./,
11392 ordinal : '%d.',
11393 week : {
11394 dow : 1, // Monday is the first day of the week.
11395 doy : 4 // The week that contains Jan 4th is the first week of the year.
11396 }
11397 });
11398
11399 //! moment.js locale configuration
11400 //! locale : Sinhalese [si]
11401 //! author : Sampath Sitinamaluwa : https://github.com/sampathsris
11402
11403 /*jshint -W100*/
11404 hooks.defineLocale('si', {
11405 months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),
11406 monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),
11407 weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),
11408 weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
11409 weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
11410 weekdaysParseExact : true,
11411 longDateFormat : {
11412 LT : 'a h:mm',
11413 LTS : 'a h:mm:ss',
11414 L : 'YYYY/MM/DD',
11415 LL : 'YYYY MMMM D',
11416 LLL : 'YYYY MMMM D, a h:mm',
11417 LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'
11418 },
11419 calendar : {
11420 sameDay : '[අද] LT[ට]',
11421 nextDay : '[හෙට] LT[ට]',
11422 nextWeek : 'dddd LT[ට]',
11423 lastDay : '[ඊයේ] LT[ට]',
11424 lastWeek : '[පසුගිය] dddd LT[ට]',
11425 sameElse : 'L'
11426 },
11427 relativeTime : {
11428 future : '%sකින්',
11429 past : '%sකට පෙර',
11430 s : 'තත්පර කිහිපය',
11431 m : 'මිනිත්තුව',
11432 mm : 'මිනිත්තු %d',
11433 h : 'පැය',
11434 hh : 'පැය %d',
11435 d : 'දිනය',
11436 dd : 'දින %d',
11437 M : 'මාසය',
11438 MM : 'මාස %d',
11439 y : 'වසර',
11440 yy : 'වසර %d'
11441 },
11442 dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
11443 ordinal : function (number) {
11444 return number + ' වැනි';
11445 },
11446 meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
11447 isPM : function (input) {
11448 return input === 'ප.ව.' || input === 'පස් වරු';
11449 },
11450 meridiem : function (hours, minutes, isLower) {
11451 if (hours > 11) {
11452 return isLower ? 'ප.ව.' : 'පස් වරු';
11453 } else {
11454 return isLower ? 'පෙ.ව.' : 'පෙර වරු';
11455 }
11456 }
11457 });
11458
11459 //! moment.js locale configuration
11460 //! locale : Slovak [sk]
11461 //! author : Martin Minka : https://github.com/k2s
11462 //! based on work of petrbela : https://github.com/petrbela
11463
11464 var months$7 = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_');
11465 var monthsShort$4 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
11466 function plural$5(n) {
11467 return (n > 1) && (n < 5);
11468 }
11469 function translate$8(number, withoutSuffix, key, isFuture) {
11470 var result = number + ' ';
11471 switch (key) {
11472 case 's': // a few seconds / in a few seconds / a few seconds ago
11473 return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';
11474 case 'm': // a minute / in a minute / a minute ago
11475 return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');
11476 case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
11477 if (withoutSuffix || isFuture) {
11478 return result + (plural$5(number) ? 'minúty' : 'minút');
11479 } else {
11480 return result + 'minútami';
11481 }
11482 break;
11483 case 'h': // an hour / in an hour / an hour ago
11484 return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
11485 case 'hh': // 9 hours / in 9 hours / 9 hours ago
11486 if (withoutSuffix || isFuture) {
11487 return result + (plural$5(number) ? 'hodiny' : 'hodín');
11488 } else {
11489 return result + 'hodinami';
11490 }
11491 break;
11492 case 'd': // a day / in a day / a day ago
11493 return (withoutSuffix || isFuture) ? 'deň' : 'dňom';
11494 case 'dd': // 9 days / in 9 days / 9 days ago
11495 if (withoutSuffix || isFuture) {
11496 return result + (plural$5(number) ? 'dni' : 'dní');
11497 } else {
11498 return result + 'dňami';
11499 }
11500 break;
11501 case 'M': // a month / in a month / a month ago
11502 return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';
11503 case 'MM': // 9 months / in 9 months / 9 months ago
11504 if (withoutSuffix || isFuture) {
11505 return result + (plural$5(number) ? 'mesiace' : 'mesiacov');
11506 } else {
11507 return result + 'mesiacmi';
11508 }
11509 break;
11510 case 'y': // a year / in a year / a year ago
11511 return (withoutSuffix || isFuture) ? 'rok' : 'rokom';
11512 case 'yy': // 9 years / in 9 years / 9 years ago
11513 if (withoutSuffix || isFuture) {
11514 return result + (plural$5(number) ? 'roky' : 'rokov');
11515 } else {
11516 return result + 'rokmi';
11517 }
11518 break;
11519 }
11520 }
11521
11522 hooks.defineLocale('sk', {
11523 months : months$7,
11524 monthsShort : monthsShort$4,
11525 weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
11526 weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),
11527 weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),
11528 longDateFormat : {
11529 LT: 'H:mm',
11530 LTS : 'H:mm:ss',
11531 L : 'DD.MM.YYYY',
11532 LL : 'D. MMMM YYYY',
11533 LLL : 'D. MMMM YYYY H:mm',
11534 LLLL : 'dddd D. MMMM YYYY H:mm'
11535 },
11536 calendar : {
11537 sameDay: '[dnes o] LT',
11538 nextDay: '[zajtra o] LT',
11539 nextWeek: function () {
11540 switch (this.day()) {
11541 case 0:
11542 return '[v nedeľu o] LT';
11543 case 1:
11544 case 2:
11545 return '[v] dddd [o] LT';
11546 case 3:
11547 return '[v stredu o] LT';
11548 case 4:
11549 return '[vo štvrtok o] LT';
11550 case 5:
11551 return '[v piatok o] LT';
11552 case 6:
11553 return '[v sobotu o] LT';
11554 }
11555 },
11556 lastDay: '[včera o] LT',
11557 lastWeek: function () {
11558 switch (this.day()) {
11559 case 0:
11560 return '[minulú nedeľu o] LT';
11561 case 1:
11562 case 2:
11563 return '[minulý] dddd [o] LT';
11564 case 3:
11565 return '[minulú stredu o] LT';
11566 case 4:
11567 case 5:
11568 return '[minulý] dddd [o] LT';
11569 case 6:
11570 return '[minulú sobotu o] LT';
11571 }
11572 },
11573 sameElse: 'L'
11574 },
11575 relativeTime : {
11576 future : 'za %s',
11577 past : 'pred %s',
11578 s : translate$8,
11579 m : translate$8,
11580 mm : translate$8,
11581 h : translate$8,
11582 hh : translate$8,
11583 d : translate$8,
11584 dd : translate$8,
11585 M : translate$8,
11586 MM : translate$8,
11587 y : translate$8,
11588 yy : translate$8
11589 },
11590 dayOfMonthOrdinalParse: /\d{1,2}\./,
11591 ordinal : '%d.',
11592 week : {
11593 dow : 1, // Monday is the first day of the week.
11594 doy : 4 // The week that contains Jan 4th is the first week of the year.
11595 }
11596 });
11597
11598 //! moment.js locale configuration
11599 //! locale : Slovenian [sl]
11600 //! author : Robert Sedovšek : https://github.com/sedovsek
11601
11602 function processRelativeTime$6(number, withoutSuffix, key, isFuture) {
11603 var result = number + ' ';
11604 switch (key) {
11605 case 's':
11606 return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';
11607 case 'm':
11608 return withoutSuffix ? 'ena minuta' : 'eno minuto';
11609 case 'mm':
11610 if (number === 1) {
11611 result += withoutSuffix ? 'minuta' : 'minuto';
11612 } else if (number === 2) {
11613 result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
11614 } else if (number < 5) {
11615 result += withoutSuffix || isFuture ? 'minute' : 'minutami';
11616 } else {
11617 result += withoutSuffix || isFuture ? 'minut' : 'minutami';
11618 }
11619 return result;
11620 case 'h':
11621 return withoutSuffix ? 'ena ura' : 'eno uro';
11622 case 'hh':
11623 if (number === 1) {
11624 result += withoutSuffix ? 'ura' : 'uro';
11625 } else if (number === 2) {
11626 result += withoutSuffix || isFuture ? 'uri' : 'urama';
11627 } else if (number < 5) {
11628 result += withoutSuffix || isFuture ? 'ure' : 'urami';
11629 } else {
11630 result += withoutSuffix || isFuture ? 'ur' : 'urami';
11631 }
11632 return result;
11633 case 'd':
11634 return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
11635 case 'dd':
11636 if (number === 1) {
11637 result += withoutSuffix || isFuture ? 'dan' : 'dnem';
11638 } else if (number === 2) {
11639 result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
11640 } else {
11641 result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
11642 }
11643 return result;
11644 case 'M':
11645 return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
11646 case 'MM':
11647 if (number === 1) {
11648 result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
11649 } else if (number === 2) {
11650 result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
11651 } else if (number < 5) {
11652 result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
11653 } else {
11654 result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
11655 }
11656 return result;
11657 case 'y':
11658 return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
11659 case 'yy':
11660 if (number === 1) {
11661 result += withoutSuffix || isFuture ? 'leto' : 'letom';
11662 } else if (number === 2) {
11663 result += withoutSuffix || isFuture ? 'leti' : 'letoma';
11664 } else if (number < 5) {
11665 result += withoutSuffix || isFuture ? 'leta' : 'leti';
11666 } else {
11667 result += withoutSuffix || isFuture ? 'let' : 'leti';
11668 }
11669 return result;
11670 }
11671 }
11672
11673 hooks.defineLocale('sl', {
11674 months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),
11675 monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),
11676 monthsParseExact: true,
11677 weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
11678 weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
11679 weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),
11680 weekdaysParseExact : true,
11681 longDateFormat : {
11682 LT : 'H:mm',
11683 LTS : 'H:mm:ss',
11684 L : 'DD.MM.YYYY',
11685 LL : 'D. MMMM YYYY',
11686 LLL : 'D. MMMM YYYY H:mm',
11687 LLLL : 'dddd, D. MMMM YYYY H:mm'
11688 },
11689 calendar : {
11690 sameDay : '[danes ob] LT',
11691 nextDay : '[jutri ob] LT',
11692
11693 nextWeek : function () {
11694 switch (this.day()) {
11695 case 0:
11696 return '[v] [nedeljo] [ob] LT';
11697 case 3:
11698 return '[v] [sredo] [ob] LT';
11699 case 6:
11700 return '[v] [soboto] [ob] LT';
11701 case 1:
11702 case 2:
11703 case 4:
11704 case 5:
11705 return '[v] dddd [ob] LT';
11706 }
11707 },
11708 lastDay : '[včeraj ob] LT',
11709 lastWeek : function () {
11710 switch (this.day()) {
11711 case 0:
11712 return '[prejšnjo] [nedeljo] [ob] LT';
11713 case 3:
11714 return '[prejšnjo] [sredo] [ob] LT';
11715 case 6:
11716 return '[prejšnjo] [soboto] [ob] LT';
11717 case 1:
11718 case 2:
11719 case 4:
11720 case 5:
11721 return '[prejšnji] dddd [ob] LT';
11722 }
11723 },
11724 sameElse : 'L'
11725 },
11726 relativeTime : {
11727 future : 'čez %s',
11728 past : 'pred %s',
11729 s : processRelativeTime$6,
11730 m : processRelativeTime$6,
11731 mm : processRelativeTime$6,
11732 h : processRelativeTime$6,
11733 hh : processRelativeTime$6,
11734 d : processRelativeTime$6,
11735 dd : processRelativeTime$6,
11736 M : processRelativeTime$6,
11737 MM : processRelativeTime$6,
11738 y : processRelativeTime$6,
11739 yy : processRelativeTime$6
11740 },
11741 dayOfMonthOrdinalParse: /\d{1,2}\./,
11742 ordinal : '%d.',
11743 week : {
11744 dow : 1, // Monday is the first day of the week.
11745 doy : 7 // The week that contains Jan 1st is the first week of the year.
11746 }
11747 });
11748
11749 //! moment.js locale configuration
11750 //! locale : Albanian [sq]
11751 //! author : Flakërim Ismani : https://github.com/flakerimi
11752 //! author : Menelion Elensúle : https://github.com/Oire
11753 //! author : Oerd Cukalla : https://github.com/oerd
11754
11755 hooks.defineLocale('sq', {
11756 months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),
11757 monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
11758 weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),
11759 weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
11760 weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),
11761 weekdaysParseExact : true,
11762 meridiemParse: /PD|MD/,
11763 isPM: function (input) {
11764 return input.charAt(0) === 'M';
11765 },
11766 meridiem : function (hours, minutes, isLower) {
11767 return hours < 12 ? 'PD' : 'MD';
11768 },
11769 longDateFormat : {
11770 LT : 'HH:mm',
11771 LTS : 'HH:mm:ss',
11772 L : 'DD/MM/YYYY',
11773 LL : 'D MMMM YYYY',
11774 LLL : 'D MMMM YYYY HH:mm',
11775 LLLL : 'dddd, D MMMM YYYY HH:mm'
11776 },
11777 calendar : {
11778 sameDay : '[Sot në] LT',
11779 nextDay : '[Nesër në] LT',
11780 nextWeek : 'dddd [në] LT',
11781 lastDay : '[Dje në] LT',
11782 lastWeek : 'dddd [e kaluar në] LT',
11783 sameElse : 'L'
11784 },
11785 relativeTime : {
11786 future : 'në %s',
11787 past : '%s më parë',
11788 s : 'disa sekonda',
11789 m : 'një minutë',
11790 mm : '%d minuta',
11791 h : 'një orë',
11792 hh : '%d orë',
11793 d : 'një ditë',
11794 dd : '%d ditë',
11795 M : 'një muaj',
11796 MM : '%d muaj',
11797 y : 'një vit',
11798 yy : '%d vite'
11799 },
11800 dayOfMonthOrdinalParse: /\d{1,2}\./,
11801 ordinal : '%d.',
11802 week : {
11803 dow : 1, // Monday is the first day of the week.
11804 doy : 4 // The week that contains Jan 4th is the first week of the year.
11805 }
11806 });
11807
11808 //! moment.js locale configuration
11809 //! locale : Serbian Cyrillic [sr-cyrl]
11810 //! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
11811
11812 var translator$1 = {
11813 words: { //Different grammatical cases
11814 m: ['један минут', 'једне минуте'],
11815 mm: ['минут', 'минуте', 'минута'],
11816 h: ['један сат', 'једног сата'],
11817 hh: ['сат', 'сата', 'сати'],
11818 dd: ['дан', 'дана', 'дана'],
11819 MM: ['месец', 'месеца', 'месеци'],
11820 yy: ['година', 'године', 'година']
11821 },
11822 correctGrammaticalCase: function (number, wordKey) {
11823 return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
11824 },
11825 translate: function (number, withoutSuffix, key) {
11826 var wordKey = translator$1.words[key];
11827 if (key.length === 1) {
11828 return withoutSuffix ? wordKey[0] : wordKey[1];
11829 } else {
11830 return number + ' ' + translator$1.correctGrammaticalCase(number, wordKey);
11831 }
11832 }
11833 };
11834
11835 hooks.defineLocale('sr-cyrl', {
11836 months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),
11837 monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
11838 monthsParseExact: true,
11839 weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
11840 weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
11841 weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
11842 weekdaysParseExact : true,
11843 longDateFormat: {
11844 LT: 'H:mm',
11845 LTS : 'H:mm:ss',
11846 L: 'DD.MM.YYYY',
11847 LL: 'D. MMMM YYYY',
11848 LLL: 'D. MMMM YYYY H:mm',
11849 LLLL: 'dddd, D. MMMM YYYY H:mm'
11850 },
11851 calendar: {
11852 sameDay: '[данас у] LT',
11853 nextDay: '[сутра у] LT',
11854 nextWeek: function () {
11855 switch (this.day()) {
11856 case 0:
11857 return '[у] [недељу] [у] LT';
11858 case 3:
11859 return '[у] [среду] [у] LT';
11860 case 6:
11861 return '[у] [суботу] [у] LT';
11862 case 1:
11863 case 2:
11864 case 4:
11865 case 5:
11866 return '[у] dddd [у] LT';
11867 }
11868 },
11869 lastDay : '[јуче у] LT',
11870 lastWeek : function () {
11871 var lastWeekDays = [
11872 '[прошле] [недеље] [у] LT',
11873 '[прошлог] [понедељка] [у] LT',
11874 '[прошлог] [уторка] [у] LT',
11875 '[прошле] [среде] [у] LT',
11876 '[прошлог] [четвртка] [у] LT',
11877 '[прошлог] [петка] [у] LT',
11878 '[прошле] [суботе] [у] LT'
11879 ];
11880 return lastWeekDays[this.day()];
11881 },
11882 sameElse : 'L'
11883 },
11884 relativeTime : {
11885 future : 'за %s',
11886 past : 'пре %s',
11887 s : 'неколико секунди',
11888 m : translator$1.translate,
11889 mm : translator$1.translate,
11890 h : translator$1.translate,
11891 hh : translator$1.translate,
11892 d : 'дан',
11893 dd : translator$1.translate,
11894 M : 'месец',
11895 MM : translator$1.translate,
11896 y : 'годину',
11897 yy : translator$1.translate
11898 },
11899 dayOfMonthOrdinalParse: /\d{1,2}\./,
11900 ordinal : '%d.',
11901 week : {
11902 dow : 1, // Monday is the first day of the week.
11903 doy : 7 // The week that contains Jan 1st is the first week of the year.
11904 }
11905 });
11906
11907 //! moment.js locale configuration
11908 //! locale : Serbian [sr]
11909 //! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
11910
11911 var translator$2 = {
11912 words: { //Different grammatical cases
11913 m: ['jedan minut', 'jedne minute'],
11914 mm: ['minut', 'minute', 'minuta'],
11915 h: ['jedan sat', 'jednog sata'],
11916 hh: ['sat', 'sata', 'sati'],
11917 dd: ['dan', 'dana', 'dana'],
11918 MM: ['mesec', 'meseca', 'meseci'],
11919 yy: ['godina', 'godine', 'godina']
11920 },
11921 correctGrammaticalCase: function (number, wordKey) {
11922 return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
11923 },
11924 translate: function (number, withoutSuffix, key) {
11925 var wordKey = translator$2.words[key];
11926 if (key.length === 1) {
11927 return withoutSuffix ? wordKey[0] : wordKey[1];
11928 } else {
11929 return number + ' ' + translator$2.correctGrammaticalCase(number, wordKey);
11930 }
11931 }
11932 };
11933
11934 hooks.defineLocale('sr', {
11935 months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
11936 monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
11937 monthsParseExact: true,
11938 weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),
11939 weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
11940 weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
11941 weekdaysParseExact : true,
11942 longDateFormat: {
11943 LT: 'H:mm',
11944 LTS : 'H:mm:ss',
11945 L: 'DD.MM.YYYY',
11946 LL: 'D. MMMM YYYY',
11947 LLL: 'D. MMMM YYYY H:mm',
11948 LLLL: 'dddd, D. MMMM YYYY H:mm'
11949 },
11950 calendar: {
11951 sameDay: '[danas u] LT',
11952 nextDay: '[sutra u] LT',
11953 nextWeek: function () {
11954 switch (this.day()) {
11955 case 0:
11956 return '[u] [nedelju] [u] LT';
11957 case 3:
11958 return '[u] [sredu] [u] LT';
11959 case 6:
11960 return '[u] [subotu] [u] LT';
11961 case 1:
11962 case 2:
11963 case 4:
11964 case 5:
11965 return '[u] dddd [u] LT';
11966 }
11967 },
11968 lastDay : '[juče u] LT',
11969 lastWeek : function () {
11970 var lastWeekDays = [
11971 '[prošle] [nedelje] [u] LT',
11972 '[prošlog] [ponedeljka] [u] LT',
11973 '[prošlog] [utorka] [u] LT',
11974 '[prošle] [srede] [u] LT',
11975 '[prošlog] [četvrtka] [u] LT',
11976 '[prošlog] [petka] [u] LT',
11977 '[prošle] [subote] [u] LT'
11978 ];
11979 return lastWeekDays[this.day()];
11980 },
11981 sameElse : 'L'
11982 },
11983 relativeTime : {
11984 future : 'za %s',
11985 past : 'pre %s',
11986 s : 'nekoliko sekundi',
11987 m : translator$2.translate,
11988 mm : translator$2.translate,
11989 h : translator$2.translate,
11990 hh : translator$2.translate,
11991 d : 'dan',
11992 dd : translator$2.translate,
11993 M : 'mesec',
11994 MM : translator$2.translate,
11995 y : 'godinu',
11996 yy : translator$2.translate
11997 },
11998 dayOfMonthOrdinalParse: /\d{1,2}\./,
11999 ordinal : '%d.',
12000 week : {
12001 dow : 1, // Monday is the first day of the week.
12002 doy : 7 // The week that contains Jan 1st is the first week of the year.
12003 }
12004 });
12005
12006 //! moment.js locale configuration
12007 //! locale : siSwati [ss]
12008 //! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies
12009
12010
12011 hooks.defineLocale('ss', {
12012 months : "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'),
12013 monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
12014 weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),
12015 weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
12016 weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
12017 weekdaysParseExact : true,
12018 longDateFormat : {
12019 LT : 'h:mm A',
12020 LTS : 'h:mm:ss A',
12021 L : 'DD/MM/YYYY',
12022 LL : 'D MMMM YYYY',
12023 LLL : 'D MMMM YYYY h:mm A',
12024 LLLL : 'dddd, D MMMM YYYY h:mm A'
12025 },
12026 calendar : {
12027 sameDay : '[Namuhla nga] LT',
12028 nextDay : '[Kusasa nga] LT',
12029 nextWeek : 'dddd [nga] LT',
12030 lastDay : '[Itolo nga] LT',
12031 lastWeek : 'dddd [leliphelile] [nga] LT',
12032 sameElse : 'L'
12033 },
12034 relativeTime : {
12035 future : 'nga %s',
12036 past : 'wenteka nga %s',
12037 s : 'emizuzwana lomcane',
12038 m : 'umzuzu',
12039 mm : '%d emizuzu',
12040 h : 'lihora',
12041 hh : '%d emahora',
12042 d : 'lilanga',
12043 dd : '%d emalanga',
12044 M : 'inyanga',
12045 MM : '%d tinyanga',
12046 y : 'umnyaka',
12047 yy : '%d iminyaka'
12048 },
12049 meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
12050 meridiem : function (hours, minutes, isLower) {
12051 if (hours < 11) {
12052 return 'ekuseni';
12053 } else if (hours < 15) {
12054 return 'emini';
12055 } else if (hours < 19) {
12056 return 'entsambama';
12057 } else {
12058 return 'ebusuku';
12059 }
12060 },
12061 meridiemHour : function (hour, meridiem) {
12062 if (hour === 12) {
12063 hour = 0;
12064 }
12065 if (meridiem === 'ekuseni') {
12066 return hour;
12067 } else if (meridiem === 'emini') {
12068 return hour >= 11 ? hour : hour + 12;
12069 } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
12070 if (hour === 0) {
12071 return 0;
12072 }
12073 return hour + 12;
12074 }
12075 },
12076 dayOfMonthOrdinalParse: /\d{1,2}/,
12077 ordinal : '%d',
12078 week : {
12079 dow : 1, // Monday is the first day of the week.
12080 doy : 4 // The week that contains Jan 4th is the first week of the year.
12081 }
12082 });
12083
12084 //! moment.js locale configuration
12085 //! locale : Swedish [sv]
12086 //! author : Jens Alm : https://github.com/ulmus
12087
12088 hooks.defineLocale('sv', {
12089 months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
12090 monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
12091 weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
12092 weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
12093 weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),
12094 longDateFormat : {
12095 LT : 'HH:mm',
12096 LTS : 'HH:mm:ss',
12097 L : 'YYYY-MM-DD',
12098 LL : 'D MMMM YYYY',
12099 LLL : 'D MMMM YYYY [kl.] HH:mm',
12100 LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',
12101 lll : 'D MMM YYYY HH:mm',
12102 llll : 'ddd D MMM YYYY HH:mm'
12103 },
12104 calendar : {
12105 sameDay: '[Idag] LT',
12106 nextDay: '[Imorgon] LT',
12107 lastDay: '[Igår] LT',
12108 nextWeek: '[På] dddd LT',
12109 lastWeek: '[I] dddd[s] LT',
12110 sameElse: 'L'
12111 },
12112 relativeTime : {
12113 future : 'om %s',
12114 past : 'för %s sedan',
12115 s : 'några sekunder',
12116 m : 'en minut',
12117 mm : '%d minuter',
12118 h : 'en timme',
12119 hh : '%d timmar',
12120 d : 'en dag',
12121 dd : '%d dagar',
12122 M : 'en månad',
12123 MM : '%d månader',
12124 y : 'ett år',
12125 yy : '%d år'
12126 },
12127 dayOfMonthOrdinalParse: /\d{1,2}(e|a)/,
12128 ordinal : function (number) {
12129 var b = number % 10,
12130 output = (~~(number % 100 / 10) === 1) ? 'e' :
12131 (b === 1) ? 'a' :
12132 (b === 2) ? 'a' :
12133 (b === 3) ? 'e' : 'e';
12134 return number + output;
12135 },
12136 week : {
12137 dow : 1, // Monday is the first day of the week.
12138 doy : 4 // The week that contains Jan 4th is the first week of the year.
12139 }
12140 });
12141
12142 //! moment.js locale configuration
12143 //! locale : Swahili [sw]
12144 //! author : Fahad Kassim : https://github.com/fadsel
12145
12146 hooks.defineLocale('sw', {
12147 months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),
12148 monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
12149 weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),
12150 weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
12151 weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
12152 weekdaysParseExact : true,
12153 longDateFormat : {
12154 LT : 'HH:mm',
12155 LTS : 'HH:mm:ss',
12156 L : 'DD.MM.YYYY',
12157 LL : 'D MMMM YYYY',
12158 LLL : 'D MMMM YYYY HH:mm',
12159 LLLL : 'dddd, D MMMM YYYY HH:mm'
12160 },
12161 calendar : {
12162 sameDay : '[leo saa] LT',
12163 nextDay : '[kesho saa] LT',
12164 nextWeek : '[wiki ijayo] dddd [saat] LT',
12165 lastDay : '[jana] LT',
12166 lastWeek : '[wiki iliyopita] dddd [saat] LT',
12167 sameElse : 'L'
12168 },
12169 relativeTime : {
12170 future : '%s baadaye',
12171 past : 'tokea %s',
12172 s : 'hivi punde',
12173 m : 'dakika moja',
12174 mm : 'dakika %d',
12175 h : 'saa limoja',
12176 hh : 'masaa %d',
12177 d : 'siku moja',
12178 dd : 'masiku %d',
12179 M : 'mwezi mmoja',
12180 MM : 'miezi %d',
12181 y : 'mwaka mmoja',
12182 yy : 'miaka %d'
12183 },
12184 week : {
12185 dow : 1, // Monday is the first day of the week.
12186 doy : 7 // The week that contains Jan 1st is the first week of the year.
12187 }
12188 });
12189
12190 //! moment.js locale configuration
12191 //! locale : Tamil [ta]
12192 //! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
12193
12194 var symbolMap$12 = {
12195 '1': '௧',
12196 '2': '௨',
12197 '3': '௩',
12198 '4': '௪',
12199 '5': '௫',
12200 '6': '௬',
12201 '7': '௭',
12202 '8': '௮',
12203 '9': '௯',
12204 '0': '௦'
12205 };
12206 var numberMap$11 = {
12207 '௧': '1',
12208 '௨': '2',
12209 '௩': '3',
12210 '௪': '4',
12211 '௫': '5',
12212 '௬': '6',
12213 '௭': '7',
12214 '௮': '8',
12215 '௯': '9',
12216 '௦': '0'
12217 };
12218
12219 hooks.defineLocale('ta', {
12220 months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
12221 monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
12222 weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),
12223 weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),
12224 weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
12225 longDateFormat : {
12226 LT : 'HH:mm',
12227 LTS : 'HH:mm:ss',
12228 L : 'DD/MM/YYYY',
12229 LL : 'D MMMM YYYY',
12230 LLL : 'D MMMM YYYY, HH:mm',
12231 LLLL : 'dddd, D MMMM YYYY, HH:mm'
12232 },
12233 calendar : {
12234 sameDay : '[இன்று] LT',
12235 nextDay : '[நாளை] LT',
12236 nextWeek : 'dddd, LT',
12237 lastDay : '[நேற்று] LT',
12238 lastWeek : '[கடந்த வாரம்] dddd, LT',
12239 sameElse : 'L'
12240 },
12241 relativeTime : {
12242 future : '%s இல்',
12243 past : '%s முன்',
12244 s : 'ஒரு சில விநாடிகள்',
12245 m : 'ஒரு நிமிடம்',
12246 mm : '%d நிமிடங்கள்',
12247 h : 'ஒரு மணி நேரம்',
12248 hh : '%d மணி நேரம்',
12249 d : 'ஒரு நாள்',
12250 dd : '%d நாட்கள்',
12251 M : 'ஒரு மாதம்',
12252 MM : '%d மாதங்கள்',
12253 y : 'ஒரு வருடம்',
12254 yy : '%d ஆண்டுகள்'
12255 },
12256 dayOfMonthOrdinalParse: /\d{1,2}வது/,
12257 ordinal : function (number) {
12258 return number + 'வது';
12259 },
12260 preparse: function (string) {
12261 return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
12262 return numberMap$11[match];
12263 });
12264 },
12265 postformat: function (string) {
12266 return string.replace(/\d/g, function (match) {
12267 return symbolMap$12[match];
12268 });
12269 },
12270 // refer http://ta.wikipedia.org/s/1er1
12271 meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
12272 meridiem : function (hour, minute, isLower) {
12273 if (hour < 2) {
12274 return ' யாமம்';
12275 } else if (hour < 6) {
12276 return ' வைகறை'; // வைகறை
12277 } else if (hour < 10) {
12278 return ' காலை'; // காலை
12279 } else if (hour < 14) {
12280 return ' நண்பகல்'; // நண்பகல்
12281 } else if (hour < 18) {
12282 return ' எற்பாடு'; // எற்பாடு
12283 } else if (hour < 22) {
12284 return ' மாலை'; // மாலை
12285 } else {
12286 return ' யாமம்';
12287 }
12288 },
12289 meridiemHour : function (hour, meridiem) {
12290 if (hour === 12) {
12291 hour = 0;
12292 }
12293 if (meridiem === 'யாமம்') {
12294 return hour < 2 ? hour : hour + 12;
12295 } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
12296 return hour;
12297 } else if (meridiem === 'நண்பகல்') {
12298 return hour >= 10 ? hour : hour + 12;
12299 } else {
12300 return hour + 12;
12301 }
12302 },
12303 week : {
12304 dow : 0, // Sunday is the first day of the week.
12305 doy : 6 // The week that contains Jan 1st is the first week of the year.
12306 }
12307 });
12308
12309 //! moment.js locale configuration
12310 //! locale : Telugu [te]
12311 //! author : Krishna Chaitanya Thota : https://github.com/kcthota
12312
12313 hooks.defineLocale('te', {
12314 months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),
12315 monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),
12316 monthsParseExact : true,
12317 weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),
12318 weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
12319 weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
12320 longDateFormat : {
12321 LT : 'A h:mm',
12322 LTS : 'A h:mm:ss',
12323 L : 'DD/MM/YYYY',
12324 LL : 'D MMMM YYYY',
12325 LLL : 'D MMMM YYYY, A h:mm',
12326 LLLL : 'dddd, D MMMM YYYY, A h:mm'
12327 },
12328 calendar : {
12329 sameDay : '[నేడు] LT',
12330 nextDay : '[రేపు] LT',
12331 nextWeek : 'dddd, LT',
12332 lastDay : '[నిన్న] LT',
12333 lastWeek : '[గత] dddd, LT',
12334 sameElse : 'L'
12335 },
12336 relativeTime : {
12337 future : '%s లో',
12338 past : '%s క్రితం',
12339 s : 'కొన్ని క్షణాలు',
12340 m : 'ఒక నిమిషం',
12341 mm : '%d నిమిషాలు',
12342 h : 'ఒక గంట',
12343 hh : '%d గంటలు',
12344 d : 'ఒక రోజు',
12345 dd : '%d రోజులు',
12346 M : 'ఒక నెల',
12347 MM : '%d నెలలు',
12348 y : 'ఒక సంవత్సరం',
12349 yy : '%d సంవత్సరాలు'
12350 },
12351 dayOfMonthOrdinalParse : /\d{1,2}వ/,
12352 ordinal : '%dవ',
12353 meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
12354 meridiemHour : function (hour, meridiem) {
12355 if (hour === 12) {
12356 hour = 0;
12357 }
12358 if (meridiem === 'రాత్రి') {
12359 return hour < 4 ? hour : hour + 12;
12360 } else if (meridiem === 'ఉదయం') {
12361 return hour;
12362 } else if (meridiem === 'మధ్యాహ్నం') {
12363 return hour >= 10 ? hour : hour + 12;
12364 } else if (meridiem === 'సాయంత్రం') {
12365 return hour + 12;
12366 }
12367 },
12368 meridiem : function (hour, minute, isLower) {
12369 if (hour < 4) {
12370 return 'రాత్రి';
12371 } else if (hour < 10) {
12372 return 'ఉదయం';
12373 } else if (hour < 17) {
12374 return 'మధ్యాహ్నం';
12375 } else if (hour < 20) {
12376 return 'సాయంత్రం';
12377 } else {
12378 return 'రాత్రి';
12379 }
12380 },
12381 week : {
12382 dow : 0, // Sunday is the first day of the week.
12383 doy : 6 // The week that contains Jan 1st is the first week of the year.
12384 }
12385 });
12386
12387 //! moment.js locale configuration
12388 //! locale : Tetun Dili (East Timor) [tet]
12389 //! author : Joshua Brooks : https://github.com/joshbrooks
12390 //! author : Onorio De J. Afonso : https://github.com/marobo
12391
12392 hooks.defineLocale('tet', {
12393 months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juniu_Juliu_Augustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),
12394 monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Aug_Set_Out_Nov_Dez'.split('_'),
12395 weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sexta_Sabadu'.split('_'),
12396 weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sext_Sab'.split('_'),
12397 weekdaysMin : 'Do_Seg_Te_Ku_Ki_Sex_Sa'.split('_'),
12398 longDateFormat : {
12399 LT : 'HH:mm',
12400 LTS : 'HH:mm:ss',
12401 L : 'DD/MM/YYYY',
12402 LL : 'D MMMM YYYY',
12403 LLL : 'D MMMM YYYY HH:mm',
12404 LLLL : 'dddd, D MMMM YYYY HH:mm'
12405 },
12406 calendar : {
12407 sameDay: '[Ohin iha] LT',
12408 nextDay: '[Aban iha] LT',
12409 nextWeek: 'dddd [iha] LT',
12410 lastDay: '[Horiseik iha] LT',
12411 lastWeek: 'dddd [semana kotuk] [iha] LT',
12412 sameElse: 'L'
12413 },
12414 relativeTime : {
12415 future : 'iha %s',
12416 past : '%s liuba',
12417 s : 'minutu balun',
12418 m : 'minutu ida',
12419 mm : 'minutus %d',
12420 h : 'horas ida',
12421 hh : 'horas %d',
12422 d : 'loron ida',
12423 dd : 'loron %d',
12424 M : 'fulan ida',
12425 MM : 'fulan %d',
12426 y : 'tinan ida',
12427 yy : 'tinan %d'
12428 },
12429 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
12430 ordinal : function (number) {
12431 var b = number % 10,
12432 output = (~~(number % 100 / 10) === 1) ? 'th' :
12433 (b === 1) ? 'st' :
12434 (b === 2) ? 'nd' :
12435 (b === 3) ? 'rd' : 'th';
12436 return number + output;
12437 },
12438 week : {
12439 dow : 1, // Monday is the first day of the week.
12440 doy : 4 // The week that contains Jan 4th is the first week of the year.
12441 }
12442 });
12443
12444 //! moment.js locale configuration
12445 //! locale : Thai [th]
12446 //! author : Kridsada Thanabulpong : https://github.com/sirn
12447
12448 hooks.defineLocale('th', {
12449 months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),
12450 monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),
12451 monthsParseExact: true,
12452 weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
12453 weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
12454 weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
12455 weekdaysParseExact : true,
12456 longDateFormat : {
12457 LT : 'H:mm',
12458 LTS : 'H:mm:ss',
12459 L : 'DD/MM/YYYY',
12460 LL : 'D MMMM YYYY',
12461 LLL : 'D MMMM YYYY เวลา H:mm',
12462 LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'
12463 },
12464 meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
12465 isPM: function (input) {
12466 return input === 'หลังเที่ยง';
12467 },
12468 meridiem : function (hour, minute, isLower) {
12469 if (hour < 12) {
12470 return 'ก่อนเที่ยง';
12471 } else {
12472 return 'หลังเที่ยง';
12473 }
12474 },
12475 calendar : {
12476 sameDay : '[วันนี้ เวลา] LT',
12477 nextDay : '[พรุ่งนี้ เวลา] LT',
12478 nextWeek : 'dddd[หน้า เวลา] LT',
12479 lastDay : '[เมื่อวานนี้ เวลา] LT',
12480 lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',
12481 sameElse : 'L'
12482 },
12483 relativeTime : {
12484 future : 'อีก %s',
12485 past : '%sที่แล้ว',
12486 s : 'ไม่กี่วินาที',
12487 m : '1 นาที',
12488 mm : '%d นาที',
12489 h : '1 ชั่วโมง',
12490 hh : '%d ชั่วโมง',
12491 d : '1 วัน',
12492 dd : '%d วัน',
12493 M : '1 เดือน',
12494 MM : '%d เดือน',
12495 y : '1 ปี',
12496 yy : '%d ปี'
12497 }
12498 });
12499
12500 //! moment.js locale configuration
12501 //! locale : Tagalog (Philippines) [tl-ph]
12502 //! author : Dan Hagman : https://github.com/hagmandan
12503
12504 hooks.defineLocale('tl-ph', {
12505 months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),
12506 monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
12507 weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),
12508 weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
12509 weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
12510 longDateFormat : {
12511 LT : 'HH:mm',
12512 LTS : 'HH:mm:ss',
12513 L : 'MM/D/YYYY',
12514 LL : 'MMMM D, YYYY',
12515 LLL : 'MMMM D, YYYY HH:mm',
12516 LLLL : 'dddd, MMMM DD, YYYY HH:mm'
12517 },
12518 calendar : {
12519 sameDay: 'LT [ngayong araw]',
12520 nextDay: '[Bukas ng] LT',
12521 nextWeek: 'LT [sa susunod na] dddd',
12522 lastDay: 'LT [kahapon]',
12523 lastWeek: 'LT [noong nakaraang] dddd',
12524 sameElse: 'L'
12525 },
12526 relativeTime : {
12527 future : 'sa loob ng %s',
12528 past : '%s ang nakalipas',
12529 s : 'ilang segundo',
12530 m : 'isang minuto',
12531 mm : '%d minuto',
12532 h : 'isang oras',
12533 hh : '%d oras',
12534 d : 'isang araw',
12535 dd : '%d araw',
12536 M : 'isang buwan',
12537 MM : '%d buwan',
12538 y : 'isang taon',
12539 yy : '%d taon'
12540 },
12541 dayOfMonthOrdinalParse: /\d{1,2}/,
12542 ordinal : function (number) {
12543 return number;
12544 },
12545 week : {
12546 dow : 1, // Monday is the first day of the week.
12547 doy : 4 // The week that contains Jan 4th is the first week of the year.
12548 }
12549 });
12550
12551 //! moment.js locale configuration
12552 //! locale : Klingon [tlh]
12553 //! author : Dominika Kruk : https://github.com/amaranthrose
12554
12555 var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
12556
12557 function translateFuture(output) {
12558 var time = output;
12559 time = (output.indexOf('jaj') !== -1) ?
12560 time.slice(0, -3) + 'leS' :
12561 (output.indexOf('jar') !== -1) ?
12562 time.slice(0, -3) + 'waQ' :
12563 (output.indexOf('DIS') !== -1) ?
12564 time.slice(0, -3) + 'nem' :
12565 time + ' pIq';
12566 return time;
12567 }
12568
12569 function translatePast(output) {
12570 var time = output;
12571 time = (output.indexOf('jaj') !== -1) ?
12572 time.slice(0, -3) + 'Hu’' :
12573 (output.indexOf('jar') !== -1) ?
12574 time.slice(0, -3) + 'wen' :
12575 (output.indexOf('DIS') !== -1) ?
12576 time.slice(0, -3) + 'ben' :
12577 time + ' ret';
12578 return time;
12579 }
12580
12581 function translate$9(number, withoutSuffix, string, isFuture) {
12582 var numberNoun = numberAsNoun(number);
12583 switch (string) {
12584 case 'mm':
12585 return numberNoun + ' tup';
12586 case 'hh':
12587 return numberNoun + ' rep';
12588 case 'dd':
12589 return numberNoun + ' jaj';
12590 case 'MM':
12591 return numberNoun + ' jar';
12592 case 'yy':
12593 return numberNoun + ' DIS';
12594 }
12595 }
12596
12597 function numberAsNoun(number) {
12598 var hundred = Math.floor((number % 1000) / 100),
12599 ten = Math.floor((number % 100) / 10),
12600 one = number % 10,
12601 word = '';
12602 if (hundred > 0) {
12603 word += numbersNouns[hundred] + 'vatlh';
12604 }
12605 if (ten > 0) {
12606 word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';
12607 }
12608 if (one > 0) {
12609 word += ((word !== '') ? ' ' : '') + numbersNouns[one];
12610 }
12611 return (word === '') ? 'pagh' : word;
12612 }
12613
12614 hooks.defineLocale('tlh', {
12615 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('_'),
12616 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('_'),
12617 monthsParseExact : true,
12618 weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
12619 weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
12620 weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
12621 longDateFormat : {
12622 LT : 'HH:mm',
12623 LTS : 'HH:mm:ss',
12624 L : 'DD.MM.YYYY',
12625 LL : 'D MMMM YYYY',
12626 LLL : 'D MMMM YYYY HH:mm',
12627 LLLL : 'dddd, D MMMM YYYY HH:mm'
12628 },
12629 calendar : {
12630 sameDay: '[DaHjaj] LT',
12631 nextDay: '[wa’leS] LT',
12632 nextWeek: 'LLL',
12633 lastDay: '[wa’Hu’] LT',
12634 lastWeek: 'LLL',
12635 sameElse: 'L'
12636 },
12637 relativeTime : {
12638 future : translateFuture,
12639 past : translatePast,
12640 s : 'puS lup',
12641 m : 'wa’ tup',
12642 mm : translate$9,
12643 h : 'wa’ rep',
12644 hh : translate$9,
12645 d : 'wa’ jaj',
12646 dd : translate$9,
12647 M : 'wa’ jar',
12648 MM : translate$9,
12649 y : 'wa’ DIS',
12650 yy : translate$9
12651 },
12652 dayOfMonthOrdinalParse: /\d{1,2}\./,
12653 ordinal : '%d.',
12654 week : {
12655 dow : 1, // Monday is the first day of the week.
12656 doy : 4 // The week that contains Jan 4th is the first week of the year.
12657 }
12658 });
12659
12660 //! moment.js locale configuration
12661 //! locale : Turkish [tr]
12662 //! authors : Erhan Gundogan : https://github.com/erhangundogan,
12663 //! Burak Yiğit Kaya: https://github.com/BYK
12664
12665 var suffixes$3 = {
12666 1: '\'inci',
12667 5: '\'inci',
12668 8: '\'inci',
12669 70: '\'inci',
12670 80: '\'inci',
12671 2: '\'nci',
12672 7: '\'nci',
12673 20: '\'nci',
12674 50: '\'nci',
12675 3: '\'üncü',
12676 4: '\'üncü',
12677 100: '\'üncü',
12678 6: '\'ncı',
12679 9: '\'uncu',
12680 10: '\'uncu',
12681 30: '\'uncu',
12682 60: '\'ıncı',
12683 90: '\'ıncı'
12684 };
12685
12686 hooks.defineLocale('tr', {
12687 months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),
12688 monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
12689 weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),
12690 weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
12691 weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
12692 longDateFormat : {
12693 LT : 'HH:mm',
12694 LTS : 'HH:mm:ss',
12695 L : 'DD.MM.YYYY',
12696 LL : 'D MMMM YYYY',
12697 LLL : 'D MMMM YYYY HH:mm',
12698 LLLL : 'dddd, D MMMM YYYY HH:mm'
12699 },
12700 calendar : {
12701 sameDay : '[bugün saat] LT',
12702 nextDay : '[yarın saat] LT',
12703 nextWeek : '[haftaya] dddd [saat] LT',
12704 lastDay : '[dün] LT',
12705 lastWeek : '[geçen hafta] dddd [saat] LT',
12706 sameElse : 'L'
12707 },
12708 relativeTime : {
12709 future : '%s sonra',
12710 past : '%s önce',
12711 s : 'birkaç saniye',
12712 m : 'bir dakika',
12713 mm : '%d dakika',
12714 h : 'bir saat',
12715 hh : '%d saat',
12716 d : 'bir gün',
12717 dd : '%d gün',
12718 M : 'bir ay',
12719 MM : '%d ay',
12720 y : 'bir yıl',
12721 yy : '%d yıl'
12722 },
12723 dayOfMonthOrdinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,
12724 ordinal : function (number) {
12725 if (number === 0) { // special case for zero
12726 return number + '\'ıncı';
12727 }
12728 var a = number % 10,
12729 b = number % 100 - a,
12730 c = number >= 100 ? 100 : null;
12731 return number + (suffixes$3[a] || suffixes$3[b] || suffixes$3[c]);
12732 },
12733 week : {
12734 dow : 1, // Monday is the first day of the week.
12735 doy : 7 // The week that contains Jan 1st is the first week of the year.
12736 }
12737 });
12738
12739 //! moment.js locale configuration
12740 //! locale : Talossan [tzl]
12741 //! author : Robin van der Vliet : https://github.com/robin0van0der0v
12742 //! author : Iustì Canun
12743
12744 // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
12745 // This is currently too difficult (maybe even impossible) to add.
12746 hooks.defineLocale('tzl', {
12747 months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),
12748 monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
12749 weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
12750 weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
12751 weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
12752 longDateFormat : {
12753 LT : 'HH.mm',
12754 LTS : 'HH.mm.ss',
12755 L : 'DD.MM.YYYY',
12756 LL : 'D. MMMM [dallas] YYYY',
12757 LLL : 'D. MMMM [dallas] YYYY HH.mm',
12758 LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'
12759 },
12760 meridiemParse: /d\'o|d\'a/i,
12761 isPM : function (input) {
12762 return 'd\'o' === input.toLowerCase();
12763 },
12764 meridiem : function (hours, minutes, isLower) {
12765 if (hours > 11) {
12766 return isLower ? 'd\'o' : 'D\'O';
12767 } else {
12768 return isLower ? 'd\'a' : 'D\'A';
12769 }
12770 },
12771 calendar : {
12772 sameDay : '[oxhi à] LT',
12773 nextDay : '[demà à] LT',
12774 nextWeek : 'dddd [à] LT',
12775 lastDay : '[ieiri à] LT',
12776 lastWeek : '[sür el] dddd [lasteu à] LT',
12777 sameElse : 'L'
12778 },
12779 relativeTime : {
12780 future : 'osprei %s',
12781 past : 'ja%s',
12782 s : processRelativeTime$7,
12783 m : processRelativeTime$7,
12784 mm : processRelativeTime$7,
12785 h : processRelativeTime$7,
12786 hh : processRelativeTime$7,
12787 d : processRelativeTime$7,
12788 dd : processRelativeTime$7,
12789 M : processRelativeTime$7,
12790 MM : processRelativeTime$7,
12791 y : processRelativeTime$7,
12792 yy : processRelativeTime$7
12793 },
12794 dayOfMonthOrdinalParse: /\d{1,2}\./,
12795 ordinal : '%d.',
12796 week : {
12797 dow : 1, // Monday is the first day of the week.
12798 doy : 4 // The week that contains Jan 4th is the first week of the year.
12799 }
12800 });
12801
12802 function processRelativeTime$7(number, withoutSuffix, key, isFuture) {
12803 var format = {
12804 's': ['viensas secunds', '\'iensas secunds'],
12805 'm': ['\'n míut', '\'iens míut'],
12806 'mm': [number + ' míuts', '' + number + ' míuts'],
12807 'h': ['\'n þora', '\'iensa þora'],
12808 'hh': [number + ' þoras', '' + number + ' þoras'],
12809 'd': ['\'n ziua', '\'iensa ziua'],
12810 'dd': [number + ' ziuas', '' + number + ' ziuas'],
12811 'M': ['\'n mes', '\'iens mes'],
12812 'MM': [number + ' mesen', '' + number + ' mesen'],
12813 'y': ['\'n ar', '\'iens ar'],
12814 'yy': [number + ' ars', '' + number + ' ars']
12815 };
12816 return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);
12817 }
12818
12819 //! moment.js locale configuration
12820 //! locale : Central Atlas Tamazight Latin [tzm-latn]
12821 //! author : Abdel Said : https://github.com/abdelsaid
12822
12823 hooks.defineLocale('tzm-latn', {
12824 months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
12825 monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
12826 weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
12827 weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
12828 weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
12829 longDateFormat : {
12830 LT : 'HH:mm',
12831 LTS : 'HH:mm:ss',
12832 L : 'DD/MM/YYYY',
12833 LL : 'D MMMM YYYY',
12834 LLL : 'D MMMM YYYY HH:mm',
12835 LLLL : 'dddd D MMMM YYYY HH:mm'
12836 },
12837 calendar : {
12838 sameDay: '[asdkh g] LT',
12839 nextDay: '[aska g] LT',
12840 nextWeek: 'dddd [g] LT',
12841 lastDay: '[assant g] LT',
12842 lastWeek: 'dddd [g] LT',
12843 sameElse: 'L'
12844 },
12845 relativeTime : {
12846 future : 'dadkh s yan %s',
12847 past : 'yan %s',
12848 s : 'imik',
12849 m : 'minuḍ',
12850 mm : '%d minuḍ',
12851 h : 'saɛa',
12852 hh : '%d tassaɛin',
12853 d : 'ass',
12854 dd : '%d ossan',
12855 M : 'ayowr',
12856 MM : '%d iyyirn',
12857 y : 'asgas',
12858 yy : '%d isgasn'
12859 },
12860 week : {
12861 dow : 6, // Saturday is the first day of the week.
12862 doy : 12 // The week that contains Jan 1st is the first week of the year.
12863 }
12864 });
12865
12866 //! moment.js locale configuration
12867 //! locale : Central Atlas Tamazight [tzm]
12868 //! author : Abdel Said : https://github.com/abdelsaid
12869
12870 hooks.defineLocale('tzm', {
12871 months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
12872 monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
12873 weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
12874 weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
12875 weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
12876 longDateFormat : {
12877 LT : 'HH:mm',
12878 LTS: 'HH:mm:ss',
12879 L : 'DD/MM/YYYY',
12880 LL : 'D MMMM YYYY',
12881 LLL : 'D MMMM YYYY HH:mm',
12882 LLLL : 'dddd D MMMM YYYY HH:mm'
12883 },
12884 calendar : {
12885 sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
12886 nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
12887 nextWeek: 'dddd [ⴴ] LT',
12888 lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
12889 lastWeek: 'dddd [ⴴ] LT',
12890 sameElse: 'L'
12891 },
12892 relativeTime : {
12893 future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
12894 past : 'ⵢⴰⵏ %s',
12895 s : 'ⵉⵎⵉⴽ',
12896 m : 'ⵎⵉⵏⵓⴺ',
12897 mm : '%d ⵎⵉⵏⵓⴺ',
12898 h : 'ⵙⴰⵄⴰ',
12899 hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
12900 d : 'ⴰⵙⵙ',
12901 dd : '%d oⵙⵙⴰⵏ',
12902 M : 'ⴰⵢoⵓⵔ',
12903 MM : '%d ⵉⵢⵢⵉⵔⵏ',
12904 y : 'ⴰⵙⴳⴰⵙ',
12905 yy : '%d ⵉⵙⴳⴰⵙⵏ'
12906 },
12907 week : {
12908 dow : 6, // Saturday is the first day of the week.
12909 doy : 12 // The week that contains Jan 1st is the first week of the year.
12910 }
12911 });
12912
12913 //! moment.js locale configuration
12914 //! locale : Ukrainian [uk]
12915 //! author : zemlanin : https://github.com/zemlanin
12916 //! Author : Menelion Elensúle : https://github.com/Oire
12917
12918 function plural$6(word, num) {
12919 var forms = word.split('_');
12920 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]);
12921 }
12922 function relativeTimeWithPlural$4(number, withoutSuffix, key) {
12923 var format = {
12924 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
12925 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
12926 'dd': 'день_дні_днів',
12927 'MM': 'місяць_місяці_місяців',
12928 'yy': 'рік_роки_років'
12929 };
12930 if (key === 'm') {
12931 return withoutSuffix ? 'хвилина' : 'хвилину';
12932 }
12933 else if (key === 'h') {
12934 return withoutSuffix ? 'година' : 'годину';
12935 }
12936 else {
12937 return number + ' ' + plural$6(format[key], +number);
12938 }
12939 }
12940 function weekdaysCaseReplace(m, format) {
12941 var weekdays = {
12942 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),
12943 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),
12944 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')
12945 };
12946
12947 if (!m) {
12948 return weekdays['nominative'];
12949 }
12950
12951 var nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ?
12952 'accusative' :
12953 ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ?
12954 'genitive' :
12955 'nominative');
12956 return weekdays[nounCase][m.day()];
12957 }
12958 function processHoursFunction(str) {
12959 return function () {
12960 return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
12961 };
12962 }
12963
12964 hooks.defineLocale('uk', {
12965 months : {
12966 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),
12967 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')
12968 },
12969 monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),
12970 weekdays : weekdaysCaseReplace,
12971 weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
12972 weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
12973 longDateFormat : {
12974 LT : 'HH:mm',
12975 LTS : 'HH:mm:ss',
12976 L : 'DD.MM.YYYY',
12977 LL : 'D MMMM YYYY р.',
12978 LLL : 'D MMMM YYYY р., HH:mm',
12979 LLLL : 'dddd, D MMMM YYYY р., HH:mm'
12980 },
12981 calendar : {
12982 sameDay: processHoursFunction('[Сьогодні '),
12983 nextDay: processHoursFunction('[Завтра '),
12984 lastDay: processHoursFunction('[Вчора '),
12985 nextWeek: processHoursFunction('[У] dddd ['),
12986 lastWeek: function () {
12987 switch (this.day()) {
12988 case 0:
12989 case 3:
12990 case 5:
12991 case 6:
12992 return processHoursFunction('[Минулої] dddd [').call(this);
12993 case 1:
12994 case 2:
12995 case 4:
12996 return processHoursFunction('[Минулого] dddd [').call(this);
12997 }
12998 },
12999 sameElse: 'L'
13000 },
13001 relativeTime : {
13002 future : 'за %s',
13003 past : '%s тому',
13004 s : 'декілька секунд',
13005 m : relativeTimeWithPlural$4,
13006 mm : relativeTimeWithPlural$4,
13007 h : 'годину',
13008 hh : relativeTimeWithPlural$4,
13009 d : 'день',
13010 dd : relativeTimeWithPlural$4,
13011 M : 'місяць',
13012 MM : relativeTimeWithPlural$4,
13013 y : 'рік',
13014 yy : relativeTimeWithPlural$4
13015 },
13016 // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
13017 meridiemParse: /ночі|ранку|дня|вечора/,
13018 isPM: function (input) {
13019 return /^(дня|вечора)$/.test(input);
13020 },
13021 meridiem : function (hour, minute, isLower) {
13022 if (hour < 4) {
13023 return 'ночі';
13024 } else if (hour < 12) {
13025 return 'ранку';
13026 } else if (hour < 17) {
13027 return 'дня';
13028 } else {
13029 return 'вечора';
13030 }
13031 },
13032 dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
13033 ordinal: function (number, period) {
13034 switch (period) {
13035 case 'M':
13036 case 'd':
13037 case 'DDD':
13038 case 'w':
13039 case 'W':
13040 return number + '-й';
13041 case 'D':
13042 return number + '-го';
13043 default:
13044 return number;
13045 }
13046 },
13047 week : {
13048 dow : 1, // Monday is the first day of the week.
13049 doy : 7 // The week that contains Jan 1st is the first week of the year.
13050 }
13051 });
13052
13053 //! moment.js locale configuration
13054 //! locale : Urdu [ur]
13055 //! author : Sawood Alam : https://github.com/ibnesayeed
13056 //! author : Zack : https://github.com/ZackVision
13057
13058 var months$8 = [
13059 'جنوری',
13060 'فروری',
13061 'مارچ',
13062 'اپریل',
13063 'مئی',
13064 'جون',
13065 'جولائی',
13066 'اگست',
13067 'ستمبر',
13068 'اکتوبر',
13069 'نومبر',
13070 'دسمبر'
13071 ];
13072 var days$2 = [
13073 'اتوار',
13074 'پیر',
13075 'منگل',
13076 'بدھ',
13077 'جمعرات',
13078 'جمعہ',
13079 'ہفتہ'
13080 ];
13081
13082 hooks.defineLocale('ur', {
13083 months : months$8,
13084 monthsShort : months$8,
13085 weekdays : days$2,
13086 weekdaysShort : days$2,
13087 weekdaysMin : days$2,
13088 longDateFormat : {
13089 LT : 'HH:mm',
13090 LTS : 'HH:mm:ss',
13091 L : 'DD/MM/YYYY',
13092 LL : 'D MMMM YYYY',
13093 LLL : 'D MMMM YYYY HH:mm',
13094 LLLL : 'dddd، D MMMM YYYY HH:mm'
13095 },
13096 meridiemParse: /صبح|شام/,
13097 isPM : function (input) {
13098 return 'شام' === input;
13099 },
13100 meridiem : function (hour, minute, isLower) {
13101 if (hour < 12) {
13102 return 'صبح';
13103 }
13104 return 'شام';
13105 },
13106 calendar : {
13107 sameDay : '[آج بوقت] LT',
13108 nextDay : '[کل بوقت] LT',
13109 nextWeek : 'dddd [بوقت] LT',
13110 lastDay : '[گذشتہ روز بوقت] LT',
13111 lastWeek : '[گذشتہ] dddd [بوقت] LT',
13112 sameElse : 'L'
13113 },
13114 relativeTime : {
13115 future : '%s بعد',
13116 past : '%s قبل',
13117 s : 'چند سیکنڈ',
13118 m : 'ایک منٹ',
13119 mm : '%d منٹ',
13120 h : 'ایک گھنٹہ',
13121 hh : '%d گھنٹے',
13122 d : 'ایک دن',
13123 dd : '%d دن',
13124 M : 'ایک ماہ',
13125 MM : '%d ماہ',
13126 y : 'ایک سال',
13127 yy : '%d سال'
13128 },
13129 preparse: function (string) {
13130 return string.replace(/،/g, ',');
13131 },
13132 postformat: function (string) {
13133 return string.replace(/,/g, '،');
13134 },
13135 week : {
13136 dow : 1, // Monday is the first day of the week.
13137 doy : 4 // The week that contains Jan 4th is the first week of the year.
13138 }
13139 });
13140
13141 //! moment.js locale configuration
13142 //! locale : Uzbek Latin [uz-latn]
13143 //! author : Rasulbek Mirzayev : github.com/Rasulbeeek
13144
13145 hooks.defineLocale('uz-latn', {
13146 months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),
13147 monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
13148 weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),
13149 weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
13150 weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
13151 longDateFormat : {
13152 LT : 'HH:mm',
13153 LTS : 'HH:mm:ss',
13154 L : 'DD/MM/YYYY',
13155 LL : 'D MMMM YYYY',
13156 LLL : 'D MMMM YYYY HH:mm',
13157 LLLL : 'D MMMM YYYY, dddd HH:mm'
13158 },
13159 calendar : {
13160 sameDay : '[Bugun soat] LT [da]',
13161 nextDay : '[Ertaga] LT [da]',
13162 nextWeek : 'dddd [kuni soat] LT [da]',
13163 lastDay : '[Kecha soat] LT [da]',
13164 lastWeek : '[O\'tgan] dddd [kuni soat] LT [da]',
13165 sameElse : 'L'
13166 },
13167 relativeTime : {
13168 future : 'Yaqin %s ichida',
13169 past : 'Bir necha %s oldin',
13170 s : 'soniya',
13171 m : 'bir daqiqa',
13172 mm : '%d daqiqa',
13173 h : 'bir soat',
13174 hh : '%d soat',
13175 d : 'bir kun',
13176 dd : '%d kun',
13177 M : 'bir oy',
13178 MM : '%d oy',
13179 y : 'bir yil',
13180 yy : '%d yil'
13181 },
13182 week : {
13183 dow : 1, // Monday is the first day of the week.
13184 doy : 7 // The week that contains Jan 1st is the first week of the year.
13185 }
13186 });
13187
13188 //! moment.js locale configuration
13189 //! locale : Uzbek [uz]
13190 //! author : Sardor Muminov : https://github.com/muminoff
13191
13192 hooks.defineLocale('uz', {
13193 months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
13194 monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
13195 weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
13196 weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
13197 weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
13198 longDateFormat : {
13199 LT : 'HH:mm',
13200 LTS : 'HH:mm:ss',
13201 L : 'DD/MM/YYYY',
13202 LL : 'D MMMM YYYY',
13203 LLL : 'D MMMM YYYY HH:mm',
13204 LLLL : 'D MMMM YYYY, dddd HH:mm'
13205 },
13206 calendar : {
13207 sameDay : '[Бугун соат] LT [да]',
13208 nextDay : '[Эртага] LT [да]',
13209 nextWeek : 'dddd [куни соат] LT [да]',
13210 lastDay : '[Кеча соат] LT [да]',
13211 lastWeek : '[Утган] dddd [куни соат] LT [да]',
13212 sameElse : 'L'
13213 },
13214 relativeTime : {
13215 future : 'Якин %s ичида',
13216 past : 'Бир неча %s олдин',
13217 s : 'фурсат',
13218 m : 'бир дакика',
13219 mm : '%d дакика',
13220 h : 'бир соат',
13221 hh : '%d соат',
13222 d : 'бир кун',
13223 dd : '%d кун',
13224 M : 'бир ой',
13225 MM : '%d ой',
13226 y : 'бир йил',
13227 yy : '%d йил'
13228 },
13229 week : {
13230 dow : 1, // Monday is the first day of the week.
13231 doy : 7 // The week that contains Jan 4th is the first week of the year.
13232 }
13233 });
13234
13235 //! moment.js locale configuration
13236 //! locale : Vietnamese [vi]
13237 //! author : Bang Nguyen : https://github.com/bangnk
13238
13239 hooks.defineLocale('vi', {
13240 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('_'),
13241 monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),
13242 monthsParseExact : true,
13243 weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),
13244 weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
13245 weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
13246 weekdaysParseExact : true,
13247 meridiemParse: /sa|ch/i,
13248 isPM : function (input) {
13249 return /^ch$/i.test(input);
13250 },
13251 meridiem : function (hours, minutes, isLower) {
13252 if (hours < 12) {
13253 return isLower ? 'sa' : 'SA';
13254 } else {
13255 return isLower ? 'ch' : 'CH';
13256 }
13257 },
13258 longDateFormat : {
13259 LT : 'HH:mm',
13260 LTS : 'HH:mm:ss',
13261 L : 'DD/MM/YYYY',
13262 LL : 'D MMMM [năm] YYYY',
13263 LLL : 'D MMMM [năm] YYYY HH:mm',
13264 LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',
13265 l : 'DD/M/YYYY',
13266 ll : 'D MMM YYYY',
13267 lll : 'D MMM YYYY HH:mm',
13268 llll : 'ddd, D MMM YYYY HH:mm'
13269 },
13270 calendar : {
13271 sameDay: '[Hôm nay lúc] LT',
13272 nextDay: '[Ngày mai lúc] LT',
13273 nextWeek: 'dddd [tuần tới lúc] LT',
13274 lastDay: '[Hôm qua lúc] LT',
13275 lastWeek: 'dddd [tuần rồi lúc] LT',
13276 sameElse: 'L'
13277 },
13278 relativeTime : {
13279 future : '%s tới',
13280 past : '%s trước',
13281 s : 'vài giây',
13282 m : 'một phút',
13283 mm : '%d phút',
13284 h : 'một giờ',
13285 hh : '%d giờ',
13286 d : 'một ngày',
13287 dd : '%d ngày',
13288 M : 'một tháng',
13289 MM : '%d tháng',
13290 y : 'một năm',
13291 yy : '%d năm'
13292 },
13293 dayOfMonthOrdinalParse: /\d{1,2}/,
13294 ordinal : function (number) {
13295 return number;
13296 },
13297 week : {
13298 dow : 1, // Monday is the first day of the week.
13299 doy : 4 // The week that contains Jan 4th is the first week of the year.
13300 }
13301 });
13302
13303 //! moment.js locale configuration
13304 //! locale : Pseudo [x-pseudo]
13305 //! author : Andrew Hood : https://github.com/andrewhood125
13306
13307 hooks.defineLocale('x-pseudo', {
13308 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('_'),
13309 monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),
13310 monthsParseExact : true,
13311 weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),
13312 weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
13313 weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
13314 weekdaysParseExact : true,
13315 longDateFormat : {
13316 LT : 'HH:mm',
13317 L : 'DD/MM/YYYY',
13318 LL : 'D MMMM YYYY',
13319 LLL : 'D MMMM YYYY HH:mm',
13320 LLLL : 'dddd, D MMMM YYYY HH:mm'
13321 },
13322 calendar : {
13323 sameDay : '[T~ódá~ý át] LT',
13324 nextDay : '[T~ómó~rró~w át] LT',
13325 nextWeek : 'dddd [át] LT',
13326 lastDay : '[Ý~ést~érdá~ý át] LT',
13327 lastWeek : '[L~ást] dddd [át] LT',
13328 sameElse : 'L'
13329 },
13330 relativeTime : {
13331 future : 'í~ñ %s',
13332 past : '%s á~gó',
13333 s : 'á ~féw ~sécó~ñds',
13334 m : 'á ~míñ~úté',
13335 mm : '%d m~íñú~tés',
13336 h : 'á~ñ hó~úr',
13337 hh : '%d h~óúrs',
13338 d : 'á ~dáý',
13339 dd : '%d d~áýs',
13340 M : 'á ~móñ~th',
13341 MM : '%d m~óñt~hs',
13342 y : 'á ~ýéár',
13343 yy : '%d ý~éárs'
13344 },
13345 dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
13346 ordinal : function (number) {
13347 var b = number % 10,
13348 output = (~~(number % 100 / 10) === 1) ? 'th' :
13349 (b === 1) ? 'st' :
13350 (b === 2) ? 'nd' :
13351 (b === 3) ? 'rd' : 'th';
13352 return number + output;
13353 },
13354 week : {
13355 dow : 1, // Monday is the first day of the week.
13356 doy : 4 // The week that contains Jan 4th is the first week of the year.
13357 }
13358 });
13359
13360 //! moment.js locale configuration
13361 //! locale : Yoruba Nigeria [yo]
13362 //! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
13363
13364 hooks.defineLocale('yo', {
13365 months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),
13366 monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
13367 weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
13368 weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
13369 weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
13370 longDateFormat : {
13371 LT : 'h:mm A',
13372 LTS : 'h:mm:ss A',
13373 L : 'DD/MM/YYYY',
13374 LL : 'D MMMM YYYY',
13375 LLL : 'D MMMM YYYY h:mm A',
13376 LLLL : 'dddd, D MMMM YYYY h:mm A'
13377 },
13378 calendar : {
13379 sameDay : '[Ònì ni] LT',
13380 nextDay : '[Ọ̀la ni] LT',
13381 nextWeek : 'dddd [Ọsẹ̀ tón\'bọ] [ni] LT',
13382 lastDay : '[Àna ni] LT',
13383 lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
13384 sameElse : 'L'
13385 },
13386 relativeTime : {
13387 future : 'ní %s',
13388 past : '%s kọjá',
13389 s : 'ìsẹjú aayá die',
13390 m : 'ìsẹjú kan',
13391 mm : 'ìsẹjú %d',
13392 h : 'wákati kan',
13393 hh : 'wákati %d',
13394 d : 'ọjọ́ kan',
13395 dd : 'ọjọ́ %d',
13396 M : 'osù kan',
13397 MM : 'osù %d',
13398 y : 'ọdún kan',
13399 yy : 'ọdún %d'
13400 },
13401 dayOfMonthOrdinalParse : /ọjọ́\s\d{1,2}/,
13402 ordinal : 'ọjọ́ %d',
13403 week : {
13404 dow : 1, // Monday is the first day of the week.
13405 doy : 4 // The week that contains Jan 4th is the first week of the year.
13406 }
13407 });
13408
13409 //! moment.js locale configuration
13410 //! locale : Chinese (China) [zh-cn]
13411 //! author : suupic : https://github.com/suupic
13412 //! author : Zeno Zeng : https://github.com/zenozeng
13413
13414 hooks.defineLocale('zh-cn', {
13415 months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
13416 monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
13417 weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
13418 weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),
13419 weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
13420 longDateFormat : {
13421 LT : 'HH:mm',
13422 LTS : 'HH:mm:ss',
13423 L : 'YYYY年MMMD日',
13424 LL : 'YYYY年MMMD日',
13425 LLL : 'YYYY年MMMD日Ah点mm分',
13426 LLLL : 'YYYY年MMMD日ddddAh点mm分',
13427 l : 'YYYY年MMMD日',
13428 ll : 'YYYY年MMMD日',
13429 lll : 'YYYY年MMMD日 HH:mm',
13430 llll : 'YYYY年MMMD日dddd HH:mm'
13431 },
13432 meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
13433 meridiemHour: function (hour, meridiem) {
13434 if (hour === 12) {
13435 hour = 0;
13436 }
13437 if (meridiem === '凌晨' || meridiem === '早上' ||
13438 meridiem === '上午') {
13439 return hour;
13440 } else if (meridiem === '下午' || meridiem === '晚上') {
13441 return hour + 12;
13442 } else {
13443 // '中午'
13444 return hour >= 11 ? hour : hour + 12;
13445 }
13446 },
13447 meridiem : function (hour, minute, isLower) {
13448 var hm = hour * 100 + minute;
13449 if (hm < 600) {
13450 return '凌晨';
13451 } else if (hm < 900) {
13452 return '早上';
13453 } else if (hm < 1130) {
13454 return '上午';
13455 } else if (hm < 1230) {
13456 return '中午';
13457 } else if (hm < 1800) {
13458 return '下午';
13459 } else {
13460 return '晚上';
13461 }
13462 },
13463 calendar : {
13464 sameDay : '[今天]LT',
13465 nextDay : '[明天]LT',
13466 nextWeek : '[下]ddddLT',
13467 lastDay : '[昨天]LT',
13468 lastWeek : '[上]ddddLT',
13469 sameElse : 'L'
13470 },
13471 dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
13472 ordinal : function (number, period) {
13473 switch (period) {
13474 case 'd':
13475 case 'D':
13476 case 'DDD':
13477 return number + '日';
13478 case 'M':
13479 return number + '月';
13480 case 'w':
13481 case 'W':
13482 return number + '周';
13483 default:
13484 return number;
13485 }
13486 },
13487 relativeTime : {
13488 future : '%s内',
13489 past : '%s前',
13490 s : '几秒',
13491 m : '1 分钟',
13492 mm : '%d 分钟',
13493 h : '1 小时',
13494 hh : '%d 小时',
13495 d : '1 天',
13496 dd : '%d 天',
13497 M : '1 个月',
13498 MM : '%d 个月',
13499 y : '1 年',
13500 yy : '%d 年'
13501 },
13502 week : {
13503 // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
13504 dow : 1, // Monday is the first day of the week.
13505 doy : 4 // The week that contains Jan 4th is the first week of the year.
13506 }
13507 });
13508
13509 //! moment.js locale configuration
13510 //! locale : Chinese (Hong Kong) [zh-hk]
13511 //! author : Ben : https://github.com/ben-lin
13512 //! author : Chris Lam : https://github.com/hehachris
13513 //! author : Konstantin : https://github.com/skfd
13514
13515 hooks.defineLocale('zh-hk', {
13516 months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
13517 monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
13518 weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
13519 weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
13520 weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
13521 longDateFormat : {
13522 LT : 'HH:mm',
13523 LTS : 'HH:mm:ss',
13524 L : 'YYYY年MMMD日',
13525 LL : 'YYYY年MMMD日',
13526 LLL : 'YYYY年MMMD日 HH:mm',
13527 LLLL : 'YYYY年MMMD日dddd HH:mm',
13528 l : 'YYYY年MMMD日',
13529 ll : 'YYYY年MMMD日',
13530 lll : 'YYYY年MMMD日 HH:mm',
13531 llll : 'YYYY年MMMD日dddd HH:mm'
13532 },
13533 meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
13534 meridiemHour : function (hour, meridiem) {
13535 if (hour === 12) {
13536 hour = 0;
13537 }
13538 if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
13539 return hour;
13540 } else if (meridiem === '中午') {
13541 return hour >= 11 ? hour : hour + 12;
13542 } else if (meridiem === '下午' || meridiem === '晚上') {
13543 return hour + 12;
13544 }
13545 },
13546 meridiem : function (hour, minute, isLower) {
13547 var hm = hour * 100 + minute;
13548 if (hm < 600) {
13549 return '凌晨';
13550 } else if (hm < 900) {
13551 return '早上';
13552 } else if (hm < 1130) {
13553 return '上午';
13554 } else if (hm < 1230) {
13555 return '中午';
13556 } else if (hm < 1800) {
13557 return '下午';
13558 } else {
13559 return '晚上';
13560 }
13561 },
13562 calendar : {
13563 sameDay : '[今天]LT',
13564 nextDay : '[明天]LT',
13565 nextWeek : '[下]ddddLT',
13566 lastDay : '[昨天]LT',
13567 lastWeek : '[上]ddddLT',
13568 sameElse : 'L'
13569 },
13570 dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
13571 ordinal : function (number, period) {
13572 switch (period) {
13573 case 'd' :
13574 case 'D' :
13575 case 'DDD' :
13576 return number + '日';
13577 case 'M' :
13578 return number + '月';
13579 case 'w' :
13580 case 'W' :
13581 return number + '週';
13582 default :
13583 return number;
13584 }
13585 },
13586 relativeTime : {
13587 future : '%s內',
13588 past : '%s前',
13589 s : '幾秒',
13590 m : '1 分鐘',
13591 mm : '%d 分鐘',
13592 h : '1 小時',
13593 hh : '%d 小時',
13594 d : '1 天',
13595 dd : '%d 天',
13596 M : '1 個月',
13597 MM : '%d 個月',
13598 y : '1 年',
13599 yy : '%d 年'
13600 }
13601 });
13602
13603 //! moment.js locale configuration
13604 //! locale : Chinese (Taiwan) [zh-tw]
13605 //! author : Ben : https://github.com/ben-lin
13606 //! author : Chris Lam : https://github.com/hehachris
13607
13608 hooks.defineLocale('zh-tw', {
13609 months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
13610 monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
13611 weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
13612 weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
13613 weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
13614 longDateFormat : {
13615 LT : 'HH:mm',
13616 LTS : 'HH:mm:ss',
13617 L : 'YYYY年MMMD日',
13618 LL : 'YYYY年MMMD日',
13619 LLL : 'YYYY年MMMD日 HH:mm',
13620 LLLL : 'YYYY年MMMD日dddd HH:mm',
13621 l : 'YYYY年MMMD日',
13622 ll : 'YYYY年MMMD日',
13623 lll : 'YYYY年MMMD日 HH:mm',
13624 llll : 'YYYY年MMMD日dddd HH:mm'
13625 },
13626 meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
13627 meridiemHour : function (hour, meridiem) {
13628 if (hour === 12) {
13629 hour = 0;
13630 }
13631 if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
13632 return hour;
13633 } else if (meridiem === '中午') {
13634 return hour >= 11 ? hour : hour + 12;
13635 } else if (meridiem === '下午' || meridiem === '晚上') {
13636 return hour + 12;
13637 }
13638 },
13639 meridiem : function (hour, minute, isLower) {
13640 var hm = hour * 100 + minute;
13641 if (hm < 600) {
13642 return '凌晨';
13643 } else if (hm < 900) {
13644 return '早上';
13645 } else if (hm < 1130) {
13646 return '上午';
13647 } else if (hm < 1230) {
13648 return '中午';
13649 } else if (hm < 1800) {
13650 return '下午';
13651 } else {
13652 return '晚上';
13653 }
13654 },
13655 calendar : {
13656 sameDay : '[今天]LT',
13657 nextDay : '[明天]LT',
13658 nextWeek : '[下]ddddLT',
13659 lastDay : '[昨天]LT',
13660 lastWeek : '[上]ddddLT',
13661 sameElse : 'L'
13662 },
13663 dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
13664 ordinal : function (number, period) {
13665 switch (period) {
13666 case 'd' :
13667 case 'D' :
13668 case 'DDD' :
13669 return number + '日';
13670 case 'M' :
13671 return number + '月';
13672 case 'w' :
13673 case 'W' :
13674 return number + '週';
13675 default :
13676 return number;
13677 }
13678 },
13679 relativeTime : {
13680 future : '%s內',
13681 past : '%s前',
13682 s : '幾秒',
13683 m : '1 分鐘',
13684 mm : '%d 分鐘',
13685 h : '1 小時',
13686 hh : '%d 小時',
13687 d : '1 天',
13688 dd : '%d 天',
13689 M : '1 個月',
13690 MM : '%d 個月',
13691 y : '1 年',
13692 yy : '%d 年'
13693 }
13694 });
13695
13696 hooks.locale('en');
13697
13698 return hooks;
13699
13700 })));