moment-with-locales.js (632739B)
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 ( 21 input instanceof Array || 22 Object.prototype.toString.call(input) === '[object Array]' 23 ); 24 } 25 26 function isObject(input) { 27 // IE8 will treat undefined and null as object if it wasn't for 28 // input != null 29 return ( 30 input != null && 31 Object.prototype.toString.call(input) === '[object Object]' 32 ); 33 } 34 35 function hasOwnProp(a, b) { 36 return Object.prototype.hasOwnProperty.call(a, b); 37 } 38 39 function isObjectEmpty(obj) { 40 if (Object.getOwnPropertyNames) { 41 return Object.getOwnPropertyNames(obj).length === 0; 42 } else { 43 var k; 44 for (k in obj) { 45 if (hasOwnProp(obj, k)) { 46 return false; 47 } 48 } 49 return true; 50 } 51 } 52 53 function isUndefined(input) { 54 return input === void 0; 55 } 56 57 function isNumber(input) { 58 return ( 59 typeof input === 'number' || 60 Object.prototype.toString.call(input) === '[object Number]' 61 ); 62 } 63 64 function isDate(input) { 65 return ( 66 input instanceof Date || 67 Object.prototype.toString.call(input) === '[object Date]' 68 ); 69 } 70 71 function map(arr, fn) { 72 var res = [], 73 i, 74 arrLen = arr.length; 75 for (i = 0; i < arrLen; ++i) { 76 res.push(fn(arr[i], i)); 77 } 78 return res; 79 } 80 81 function extend(a, b) { 82 for (var i in b) { 83 if (hasOwnProp(b, i)) { 84 a[i] = b[i]; 85 } 86 } 87 88 if (hasOwnProp(b, 'toString')) { 89 a.toString = b.toString; 90 } 91 92 if (hasOwnProp(b, 'valueOf')) { 93 a.valueOf = b.valueOf; 94 } 95 96 return a; 97 } 98 99 function createUTC(input, format, locale, strict) { 100 return createLocalOrUTC(input, format, locale, strict, true).utc(); 101 } 102 103 function defaultParsingFlags() { 104 // We need to deep clone this object. 105 return { 106 empty: false, 107 unusedTokens: [], 108 unusedInput: [], 109 overflow: -2, 110 charsLeftOver: 0, 111 nullInput: false, 112 invalidEra: null, 113 invalidMonth: null, 114 invalidFormat: false, 115 userInvalidated: false, 116 iso: false, 117 parsedDateParts: [], 118 era: null, 119 meridiem: null, 120 rfc2822: false, 121 weekdayMismatch: false, 122 }; 123 } 124 125 function getParsingFlags(m) { 126 if (m._pf == null) { 127 m._pf = defaultParsingFlags(); 128 } 129 return m._pf; 130 } 131 132 var some; 133 if (Array.prototype.some) { 134 some = Array.prototype.some; 135 } else { 136 some = function (fun) { 137 var t = Object(this), 138 len = t.length >>> 0, 139 i; 140 141 for (i = 0; i < len; i++) { 142 if (i in t && fun.call(this, t[i], i, t)) { 143 return true; 144 } 145 } 146 147 return false; 148 }; 149 } 150 151 function isValid(m) { 152 var flags = null, 153 parsedParts = false, 154 isNowValid = m._d && !isNaN(m._d.getTime()); 155 if (isNowValid) { 156 flags = getParsingFlags(m); 157 parsedParts = some.call(flags.parsedDateParts, function (i) { 158 return i != null; 159 }); 160 isNowValid = 161 flags.overflow < 0 && 162 !flags.empty && 163 !flags.invalidEra && 164 !flags.invalidMonth && 165 !flags.invalidWeekday && 166 !flags.weekdayMismatch && 167 !flags.nullInput && 168 !flags.invalidFormat && 169 !flags.userInvalidated && 170 (!flags.meridiem || (flags.meridiem && parsedParts)); 171 if (m._strict) { 172 isNowValid = 173 isNowValid && 174 flags.charsLeftOver === 0 && 175 flags.unusedTokens.length === 0 && 176 flags.bigHour === undefined; 177 } 178 } 179 if (Object.isFrozen == null || !Object.isFrozen(m)) { 180 m._isValid = isNowValid; 181 } else { 182 return isNowValid; 183 } 184 return m._isValid; 185 } 186 187 function createInvalid(flags) { 188 var m = createUTC(NaN); 189 if (flags != null) { 190 extend(getParsingFlags(m), flags); 191 } else { 192 getParsingFlags(m).userInvalidated = true; 193 } 194 195 return m; 196 } 197 198 // Plugins that add properties should also add the key here (null value), 199 // so we can properly clone ourselves. 200 var momentProperties = (hooks.momentProperties = []), 201 updateInProgress = false; 202 203 function copyConfig(to, from) { 204 var i, 205 prop, 206 val, 207 momentPropertiesLen = momentProperties.length; 208 209 if (!isUndefined(from._isAMomentObject)) { 210 to._isAMomentObject = from._isAMomentObject; 211 } 212 if (!isUndefined(from._i)) { 213 to._i = from._i; 214 } 215 if (!isUndefined(from._f)) { 216 to._f = from._f; 217 } 218 if (!isUndefined(from._l)) { 219 to._l = from._l; 220 } 221 if (!isUndefined(from._strict)) { 222 to._strict = from._strict; 223 } 224 if (!isUndefined(from._tzm)) { 225 to._tzm = from._tzm; 226 } 227 if (!isUndefined(from._isUTC)) { 228 to._isUTC = from._isUTC; 229 } 230 if (!isUndefined(from._offset)) { 231 to._offset = from._offset; 232 } 233 if (!isUndefined(from._pf)) { 234 to._pf = getParsingFlags(from); 235 } 236 if (!isUndefined(from._locale)) { 237 to._locale = from._locale; 238 } 239 240 if (momentPropertiesLen > 0) { 241 for (i = 0; i < momentPropertiesLen; i++) { 242 prop = momentProperties[i]; 243 val = from[prop]; 244 if (!isUndefined(val)) { 245 to[prop] = val; 246 } 247 } 248 } 249 250 return to; 251 } 252 253 // Moment prototype object 254 function Moment(config) { 255 copyConfig(this, config); 256 this._d = new Date(config._d != null ? config._d.getTime() : NaN); 257 if (!this.isValid()) { 258 this._d = new Date(NaN); 259 } 260 // Prevent infinite loop in case updateOffset creates new moment 261 // objects. 262 if (updateInProgress === false) { 263 updateInProgress = true; 264 hooks.updateOffset(this); 265 updateInProgress = false; 266 } 267 } 268 269 function isMoment(obj) { 270 return ( 271 obj instanceof Moment || (obj != null && obj._isAMomentObject != null) 272 ); 273 } 274 275 function warn(msg) { 276 if ( 277 hooks.suppressDeprecationWarnings === false && 278 typeof console !== 'undefined' && 279 console.warn 280 ) { 281 console.warn('Deprecation warning: ' + msg); 282 } 283 } 284 285 function deprecate(msg, fn) { 286 var firstTime = true; 287 288 return extend(function () { 289 if (hooks.deprecationHandler != null) { 290 hooks.deprecationHandler(null, msg); 291 } 292 if (firstTime) { 293 var args = [], 294 arg, 295 i, 296 key, 297 argLen = arguments.length; 298 for (i = 0; i < argLen; i++) { 299 arg = ''; 300 if (typeof arguments[i] === 'object') { 301 arg += '\n[' + i + '] '; 302 for (key in arguments[0]) { 303 if (hasOwnProp(arguments[0], key)) { 304 arg += key + ': ' + arguments[0][key] + ', '; 305 } 306 } 307 arg = arg.slice(0, -2); // Remove trailing comma and space 308 } else { 309 arg = arguments[i]; 310 } 311 args.push(arg); 312 } 313 warn( 314 msg + 315 '\nArguments: ' + 316 Array.prototype.slice.call(args).join('') + 317 '\n' + 318 new Error().stack 319 ); 320 firstTime = false; 321 } 322 return fn.apply(this, arguments); 323 }, fn); 324 } 325 326 var deprecations = {}; 327 328 function deprecateSimple(name, msg) { 329 if (hooks.deprecationHandler != null) { 330 hooks.deprecationHandler(name, msg); 331 } 332 if (!deprecations[name]) { 333 warn(msg); 334 deprecations[name] = true; 335 } 336 } 337 338 hooks.suppressDeprecationWarnings = false; 339 hooks.deprecationHandler = null; 340 341 function isFunction(input) { 342 return ( 343 (typeof Function !== 'undefined' && input instanceof Function) || 344 Object.prototype.toString.call(input) === '[object Function]' 345 ); 346 } 347 348 function set(config) { 349 var prop, i; 350 for (i in config) { 351 if (hasOwnProp(config, i)) { 352 prop = config[i]; 353 if (isFunction(prop)) { 354 this[i] = prop; 355 } else { 356 this['_' + i] = prop; 357 } 358 } 359 } 360 this._config = config; 361 // Lenient ordinal parsing accepts just a number in addition to 362 // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. 363 // TODO: Remove "ordinalParse" fallback in next major release. 364 this._dayOfMonthOrdinalParseLenient = new RegExp( 365 (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + 366 '|' + 367 /\d{1,2}/.source 368 ); 369 } 370 371 function mergeConfigs(parentConfig, childConfig) { 372 var res = extend({}, parentConfig), 373 prop; 374 for (prop in childConfig) { 375 if (hasOwnProp(childConfig, prop)) { 376 if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { 377 res[prop] = {}; 378 extend(res[prop], parentConfig[prop]); 379 extend(res[prop], childConfig[prop]); 380 } else if (childConfig[prop] != null) { 381 res[prop] = childConfig[prop]; 382 } else { 383 delete res[prop]; 384 } 385 } 386 } 387 for (prop in parentConfig) { 388 if ( 389 hasOwnProp(parentConfig, prop) && 390 !hasOwnProp(childConfig, prop) && 391 isObject(parentConfig[prop]) 392 ) { 393 // make sure changes to properties don't modify parent config 394 res[prop] = extend({}, res[prop]); 395 } 396 } 397 return res; 398 } 399 400 function Locale(config) { 401 if (config != null) { 402 this.set(config); 403 } 404 } 405 406 var keys; 407 408 if (Object.keys) { 409 keys = Object.keys; 410 } else { 411 keys = function (obj) { 412 var i, 413 res = []; 414 for (i in obj) { 415 if (hasOwnProp(obj, i)) { 416 res.push(i); 417 } 418 } 419 return res; 420 }; 421 } 422 423 var defaultCalendar = { 424 sameDay: '[Today at] LT', 425 nextDay: '[Tomorrow at] LT', 426 nextWeek: 'dddd [at] LT', 427 lastDay: '[Yesterday at] LT', 428 lastWeek: '[Last] dddd [at] LT', 429 sameElse: 'L', 430 }; 431 432 function calendar(key, mom, now) { 433 var output = this._calendar[key] || this._calendar['sameElse']; 434 return isFunction(output) ? output.call(mom, now) : output; 435 } 436 437 function zeroFill(number, targetLength, forceSign) { 438 var absNumber = '' + Math.abs(number), 439 zerosToFill = targetLength - absNumber.length, 440 sign = number >= 0; 441 return ( 442 (sign ? (forceSign ? '+' : '') : '-') + 443 Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + 444 absNumber 445 ); 446 } 447 448 var formattingTokens = 449 /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, 450 localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, 451 formatFunctions = {}, 452 formatTokenFunctions = {}; 453 454 // token: 'M' 455 // padded: ['MM', 2] 456 // ordinal: 'Mo' 457 // callback: function () { this.month() + 1 } 458 function addFormatToken(token, padded, ordinal, callback) { 459 var func = callback; 460 if (typeof callback === 'string') { 461 func = function () { 462 return this[callback](); 463 }; 464 } 465 if (token) { 466 formatTokenFunctions[token] = func; 467 } 468 if (padded) { 469 formatTokenFunctions[padded[0]] = function () { 470 return zeroFill(func.apply(this, arguments), padded[1], padded[2]); 471 }; 472 } 473 if (ordinal) { 474 formatTokenFunctions[ordinal] = function () { 475 return this.localeData().ordinal( 476 func.apply(this, arguments), 477 token 478 ); 479 }; 480 } 481 } 482 483 function removeFormattingTokens(input) { 484 if (input.match(/\[[\s\S]/)) { 485 return input.replace(/^\[|\]$/g, ''); 486 } 487 return input.replace(/\\/g, ''); 488 } 489 490 function makeFormatFunction(format) { 491 var array = format.match(formattingTokens), 492 i, 493 length; 494 495 for (i = 0, length = array.length; i < length; i++) { 496 if (formatTokenFunctions[array[i]]) { 497 array[i] = formatTokenFunctions[array[i]]; 498 } else { 499 array[i] = removeFormattingTokens(array[i]); 500 } 501 } 502 503 return function (mom) { 504 var output = '', 505 i; 506 for (i = 0; i < length; i++) { 507 output += isFunction(array[i]) 508 ? array[i].call(mom, format) 509 : array[i]; 510 } 511 return output; 512 }; 513 } 514 515 // format date using native date object 516 function formatMoment(m, format) { 517 if (!m.isValid()) { 518 return m.localeData().invalidDate(); 519 } 520 521 format = expandFormat(format, m.localeData()); 522 formatFunctions[format] = 523 formatFunctions[format] || makeFormatFunction(format); 524 525 return formatFunctions[format](m); 526 } 527 528 function expandFormat(format, locale) { 529 var i = 5; 530 531 function replaceLongDateFormatTokens(input) { 532 return locale.longDateFormat(input) || input; 533 } 534 535 localFormattingTokens.lastIndex = 0; 536 while (i >= 0 && localFormattingTokens.test(format)) { 537 format = format.replace( 538 localFormattingTokens, 539 replaceLongDateFormatTokens 540 ); 541 localFormattingTokens.lastIndex = 0; 542 i -= 1; 543 } 544 545 return format; 546 } 547 548 var defaultLongDateFormat = { 549 LTS: 'h:mm:ss A', 550 LT: 'h:mm A', 551 L: 'MM/DD/YYYY', 552 LL: 'MMMM D, YYYY', 553 LLL: 'MMMM D, YYYY h:mm A', 554 LLLL: 'dddd, MMMM D, YYYY h:mm A', 555 }; 556 557 function longDateFormat(key) { 558 var format = this._longDateFormat[key], 559 formatUpper = this._longDateFormat[key.toUpperCase()]; 560 561 if (format || !formatUpper) { 562 return format; 563 } 564 565 this._longDateFormat[key] = formatUpper 566 .match(formattingTokens) 567 .map(function (tok) { 568 if ( 569 tok === 'MMMM' || 570 tok === 'MM' || 571 tok === 'DD' || 572 tok === 'dddd' 573 ) { 574 return tok.slice(1); 575 } 576 return tok; 577 }) 578 .join(''); 579 580 return this._longDateFormat[key]; 581 } 582 583 var defaultInvalidDate = 'Invalid date'; 584 585 function invalidDate() { 586 return this._invalidDate; 587 } 588 589 var defaultOrdinal = '%d', 590 defaultDayOfMonthOrdinalParse = /\d{1,2}/; 591 592 function ordinal(number) { 593 return this._ordinal.replace('%d', number); 594 } 595 596 var defaultRelativeTime = { 597 future: 'in %s', 598 past: '%s ago', 599 s: 'a few seconds', 600 ss: '%d seconds', 601 m: 'a minute', 602 mm: '%d minutes', 603 h: 'an hour', 604 hh: '%d hours', 605 d: 'a day', 606 dd: '%d days', 607 w: 'a week', 608 ww: '%d weeks', 609 M: 'a month', 610 MM: '%d months', 611 y: 'a year', 612 yy: '%d years', 613 }; 614 615 function relativeTime(number, withoutSuffix, string, isFuture) { 616 var output = this._relativeTime[string]; 617 return isFunction(output) 618 ? output(number, withoutSuffix, string, isFuture) 619 : output.replace(/%d/i, number); 620 } 621 622 function pastFuture(diff, output) { 623 var format = this._relativeTime[diff > 0 ? 'future' : 'past']; 624 return isFunction(format) ? format(output) : format.replace(/%s/i, output); 625 } 626 627 var aliases = { 628 D: 'date', 629 dates: 'date', 630 date: 'date', 631 d: 'day', 632 days: 'day', 633 day: 'day', 634 e: 'weekday', 635 weekdays: 'weekday', 636 weekday: 'weekday', 637 E: 'isoWeekday', 638 isoweekdays: 'isoWeekday', 639 isoweekday: 'isoWeekday', 640 DDD: 'dayOfYear', 641 dayofyears: 'dayOfYear', 642 dayofyear: 'dayOfYear', 643 h: 'hour', 644 hours: 'hour', 645 hour: 'hour', 646 ms: 'millisecond', 647 milliseconds: 'millisecond', 648 millisecond: 'millisecond', 649 m: 'minute', 650 minutes: 'minute', 651 minute: 'minute', 652 M: 'month', 653 months: 'month', 654 month: 'month', 655 Q: 'quarter', 656 quarters: 'quarter', 657 quarter: 'quarter', 658 s: 'second', 659 seconds: 'second', 660 second: 'second', 661 gg: 'weekYear', 662 weekyears: 'weekYear', 663 weekyear: 'weekYear', 664 GG: 'isoWeekYear', 665 isoweekyears: 'isoWeekYear', 666 isoweekyear: 'isoWeekYear', 667 w: 'week', 668 weeks: 'week', 669 week: 'week', 670 W: 'isoWeek', 671 isoweeks: 'isoWeek', 672 isoweek: 'isoWeek', 673 y: 'year', 674 years: 'year', 675 year: 'year', 676 }; 677 678 function normalizeUnits(units) { 679 return typeof units === 'string' 680 ? aliases[units] || aliases[units.toLowerCase()] 681 : undefined; 682 } 683 684 function normalizeObjectUnits(inputObject) { 685 var normalizedInput = {}, 686 normalizedProp, 687 prop; 688 689 for (prop in inputObject) { 690 if (hasOwnProp(inputObject, prop)) { 691 normalizedProp = normalizeUnits(prop); 692 if (normalizedProp) { 693 normalizedInput[normalizedProp] = inputObject[prop]; 694 } 695 } 696 } 697 698 return normalizedInput; 699 } 700 701 var priorities = { 702 date: 9, 703 day: 11, 704 weekday: 11, 705 isoWeekday: 11, 706 dayOfYear: 4, 707 hour: 13, 708 millisecond: 16, 709 minute: 14, 710 month: 8, 711 quarter: 7, 712 second: 15, 713 weekYear: 1, 714 isoWeekYear: 1, 715 week: 5, 716 isoWeek: 5, 717 year: 1, 718 }; 719 720 function getPrioritizedUnits(unitsObj) { 721 var units = [], 722 u; 723 for (u in unitsObj) { 724 if (hasOwnProp(unitsObj, u)) { 725 units.push({ unit: u, priority: priorities[u] }); 726 } 727 } 728 units.sort(function (a, b) { 729 return a.priority - b.priority; 730 }); 731 return units; 732 } 733 734 var match1 = /\d/, // 0 - 9 735 match2 = /\d\d/, // 00 - 99 736 match3 = /\d{3}/, // 000 - 999 737 match4 = /\d{4}/, // 0000 - 9999 738 match6 = /[+-]?\d{6}/, // -999999 - 999999 739 match1to2 = /\d\d?/, // 0 - 99 740 match3to4 = /\d\d\d\d?/, // 999 - 9999 741 match5to6 = /\d\d\d\d\d\d?/, // 99999 - 999999 742 match1to3 = /\d{1,3}/, // 0 - 999 743 match1to4 = /\d{1,4}/, // 0 - 9999 744 match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999 745 matchUnsigned = /\d+/, // 0 - inf 746 matchSigned = /[+-]?\d+/, // -inf - inf 747 matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z 748 matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z 749 matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 750 // any word (or two) characters or numbers including two/three word month in arabic. 751 // includes scottish gaelic two word and hyphenated months 752 matchWord = 753 /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i, 754 match1to2NoLeadingZero = /^[1-9]\d?/, // 1-99 755 match1to2HasZero = /^([1-9]\d|\d)/, // 0-99 756 regexes; 757 758 regexes = {}; 759 760 function addRegexToken(token, regex, strictRegex) { 761 regexes[token] = isFunction(regex) 762 ? regex 763 : function (isStrict, localeData) { 764 return isStrict && strictRegex ? strictRegex : regex; 765 }; 766 } 767 768 function getParseRegexForToken(token, config) { 769 if (!hasOwnProp(regexes, token)) { 770 return new RegExp(unescapeFormat(token)); 771 } 772 773 return regexes[token](config._strict, config._locale); 774 } 775 776 // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript 777 function unescapeFormat(s) { 778 return regexEscape( 779 s 780 .replace('\\', '') 781 .replace( 782 /\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, 783 function (matched, p1, p2, p3, p4) { 784 return p1 || p2 || p3 || p4; 785 } 786 ) 787 ); 788 } 789 790 function regexEscape(s) { 791 return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); 792 } 793 794 function absFloor(number) { 795 if (number < 0) { 796 // -0 -> 0 797 return Math.ceil(number) || 0; 798 } else { 799 return Math.floor(number); 800 } 801 } 802 803 function toInt(argumentForCoercion) { 804 var coercedNumber = +argumentForCoercion, 805 value = 0; 806 807 if (coercedNumber !== 0 && isFinite(coercedNumber)) { 808 value = absFloor(coercedNumber); 809 } 810 811 return value; 812 } 813 814 var tokens = {}; 815 816 function addParseToken(token, callback) { 817 var i, 818 func = callback, 819 tokenLen; 820 if (typeof token === 'string') { 821 token = [token]; 822 } 823 if (isNumber(callback)) { 824 func = function (input, array) { 825 array[callback] = toInt(input); 826 }; 827 } 828 tokenLen = token.length; 829 for (i = 0; i < tokenLen; i++) { 830 tokens[token[i]] = func; 831 } 832 } 833 834 function addWeekParseToken(token, callback) { 835 addParseToken(token, function (input, array, config, token) { 836 config._w = config._w || {}; 837 callback(input, config._w, config, token); 838 }); 839 } 840 841 function addTimeToArrayFromToken(token, input, config) { 842 if (input != null && hasOwnProp(tokens, token)) { 843 tokens[token](input, config._a, config, token); 844 } 845 } 846 847 function isLeapYear(year) { 848 return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; 849 } 850 851 var YEAR = 0, 852 MONTH = 1, 853 DATE = 2, 854 HOUR = 3, 855 MINUTE = 4, 856 SECOND = 5, 857 MILLISECOND = 6, 858 WEEK = 7, 859 WEEKDAY = 8; 860 861 // FORMATTING 862 863 addFormatToken('Y', 0, 0, function () { 864 var y = this.year(); 865 return y <= 9999 ? zeroFill(y, 4) : '+' + y; 866 }); 867 868 addFormatToken(0, ['YY', 2], 0, function () { 869 return this.year() % 100; 870 }); 871 872 addFormatToken(0, ['YYYY', 4], 0, 'year'); 873 addFormatToken(0, ['YYYYY', 5], 0, 'year'); 874 addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); 875 876 // PARSING 877 878 addRegexToken('Y', matchSigned); 879 addRegexToken('YY', match1to2, match2); 880 addRegexToken('YYYY', match1to4, match4); 881 addRegexToken('YYYYY', match1to6, match6); 882 addRegexToken('YYYYYY', match1to6, match6); 883 884 addParseToken(['YYYYY', 'YYYYYY'], YEAR); 885 addParseToken('YYYY', function (input, array) { 886 array[YEAR] = 887 input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); 888 }); 889 addParseToken('YY', function (input, array) { 890 array[YEAR] = hooks.parseTwoDigitYear(input); 891 }); 892 addParseToken('Y', function (input, array) { 893 array[YEAR] = parseInt(input, 10); 894 }); 895 896 // HELPERS 897 898 function daysInYear(year) { 899 return isLeapYear(year) ? 366 : 365; 900 } 901 902 // HOOKS 903 904 hooks.parseTwoDigitYear = function (input) { 905 return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); 906 }; 907 908 // MOMENTS 909 910 var getSetYear = makeGetSet('FullYear', true); 911 912 function getIsLeapYear() { 913 return isLeapYear(this.year()); 914 } 915 916 function makeGetSet(unit, keepTime) { 917 return function (value) { 918 if (value != null) { 919 set$1(this, unit, value); 920 hooks.updateOffset(this, keepTime); 921 return this; 922 } else { 923 return get(this, unit); 924 } 925 }; 926 } 927 928 function get(mom, unit) { 929 if (!mom.isValid()) { 930 return NaN; 931 } 932 933 var d = mom._d, 934 isUTC = mom._isUTC; 935 936 switch (unit) { 937 case 'Milliseconds': 938 return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds(); 939 case 'Seconds': 940 return isUTC ? d.getUTCSeconds() : d.getSeconds(); 941 case 'Minutes': 942 return isUTC ? d.getUTCMinutes() : d.getMinutes(); 943 case 'Hours': 944 return isUTC ? d.getUTCHours() : d.getHours(); 945 case 'Date': 946 return isUTC ? d.getUTCDate() : d.getDate(); 947 case 'Day': 948 return isUTC ? d.getUTCDay() : d.getDay(); 949 case 'Month': 950 return isUTC ? d.getUTCMonth() : d.getMonth(); 951 case 'FullYear': 952 return isUTC ? d.getUTCFullYear() : d.getFullYear(); 953 default: 954 return NaN; // Just in case 955 } 956 } 957 958 function set$1(mom, unit, value) { 959 var d, isUTC, year, month, date; 960 961 if (!mom.isValid() || isNaN(value)) { 962 return; 963 } 964 965 d = mom._d; 966 isUTC = mom._isUTC; 967 968 switch (unit) { 969 case 'Milliseconds': 970 return void (isUTC 971 ? d.setUTCMilliseconds(value) 972 : d.setMilliseconds(value)); 973 case 'Seconds': 974 return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value)); 975 case 'Minutes': 976 return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value)); 977 case 'Hours': 978 return void (isUTC ? d.setUTCHours(value) : d.setHours(value)); 979 case 'Date': 980 return void (isUTC ? d.setUTCDate(value) : d.setDate(value)); 981 // case 'Day': // Not real 982 // return void (isUTC ? d.setUTCDay(value) : d.setDay(value)); 983 // case 'Month': // Not used because we need to pass two variables 984 // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value)); 985 case 'FullYear': 986 break; // See below ... 987 default: 988 return; // Just in case 989 } 990 991 year = value; 992 month = mom.month(); 993 date = mom.date(); 994 date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date; 995 void (isUTC 996 ? d.setUTCFullYear(year, month, date) 997 : d.setFullYear(year, month, date)); 998 } 999 1000 // MOMENTS 1001 1002 function stringGet(units) { 1003 units = normalizeUnits(units); 1004 if (isFunction(this[units])) { 1005 return this[units](); 1006 } 1007 return this; 1008 } 1009 1010 function stringSet(units, value) { 1011 if (typeof units === 'object') { 1012 units = normalizeObjectUnits(units); 1013 var prioritized = getPrioritizedUnits(units), 1014 i, 1015 prioritizedLen = prioritized.length; 1016 for (i = 0; i < prioritizedLen; i++) { 1017 this[prioritized[i].unit](units[prioritized[i].unit]); 1018 } 1019 } else { 1020 units = normalizeUnits(units); 1021 if (isFunction(this[units])) { 1022 return this[units](value); 1023 } 1024 } 1025 return this; 1026 } 1027 1028 function mod(n, x) { 1029 return ((n % x) + x) % x; 1030 } 1031 1032 var indexOf; 1033 1034 if (Array.prototype.indexOf) { 1035 indexOf = Array.prototype.indexOf; 1036 } else { 1037 indexOf = function (o) { 1038 // I know 1039 var i; 1040 for (i = 0; i < this.length; ++i) { 1041 if (this[i] === o) { 1042 return i; 1043 } 1044 } 1045 return -1; 1046 }; 1047 } 1048 1049 function daysInMonth(year, month) { 1050 if (isNaN(year) || isNaN(month)) { 1051 return NaN; 1052 } 1053 var modMonth = mod(month, 12); 1054 year += (month - modMonth) / 12; 1055 return modMonth === 1 1056 ? isLeapYear(year) 1057 ? 29 1058 : 28 1059 : 31 - ((modMonth % 7) % 2); 1060 } 1061 1062 // FORMATTING 1063 1064 addFormatToken('M', ['MM', 2], 'Mo', function () { 1065 return this.month() + 1; 1066 }); 1067 1068 addFormatToken('MMM', 0, 0, function (format) { 1069 return this.localeData().monthsShort(this, format); 1070 }); 1071 1072 addFormatToken('MMMM', 0, 0, function (format) { 1073 return this.localeData().months(this, format); 1074 }); 1075 1076 // PARSING 1077 1078 addRegexToken('M', match1to2, match1to2NoLeadingZero); 1079 addRegexToken('MM', match1to2, match2); 1080 addRegexToken('MMM', function (isStrict, locale) { 1081 return locale.monthsShortRegex(isStrict); 1082 }); 1083 addRegexToken('MMMM', function (isStrict, locale) { 1084 return locale.monthsRegex(isStrict); 1085 }); 1086 1087 addParseToken(['M', 'MM'], function (input, array) { 1088 array[MONTH] = toInt(input) - 1; 1089 }); 1090 1091 addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { 1092 var month = config._locale.monthsParse(input, token, config._strict); 1093 // if we didn't find a month name, mark the date as invalid. 1094 if (month != null) { 1095 array[MONTH] = month; 1096 } else { 1097 getParsingFlags(config).invalidMonth = input; 1098 } 1099 }); 1100 1101 // LOCALES 1102 1103 var defaultLocaleMonths = 1104 'January_February_March_April_May_June_July_August_September_October_November_December'.split( 1105 '_' 1106 ), 1107 defaultLocaleMonthsShort = 1108 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), 1109 MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, 1110 defaultMonthsShortRegex = matchWord, 1111 defaultMonthsRegex = matchWord; 1112 1113 function localeMonths(m, format) { 1114 if (!m) { 1115 return isArray(this._months) 1116 ? this._months 1117 : this._months['standalone']; 1118 } 1119 return isArray(this._months) 1120 ? this._months[m.month()] 1121 : this._months[ 1122 (this._months.isFormat || MONTHS_IN_FORMAT).test(format) 1123 ? 'format' 1124 : 'standalone' 1125 ][m.month()]; 1126 } 1127 1128 function localeMonthsShort(m, format) { 1129 if (!m) { 1130 return isArray(this._monthsShort) 1131 ? this._monthsShort 1132 : this._monthsShort['standalone']; 1133 } 1134 return isArray(this._monthsShort) 1135 ? this._monthsShort[m.month()] 1136 : this._monthsShort[ 1137 MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone' 1138 ][m.month()]; 1139 } 1140 1141 function handleStrictParse(monthName, format, strict) { 1142 var i, 1143 ii, 1144 mom, 1145 llc = monthName.toLocaleLowerCase(); 1146 if (!this._monthsParse) { 1147 // this is not used 1148 this._monthsParse = []; 1149 this._longMonthsParse = []; 1150 this._shortMonthsParse = []; 1151 for (i = 0; i < 12; ++i) { 1152 mom = createUTC([2000, i]); 1153 this._shortMonthsParse[i] = this.monthsShort( 1154 mom, 1155 '' 1156 ).toLocaleLowerCase(); 1157 this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); 1158 } 1159 } 1160 1161 if (strict) { 1162 if (format === 'MMM') { 1163 ii = indexOf.call(this._shortMonthsParse, llc); 1164 return ii !== -1 ? ii : null; 1165 } else { 1166 ii = indexOf.call(this._longMonthsParse, llc); 1167 return ii !== -1 ? ii : null; 1168 } 1169 } else { 1170 if (format === 'MMM') { 1171 ii = indexOf.call(this._shortMonthsParse, llc); 1172 if (ii !== -1) { 1173 return ii; 1174 } 1175 ii = indexOf.call(this._longMonthsParse, llc); 1176 return ii !== -1 ? ii : null; 1177 } else { 1178 ii = indexOf.call(this._longMonthsParse, llc); 1179 if (ii !== -1) { 1180 return ii; 1181 } 1182 ii = indexOf.call(this._shortMonthsParse, llc); 1183 return ii !== -1 ? ii : null; 1184 } 1185 } 1186 } 1187 1188 function localeMonthsParse(monthName, format, strict) { 1189 var i, mom, regex; 1190 1191 if (this._monthsParseExact) { 1192 return handleStrictParse.call(this, monthName, format, strict); 1193 } 1194 1195 if (!this._monthsParse) { 1196 this._monthsParse = []; 1197 this._longMonthsParse = []; 1198 this._shortMonthsParse = []; 1199 } 1200 1201 // TODO: add sorting 1202 // Sorting makes sure if one month (or abbr) is a prefix of another 1203 // see sorting in computeMonthsParse 1204 for (i = 0; i < 12; i++) { 1205 // make the regex if we don't have it already 1206 mom = createUTC([2000, i]); 1207 if (strict && !this._longMonthsParse[i]) { 1208 this._longMonthsParse[i] = new RegExp( 1209 '^' + this.months(mom, '').replace('.', '') + '$', 1210 'i' 1211 ); 1212 this._shortMonthsParse[i] = new RegExp( 1213 '^' + this.monthsShort(mom, '').replace('.', '') + '$', 1214 'i' 1215 ); 1216 } 1217 if (!strict && !this._monthsParse[i]) { 1218 regex = 1219 '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); 1220 this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); 1221 } 1222 // test the regex 1223 if ( 1224 strict && 1225 format === 'MMMM' && 1226 this._longMonthsParse[i].test(monthName) 1227 ) { 1228 return i; 1229 } else if ( 1230 strict && 1231 format === 'MMM' && 1232 this._shortMonthsParse[i].test(monthName) 1233 ) { 1234 return i; 1235 } else if (!strict && this._monthsParse[i].test(monthName)) { 1236 return i; 1237 } 1238 } 1239 } 1240 1241 // MOMENTS 1242 1243 function setMonth(mom, value) { 1244 if (!mom.isValid()) { 1245 // No op 1246 return mom; 1247 } 1248 1249 if (typeof value === 'string') { 1250 if (/^\d+$/.test(value)) { 1251 value = toInt(value); 1252 } else { 1253 value = mom.localeData().monthsParse(value); 1254 // TODO: Another silent failure? 1255 if (!isNumber(value)) { 1256 return mom; 1257 } 1258 } 1259 } 1260 1261 var month = value, 1262 date = mom.date(); 1263 1264 date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month)); 1265 void (mom._isUTC 1266 ? mom._d.setUTCMonth(month, date) 1267 : mom._d.setMonth(month, date)); 1268 return mom; 1269 } 1270 1271 function getSetMonth(value) { 1272 if (value != null) { 1273 setMonth(this, value); 1274 hooks.updateOffset(this, true); 1275 return this; 1276 } else { 1277 return get(this, 'Month'); 1278 } 1279 } 1280 1281 function getDaysInMonth() { 1282 return daysInMonth(this.year(), this.month()); 1283 } 1284 1285 function monthsShortRegex(isStrict) { 1286 if (this._monthsParseExact) { 1287 if (!hasOwnProp(this, '_monthsRegex')) { 1288 computeMonthsParse.call(this); 1289 } 1290 if (isStrict) { 1291 return this._monthsShortStrictRegex; 1292 } else { 1293 return this._monthsShortRegex; 1294 } 1295 } else { 1296 if (!hasOwnProp(this, '_monthsShortRegex')) { 1297 this._monthsShortRegex = defaultMonthsShortRegex; 1298 } 1299 return this._monthsShortStrictRegex && isStrict 1300 ? this._monthsShortStrictRegex 1301 : this._monthsShortRegex; 1302 } 1303 } 1304 1305 function monthsRegex(isStrict) { 1306 if (this._monthsParseExact) { 1307 if (!hasOwnProp(this, '_monthsRegex')) { 1308 computeMonthsParse.call(this); 1309 } 1310 if (isStrict) { 1311 return this._monthsStrictRegex; 1312 } else { 1313 return this._monthsRegex; 1314 } 1315 } else { 1316 if (!hasOwnProp(this, '_monthsRegex')) { 1317 this._monthsRegex = defaultMonthsRegex; 1318 } 1319 return this._monthsStrictRegex && isStrict 1320 ? this._monthsStrictRegex 1321 : this._monthsRegex; 1322 } 1323 } 1324 1325 function computeMonthsParse() { 1326 function cmpLenRev(a, b) { 1327 return b.length - a.length; 1328 } 1329 1330 var shortPieces = [], 1331 longPieces = [], 1332 mixedPieces = [], 1333 i, 1334 mom, 1335 shortP, 1336 longP; 1337 for (i = 0; i < 12; i++) { 1338 // make the regex if we don't have it already 1339 mom = createUTC([2000, i]); 1340 shortP = regexEscape(this.monthsShort(mom, '')); 1341 longP = regexEscape(this.months(mom, '')); 1342 shortPieces.push(shortP); 1343 longPieces.push(longP); 1344 mixedPieces.push(longP); 1345 mixedPieces.push(shortP); 1346 } 1347 // Sorting makes sure if one month (or abbr) is a prefix of another it 1348 // will match the longer piece. 1349 shortPieces.sort(cmpLenRev); 1350 longPieces.sort(cmpLenRev); 1351 mixedPieces.sort(cmpLenRev); 1352 1353 this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); 1354 this._monthsShortRegex = this._monthsRegex; 1355 this._monthsStrictRegex = new RegExp( 1356 '^(' + longPieces.join('|') + ')', 1357 'i' 1358 ); 1359 this._monthsShortStrictRegex = new RegExp( 1360 '^(' + shortPieces.join('|') + ')', 1361 'i' 1362 ); 1363 } 1364 1365 function createDate(y, m, d, h, M, s, ms) { 1366 // can't just apply() to create a date: 1367 // https://stackoverflow.com/q/181348 1368 var date; 1369 // the date constructor remaps years 0-99 to 1900-1999 1370 if (y < 100 && y >= 0) { 1371 // preserve leap years using a full 400 year cycle, then reset 1372 date = new Date(y + 400, m, d, h, M, s, ms); 1373 if (isFinite(date.getFullYear())) { 1374 date.setFullYear(y); 1375 } 1376 } else { 1377 date = new Date(y, m, d, h, M, s, ms); 1378 } 1379 1380 return date; 1381 } 1382 1383 function createUTCDate(y) { 1384 var date, args; 1385 // the Date.UTC function remaps years 0-99 to 1900-1999 1386 if (y < 100 && y >= 0) { 1387 args = Array.prototype.slice.call(arguments); 1388 // preserve leap years using a full 400 year cycle, then reset 1389 args[0] = y + 400; 1390 date = new Date(Date.UTC.apply(null, args)); 1391 if (isFinite(date.getUTCFullYear())) { 1392 date.setUTCFullYear(y); 1393 } 1394 } else { 1395 date = new Date(Date.UTC.apply(null, arguments)); 1396 } 1397 1398 return date; 1399 } 1400 1401 // start-of-first-week - start-of-year 1402 function firstWeekOffset(year, dow, doy) { 1403 var // first-week day -- which january is always in the first week (4 for iso, 1 for other) 1404 fwd = 7 + dow - doy, 1405 // first-week day local weekday -- which local weekday is fwd 1406 fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; 1407 1408 return -fwdlw + fwd - 1; 1409 } 1410 1411 // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday 1412 function dayOfYearFromWeeks(year, week, weekday, dow, doy) { 1413 var localWeekday = (7 + weekday - dow) % 7, 1414 weekOffset = firstWeekOffset(year, dow, doy), 1415 dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, 1416 resYear, 1417 resDayOfYear; 1418 1419 if (dayOfYear <= 0) { 1420 resYear = year - 1; 1421 resDayOfYear = daysInYear(resYear) + dayOfYear; 1422 } else if (dayOfYear > daysInYear(year)) { 1423 resYear = year + 1; 1424 resDayOfYear = dayOfYear - daysInYear(year); 1425 } else { 1426 resYear = year; 1427 resDayOfYear = dayOfYear; 1428 } 1429 1430 return { 1431 year: resYear, 1432 dayOfYear: resDayOfYear, 1433 }; 1434 } 1435 1436 function weekOfYear(mom, dow, doy) { 1437 var weekOffset = firstWeekOffset(mom.year(), dow, doy), 1438 week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, 1439 resWeek, 1440 resYear; 1441 1442 if (week < 1) { 1443 resYear = mom.year() - 1; 1444 resWeek = week + weeksInYear(resYear, dow, doy); 1445 } else if (week > weeksInYear(mom.year(), dow, doy)) { 1446 resWeek = week - weeksInYear(mom.year(), dow, doy); 1447 resYear = mom.year() + 1; 1448 } else { 1449 resYear = mom.year(); 1450 resWeek = week; 1451 } 1452 1453 return { 1454 week: resWeek, 1455 year: resYear, 1456 }; 1457 } 1458 1459 function weeksInYear(year, dow, doy) { 1460 var weekOffset = firstWeekOffset(year, dow, doy), 1461 weekOffsetNext = firstWeekOffset(year + 1, dow, doy); 1462 return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; 1463 } 1464 1465 // FORMATTING 1466 1467 addFormatToken('w', ['ww', 2], 'wo', 'week'); 1468 addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); 1469 1470 // PARSING 1471 1472 addRegexToken('w', match1to2, match1to2NoLeadingZero); 1473 addRegexToken('ww', match1to2, match2); 1474 addRegexToken('W', match1to2, match1to2NoLeadingZero); 1475 addRegexToken('WW', match1to2, match2); 1476 1477 addWeekParseToken( 1478 ['w', 'ww', 'W', 'WW'], 1479 function (input, week, config, token) { 1480 week[token.substr(0, 1)] = toInt(input); 1481 } 1482 ); 1483 1484 // HELPERS 1485 1486 // LOCALES 1487 1488 function localeWeek(mom) { 1489 return weekOfYear(mom, this._week.dow, this._week.doy).week; 1490 } 1491 1492 var defaultLocaleWeek = { 1493 dow: 0, // Sunday is the first day of the week. 1494 doy: 6, // The week that contains Jan 6th is the first week of the year. 1495 }; 1496 1497 function localeFirstDayOfWeek() { 1498 return this._week.dow; 1499 } 1500 1501 function localeFirstDayOfYear() { 1502 return this._week.doy; 1503 } 1504 1505 // MOMENTS 1506 1507 function getSetWeek(input) { 1508 var week = this.localeData().week(this); 1509 return input == null ? week : this.add((input - week) * 7, 'd'); 1510 } 1511 1512 function getSetISOWeek(input) { 1513 var week = weekOfYear(this, 1, 4).week; 1514 return input == null ? week : this.add((input - week) * 7, 'd'); 1515 } 1516 1517 // FORMATTING 1518 1519 addFormatToken('d', 0, 'do', 'day'); 1520 1521 addFormatToken('dd', 0, 0, function (format) { 1522 return this.localeData().weekdaysMin(this, format); 1523 }); 1524 1525 addFormatToken('ddd', 0, 0, function (format) { 1526 return this.localeData().weekdaysShort(this, format); 1527 }); 1528 1529 addFormatToken('dddd', 0, 0, function (format) { 1530 return this.localeData().weekdays(this, format); 1531 }); 1532 1533 addFormatToken('e', 0, 0, 'weekday'); 1534 addFormatToken('E', 0, 0, 'isoWeekday'); 1535 1536 // PARSING 1537 1538 addRegexToken('d', match1to2); 1539 addRegexToken('e', match1to2); 1540 addRegexToken('E', match1to2); 1541 addRegexToken('dd', function (isStrict, locale) { 1542 return locale.weekdaysMinRegex(isStrict); 1543 }); 1544 addRegexToken('ddd', function (isStrict, locale) { 1545 return locale.weekdaysShortRegex(isStrict); 1546 }); 1547 addRegexToken('dddd', function (isStrict, locale) { 1548 return locale.weekdaysRegex(isStrict); 1549 }); 1550 1551 addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { 1552 var weekday = config._locale.weekdaysParse(input, token, config._strict); 1553 // if we didn't get a weekday name, mark the date as invalid 1554 if (weekday != null) { 1555 week.d = weekday; 1556 } else { 1557 getParsingFlags(config).invalidWeekday = input; 1558 } 1559 }); 1560 1561 addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { 1562 week[token] = toInt(input); 1563 }); 1564 1565 // HELPERS 1566 1567 function parseWeekday(input, locale) { 1568 if (typeof input !== 'string') { 1569 return input; 1570 } 1571 1572 if (!isNaN(input)) { 1573 return parseInt(input, 10); 1574 } 1575 1576 input = locale.weekdaysParse(input); 1577 if (typeof input === 'number') { 1578 return input; 1579 } 1580 1581 return null; 1582 } 1583 1584 function parseIsoWeekday(input, locale) { 1585 if (typeof input === 'string') { 1586 return locale.weekdaysParse(input) % 7 || 7; 1587 } 1588 return isNaN(input) ? null : input; 1589 } 1590 1591 // LOCALES 1592 function shiftWeekdays(ws, n) { 1593 return ws.slice(n, 7).concat(ws.slice(0, n)); 1594 } 1595 1596 var defaultLocaleWeekdays = 1597 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), 1598 defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), 1599 defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), 1600 defaultWeekdaysRegex = matchWord, 1601 defaultWeekdaysShortRegex = matchWord, 1602 defaultWeekdaysMinRegex = matchWord; 1603 1604 function localeWeekdays(m, format) { 1605 var weekdays = isArray(this._weekdays) 1606 ? this._weekdays 1607 : this._weekdays[ 1608 m && m !== true && this._weekdays.isFormat.test(format) 1609 ? 'format' 1610 : 'standalone' 1611 ]; 1612 return m === true 1613 ? shiftWeekdays(weekdays, this._week.dow) 1614 : m 1615 ? weekdays[m.day()] 1616 : weekdays; 1617 } 1618 1619 function localeWeekdaysShort(m) { 1620 return m === true 1621 ? shiftWeekdays(this._weekdaysShort, this._week.dow) 1622 : m 1623 ? this._weekdaysShort[m.day()] 1624 : this._weekdaysShort; 1625 } 1626 1627 function localeWeekdaysMin(m) { 1628 return m === true 1629 ? shiftWeekdays(this._weekdaysMin, this._week.dow) 1630 : m 1631 ? this._weekdaysMin[m.day()] 1632 : this._weekdaysMin; 1633 } 1634 1635 function handleStrictParse$1(weekdayName, format, strict) { 1636 var i, 1637 ii, 1638 mom, 1639 llc = weekdayName.toLocaleLowerCase(); 1640 if (!this._weekdaysParse) { 1641 this._weekdaysParse = []; 1642 this._shortWeekdaysParse = []; 1643 this._minWeekdaysParse = []; 1644 1645 for (i = 0; i < 7; ++i) { 1646 mom = createUTC([2000, 1]).day(i); 1647 this._minWeekdaysParse[i] = this.weekdaysMin( 1648 mom, 1649 '' 1650 ).toLocaleLowerCase(); 1651 this._shortWeekdaysParse[i] = this.weekdaysShort( 1652 mom, 1653 '' 1654 ).toLocaleLowerCase(); 1655 this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); 1656 } 1657 } 1658 1659 if (strict) { 1660 if (format === 'dddd') { 1661 ii = indexOf.call(this._weekdaysParse, llc); 1662 return ii !== -1 ? ii : null; 1663 } else if (format === 'ddd') { 1664 ii = indexOf.call(this._shortWeekdaysParse, llc); 1665 return ii !== -1 ? ii : null; 1666 } else { 1667 ii = indexOf.call(this._minWeekdaysParse, llc); 1668 return ii !== -1 ? ii : null; 1669 } 1670 } else { 1671 if (format === 'dddd') { 1672 ii = indexOf.call(this._weekdaysParse, llc); 1673 if (ii !== -1) { 1674 return ii; 1675 } 1676 ii = indexOf.call(this._shortWeekdaysParse, llc); 1677 if (ii !== -1) { 1678 return ii; 1679 } 1680 ii = indexOf.call(this._minWeekdaysParse, llc); 1681 return ii !== -1 ? ii : null; 1682 } else if (format === 'ddd') { 1683 ii = indexOf.call(this._shortWeekdaysParse, llc); 1684 if (ii !== -1) { 1685 return ii; 1686 } 1687 ii = indexOf.call(this._weekdaysParse, llc); 1688 if (ii !== -1) { 1689 return ii; 1690 } 1691 ii = indexOf.call(this._minWeekdaysParse, llc); 1692 return ii !== -1 ? ii : null; 1693 } else { 1694 ii = indexOf.call(this._minWeekdaysParse, llc); 1695 if (ii !== -1) { 1696 return ii; 1697 } 1698 ii = indexOf.call(this._weekdaysParse, llc); 1699 if (ii !== -1) { 1700 return ii; 1701 } 1702 ii = indexOf.call(this._shortWeekdaysParse, llc); 1703 return ii !== -1 ? ii : null; 1704 } 1705 } 1706 } 1707 1708 function localeWeekdaysParse(weekdayName, format, strict) { 1709 var i, mom, regex; 1710 1711 if (this._weekdaysParseExact) { 1712 return handleStrictParse$1.call(this, weekdayName, format, strict); 1713 } 1714 1715 if (!this._weekdaysParse) { 1716 this._weekdaysParse = []; 1717 this._minWeekdaysParse = []; 1718 this._shortWeekdaysParse = []; 1719 this._fullWeekdaysParse = []; 1720 } 1721 1722 for (i = 0; i < 7; i++) { 1723 // make the regex if we don't have it already 1724 1725 mom = createUTC([2000, 1]).day(i); 1726 if (strict && !this._fullWeekdaysParse[i]) { 1727 this._fullWeekdaysParse[i] = new RegExp( 1728 '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 1729 'i' 1730 ); 1731 this._shortWeekdaysParse[i] = new RegExp( 1732 '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 1733 'i' 1734 ); 1735 this._minWeekdaysParse[i] = new RegExp( 1736 '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 1737 'i' 1738 ); 1739 } 1740 if (!this._weekdaysParse[i]) { 1741 regex = 1742 '^' + 1743 this.weekdays(mom, '') + 1744 '|^' + 1745 this.weekdaysShort(mom, '') + 1746 '|^' + 1747 this.weekdaysMin(mom, ''); 1748 this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); 1749 } 1750 // test the regex 1751 if ( 1752 strict && 1753 format === 'dddd' && 1754 this._fullWeekdaysParse[i].test(weekdayName) 1755 ) { 1756 return i; 1757 } else if ( 1758 strict && 1759 format === 'ddd' && 1760 this._shortWeekdaysParse[i].test(weekdayName) 1761 ) { 1762 return i; 1763 } else if ( 1764 strict && 1765 format === 'dd' && 1766 this._minWeekdaysParse[i].test(weekdayName) 1767 ) { 1768 return i; 1769 } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { 1770 return i; 1771 } 1772 } 1773 } 1774 1775 // MOMENTS 1776 1777 function getSetDayOfWeek(input) { 1778 if (!this.isValid()) { 1779 return input != null ? this : NaN; 1780 } 1781 1782 var day = get(this, 'Day'); 1783 if (input != null) { 1784 input = parseWeekday(input, this.localeData()); 1785 return this.add(input - day, 'd'); 1786 } else { 1787 return day; 1788 } 1789 } 1790 1791 function getSetLocaleDayOfWeek(input) { 1792 if (!this.isValid()) { 1793 return input != null ? this : NaN; 1794 } 1795 var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; 1796 return input == null ? weekday : this.add(input - weekday, 'd'); 1797 } 1798 1799 function getSetISODayOfWeek(input) { 1800 if (!this.isValid()) { 1801 return input != null ? this : NaN; 1802 } 1803 1804 // behaves the same as moment#day except 1805 // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) 1806 // as a setter, sunday should belong to the previous week. 1807 1808 if (input != null) { 1809 var weekday = parseIsoWeekday(input, this.localeData()); 1810 return this.day(this.day() % 7 ? weekday : weekday - 7); 1811 } else { 1812 return this.day() || 7; 1813 } 1814 } 1815 1816 function weekdaysRegex(isStrict) { 1817 if (this._weekdaysParseExact) { 1818 if (!hasOwnProp(this, '_weekdaysRegex')) { 1819 computeWeekdaysParse.call(this); 1820 } 1821 if (isStrict) { 1822 return this._weekdaysStrictRegex; 1823 } else { 1824 return this._weekdaysRegex; 1825 } 1826 } else { 1827 if (!hasOwnProp(this, '_weekdaysRegex')) { 1828 this._weekdaysRegex = defaultWeekdaysRegex; 1829 } 1830 return this._weekdaysStrictRegex && isStrict 1831 ? this._weekdaysStrictRegex 1832 : this._weekdaysRegex; 1833 } 1834 } 1835 1836 function weekdaysShortRegex(isStrict) { 1837 if (this._weekdaysParseExact) { 1838 if (!hasOwnProp(this, '_weekdaysRegex')) { 1839 computeWeekdaysParse.call(this); 1840 } 1841 if (isStrict) { 1842 return this._weekdaysShortStrictRegex; 1843 } else { 1844 return this._weekdaysShortRegex; 1845 } 1846 } else { 1847 if (!hasOwnProp(this, '_weekdaysShortRegex')) { 1848 this._weekdaysShortRegex = defaultWeekdaysShortRegex; 1849 } 1850 return this._weekdaysShortStrictRegex && isStrict 1851 ? this._weekdaysShortStrictRegex 1852 : this._weekdaysShortRegex; 1853 } 1854 } 1855 1856 function weekdaysMinRegex(isStrict) { 1857 if (this._weekdaysParseExact) { 1858 if (!hasOwnProp(this, '_weekdaysRegex')) { 1859 computeWeekdaysParse.call(this); 1860 } 1861 if (isStrict) { 1862 return this._weekdaysMinStrictRegex; 1863 } else { 1864 return this._weekdaysMinRegex; 1865 } 1866 } else { 1867 if (!hasOwnProp(this, '_weekdaysMinRegex')) { 1868 this._weekdaysMinRegex = defaultWeekdaysMinRegex; 1869 } 1870 return this._weekdaysMinStrictRegex && isStrict 1871 ? this._weekdaysMinStrictRegex 1872 : this._weekdaysMinRegex; 1873 } 1874 } 1875 1876 function computeWeekdaysParse() { 1877 function cmpLenRev(a, b) { 1878 return b.length - a.length; 1879 } 1880 1881 var minPieces = [], 1882 shortPieces = [], 1883 longPieces = [], 1884 mixedPieces = [], 1885 i, 1886 mom, 1887 minp, 1888 shortp, 1889 longp; 1890 for (i = 0; i < 7; i++) { 1891 // make the regex if we don't have it already 1892 mom = createUTC([2000, 1]).day(i); 1893 minp = regexEscape(this.weekdaysMin(mom, '')); 1894 shortp = regexEscape(this.weekdaysShort(mom, '')); 1895 longp = regexEscape(this.weekdays(mom, '')); 1896 minPieces.push(minp); 1897 shortPieces.push(shortp); 1898 longPieces.push(longp); 1899 mixedPieces.push(minp); 1900 mixedPieces.push(shortp); 1901 mixedPieces.push(longp); 1902 } 1903 // Sorting makes sure if one weekday (or abbr) is a prefix of another it 1904 // will match the longer piece. 1905 minPieces.sort(cmpLenRev); 1906 shortPieces.sort(cmpLenRev); 1907 longPieces.sort(cmpLenRev); 1908 mixedPieces.sort(cmpLenRev); 1909 1910 this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); 1911 this._weekdaysShortRegex = this._weekdaysRegex; 1912 this._weekdaysMinRegex = this._weekdaysRegex; 1913 1914 this._weekdaysStrictRegex = new RegExp( 1915 '^(' + longPieces.join('|') + ')', 1916 'i' 1917 ); 1918 this._weekdaysShortStrictRegex = new RegExp( 1919 '^(' + shortPieces.join('|') + ')', 1920 'i' 1921 ); 1922 this._weekdaysMinStrictRegex = new RegExp( 1923 '^(' + minPieces.join('|') + ')', 1924 'i' 1925 ); 1926 } 1927 1928 // FORMATTING 1929 1930 function hFormat() { 1931 return this.hours() % 12 || 12; 1932 } 1933 1934 function kFormat() { 1935 return this.hours() || 24; 1936 } 1937 1938 addFormatToken('H', ['HH', 2], 0, 'hour'); 1939 addFormatToken('h', ['hh', 2], 0, hFormat); 1940 addFormatToken('k', ['kk', 2], 0, kFormat); 1941 1942 addFormatToken('hmm', 0, 0, function () { 1943 return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); 1944 }); 1945 1946 addFormatToken('hmmss', 0, 0, function () { 1947 return ( 1948 '' + 1949 hFormat.apply(this) + 1950 zeroFill(this.minutes(), 2) + 1951 zeroFill(this.seconds(), 2) 1952 ); 1953 }); 1954 1955 addFormatToken('Hmm', 0, 0, function () { 1956 return '' + this.hours() + zeroFill(this.minutes(), 2); 1957 }); 1958 1959 addFormatToken('Hmmss', 0, 0, function () { 1960 return ( 1961 '' + 1962 this.hours() + 1963 zeroFill(this.minutes(), 2) + 1964 zeroFill(this.seconds(), 2) 1965 ); 1966 }); 1967 1968 function meridiem(token, lowercase) { 1969 addFormatToken(token, 0, 0, function () { 1970 return this.localeData().meridiem( 1971 this.hours(), 1972 this.minutes(), 1973 lowercase 1974 ); 1975 }); 1976 } 1977 1978 meridiem('a', true); 1979 meridiem('A', false); 1980 1981 // PARSING 1982 1983 function matchMeridiem(isStrict, locale) { 1984 return locale._meridiemParse; 1985 } 1986 1987 addRegexToken('a', matchMeridiem); 1988 addRegexToken('A', matchMeridiem); 1989 addRegexToken('H', match1to2, match1to2HasZero); 1990 addRegexToken('h', match1to2, match1to2NoLeadingZero); 1991 addRegexToken('k', match1to2, match1to2NoLeadingZero); 1992 addRegexToken('HH', match1to2, match2); 1993 addRegexToken('hh', match1to2, match2); 1994 addRegexToken('kk', match1to2, match2); 1995 1996 addRegexToken('hmm', match3to4); 1997 addRegexToken('hmmss', match5to6); 1998 addRegexToken('Hmm', match3to4); 1999 addRegexToken('Hmmss', match5to6); 2000 2001 addParseToken(['H', 'HH'], HOUR); 2002 addParseToken(['k', 'kk'], function (input, array, config) { 2003 var kInput = toInt(input); 2004 array[HOUR] = kInput === 24 ? 0 : kInput; 2005 }); 2006 addParseToken(['a', 'A'], function (input, array, config) { 2007 config._isPm = config._locale.isPM(input); 2008 config._meridiem = input; 2009 }); 2010 addParseToken(['h', 'hh'], function (input, array, config) { 2011 array[HOUR] = toInt(input); 2012 getParsingFlags(config).bigHour = true; 2013 }); 2014 addParseToken('hmm', function (input, array, config) { 2015 var pos = input.length - 2; 2016 array[HOUR] = toInt(input.substr(0, pos)); 2017 array[MINUTE] = toInt(input.substr(pos)); 2018 getParsingFlags(config).bigHour = true; 2019 }); 2020 addParseToken('hmmss', function (input, array, config) { 2021 var pos1 = input.length - 4, 2022 pos2 = input.length - 2; 2023 array[HOUR] = toInt(input.substr(0, pos1)); 2024 array[MINUTE] = toInt(input.substr(pos1, 2)); 2025 array[SECOND] = toInt(input.substr(pos2)); 2026 getParsingFlags(config).bigHour = true; 2027 }); 2028 addParseToken('Hmm', function (input, array, config) { 2029 var pos = input.length - 2; 2030 array[HOUR] = toInt(input.substr(0, pos)); 2031 array[MINUTE] = toInt(input.substr(pos)); 2032 }); 2033 addParseToken('Hmmss', function (input, array, config) { 2034 var pos1 = input.length - 4, 2035 pos2 = input.length - 2; 2036 array[HOUR] = toInt(input.substr(0, pos1)); 2037 array[MINUTE] = toInt(input.substr(pos1, 2)); 2038 array[SECOND] = toInt(input.substr(pos2)); 2039 }); 2040 2041 // LOCALES 2042 2043 function localeIsPM(input) { 2044 // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays 2045 // Using charAt should be more compatible. 2046 return (input + '').toLowerCase().charAt(0) === 'p'; 2047 } 2048 2049 var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i, 2050 // Setting the hour should keep the time, because the user explicitly 2051 // specified which hour they want. So trying to maintain the same hour (in 2052 // a new timezone) makes sense. Adding/subtracting hours does not follow 2053 // this rule. 2054 getSetHour = makeGetSet('Hours', true); 2055 2056 function localeMeridiem(hours, minutes, isLower) { 2057 if (hours > 11) { 2058 return isLower ? 'pm' : 'PM'; 2059 } else { 2060 return isLower ? 'am' : 'AM'; 2061 } 2062 } 2063 2064 var baseConfig = { 2065 calendar: defaultCalendar, 2066 longDateFormat: defaultLongDateFormat, 2067 invalidDate: defaultInvalidDate, 2068 ordinal: defaultOrdinal, 2069 dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, 2070 relativeTime: defaultRelativeTime, 2071 2072 months: defaultLocaleMonths, 2073 monthsShort: defaultLocaleMonthsShort, 2074 2075 week: defaultLocaleWeek, 2076 2077 weekdays: defaultLocaleWeekdays, 2078 weekdaysMin: defaultLocaleWeekdaysMin, 2079 weekdaysShort: defaultLocaleWeekdaysShort, 2080 2081 meridiemParse: defaultLocaleMeridiemParse, 2082 }; 2083 2084 // internal storage for locale config files 2085 var locales = {}, 2086 localeFamilies = {}, 2087 globalLocale; 2088 2089 function commonPrefix(arr1, arr2) { 2090 var i, 2091 minl = Math.min(arr1.length, arr2.length); 2092 for (i = 0; i < minl; i += 1) { 2093 if (arr1[i] !== arr2[i]) { 2094 return i; 2095 } 2096 } 2097 return minl; 2098 } 2099 2100 function normalizeLocale(key) { 2101 return key ? key.toLowerCase().replace('_', '-') : key; 2102 } 2103 2104 // pick the locale from the array 2105 // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each 2106 // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root 2107 function chooseLocale(names) { 2108 var i = 0, 2109 j, 2110 next, 2111 locale, 2112 split; 2113 2114 while (i < names.length) { 2115 split = normalizeLocale(names[i]).split('-'); 2116 j = split.length; 2117 next = normalizeLocale(names[i + 1]); 2118 next = next ? next.split('-') : null; 2119 while (j > 0) { 2120 locale = loadLocale(split.slice(0, j).join('-')); 2121 if (locale) { 2122 return locale; 2123 } 2124 if ( 2125 next && 2126 next.length >= j && 2127 commonPrefix(split, next) >= j - 1 2128 ) { 2129 //the next array item is better than a shallower substring of this one 2130 break; 2131 } 2132 j--; 2133 } 2134 i++; 2135 } 2136 return globalLocale; 2137 } 2138 2139 function isLocaleNameSane(name) { 2140 // Prevent names that look like filesystem paths, i.e contain '/' or '\' 2141 // Ensure name is available and function returns boolean 2142 return !!(name && name.match('^[^/\\\\]*$')); 2143 } 2144 2145 function loadLocale(name) { 2146 var oldLocale = null, 2147 aliasedRequire; 2148 // TODO: Find a better way to register and load all the locales in Node 2149 if ( 2150 locales[name] === undefined && 2151 typeof module !== 'undefined' && 2152 module && 2153 module.exports && 2154 isLocaleNameSane(name) 2155 ) { 2156 try { 2157 oldLocale = globalLocale._abbr; 2158 aliasedRequire = require; 2159 aliasedRequire('./locale/' + name); 2160 getSetGlobalLocale(oldLocale); 2161 } catch (e) { 2162 // mark as not found to avoid repeating expensive file require call causing high CPU 2163 // when trying to find en-US, en_US, en-us for every format call 2164 locales[name] = null; // null means not found 2165 } 2166 } 2167 return locales[name]; 2168 } 2169 2170 // This function will load locale and then set the global locale. If 2171 // no arguments are passed in, it will simply return the current global 2172 // locale key. 2173 function getSetGlobalLocale(key, values) { 2174 var data; 2175 if (key) { 2176 if (isUndefined(values)) { 2177 data = getLocale(key); 2178 } else { 2179 data = defineLocale(key, values); 2180 } 2181 2182 if (data) { 2183 // moment.duration._locale = moment._locale = data; 2184 globalLocale = data; 2185 } else { 2186 if (typeof console !== 'undefined' && console.warn) { 2187 //warn user if arguments are passed but the locale could not be set 2188 console.warn( 2189 'Locale ' + key + ' not found. Did you forget to load it?' 2190 ); 2191 } 2192 } 2193 } 2194 2195 return globalLocale._abbr; 2196 } 2197 2198 function defineLocale(name, config) { 2199 if (config !== null) { 2200 var locale, 2201 parentConfig = baseConfig; 2202 config.abbr = name; 2203 if (locales[name] != null) { 2204 deprecateSimple( 2205 'defineLocaleOverride', 2206 'use moment.updateLocale(localeName, config) to change ' + 2207 'an existing locale. moment.defineLocale(localeName, ' + 2208 'config) should only be used for creating a new locale ' + 2209 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.' 2210 ); 2211 parentConfig = locales[name]._config; 2212 } else if (config.parentLocale != null) { 2213 if (locales[config.parentLocale] != null) { 2214 parentConfig = locales[config.parentLocale]._config; 2215 } else { 2216 locale = loadLocale(config.parentLocale); 2217 if (locale != null) { 2218 parentConfig = locale._config; 2219 } else { 2220 if (!localeFamilies[config.parentLocale]) { 2221 localeFamilies[config.parentLocale] = []; 2222 } 2223 localeFamilies[config.parentLocale].push({ 2224 name: name, 2225 config: config, 2226 }); 2227 return null; 2228 } 2229 } 2230 } 2231 locales[name] = new Locale(mergeConfigs(parentConfig, config)); 2232 2233 if (localeFamilies[name]) { 2234 localeFamilies[name].forEach(function (x) { 2235 defineLocale(x.name, x.config); 2236 }); 2237 } 2238 2239 // backwards compat for now: also set the locale 2240 // make sure we set the locale AFTER all child locales have been 2241 // created, so we won't end up with the child locale set. 2242 getSetGlobalLocale(name); 2243 2244 return locales[name]; 2245 } else { 2246 // useful for testing 2247 delete locales[name]; 2248 return null; 2249 } 2250 } 2251 2252 function updateLocale(name, config) { 2253 if (config != null) { 2254 var locale, 2255 tmpLocale, 2256 parentConfig = baseConfig; 2257 2258 if (locales[name] != null && locales[name].parentLocale != null) { 2259 // Update existing child locale in-place to avoid memory-leaks 2260 locales[name].set(mergeConfigs(locales[name]._config, config)); 2261 } else { 2262 // MERGE 2263 tmpLocale = loadLocale(name); 2264 if (tmpLocale != null) { 2265 parentConfig = tmpLocale._config; 2266 } 2267 config = mergeConfigs(parentConfig, config); 2268 if (tmpLocale == null) { 2269 // updateLocale is called for creating a new locale 2270 // Set abbr so it will have a name (getters return 2271 // undefined otherwise). 2272 config.abbr = name; 2273 } 2274 locale = new Locale(config); 2275 locale.parentLocale = locales[name]; 2276 locales[name] = locale; 2277 } 2278 2279 // backwards compat for now: also set the locale 2280 getSetGlobalLocale(name); 2281 } else { 2282 // pass null for config to unupdate, useful for tests 2283 if (locales[name] != null) { 2284 if (locales[name].parentLocale != null) { 2285 locales[name] = locales[name].parentLocale; 2286 if (name === getSetGlobalLocale()) { 2287 getSetGlobalLocale(name); 2288 } 2289 } else if (locales[name] != null) { 2290 delete locales[name]; 2291 } 2292 } 2293 } 2294 return locales[name]; 2295 } 2296 2297 // returns locale data 2298 function getLocale(key) { 2299 var locale; 2300 2301 if (key && key._locale && key._locale._abbr) { 2302 key = key._locale._abbr; 2303 } 2304 2305 if (!key) { 2306 return globalLocale; 2307 } 2308 2309 if (!isArray(key)) { 2310 //short-circuit everything else 2311 locale = loadLocale(key); 2312 if (locale) { 2313 return locale; 2314 } 2315 key = [key]; 2316 } 2317 2318 return chooseLocale(key); 2319 } 2320 2321 function listLocales() { 2322 return keys(locales); 2323 } 2324 2325 function checkOverflow(m) { 2326 var overflow, 2327 a = m._a; 2328 2329 if (a && getParsingFlags(m).overflow === -2) { 2330 overflow = 2331 a[MONTH] < 0 || a[MONTH] > 11 2332 ? MONTH 2333 : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) 2334 ? DATE 2335 : a[HOUR] < 0 || 2336 a[HOUR] > 24 || 2337 (a[HOUR] === 24 && 2338 (a[MINUTE] !== 0 || 2339 a[SECOND] !== 0 || 2340 a[MILLISECOND] !== 0)) 2341 ? HOUR 2342 : a[MINUTE] < 0 || a[MINUTE] > 59 2343 ? MINUTE 2344 : a[SECOND] < 0 || a[SECOND] > 59 2345 ? SECOND 2346 : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 2347 ? MILLISECOND 2348 : -1; 2349 2350 if ( 2351 getParsingFlags(m)._overflowDayOfYear && 2352 (overflow < YEAR || overflow > DATE) 2353 ) { 2354 overflow = DATE; 2355 } 2356 if (getParsingFlags(m)._overflowWeeks && overflow === -1) { 2357 overflow = WEEK; 2358 } 2359 if (getParsingFlags(m)._overflowWeekday && overflow === -1) { 2360 overflow = WEEKDAY; 2361 } 2362 2363 getParsingFlags(m).overflow = overflow; 2364 } 2365 2366 return m; 2367 } 2368 2369 // iso 8601 regex 2370 // 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) 2371 var extendedIsoRegex = 2372 /^\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)?)?$/, 2373 basicIsoRegex = 2374 /^\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)?)?$/, 2375 tzRegex = /Z|[+-]\d\d(?::?\d\d)?/, 2376 isoDates = [ 2377 ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], 2378 ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], 2379 ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], 2380 ['GGGG-[W]WW', /\d{4}-W\d\d/, false], 2381 ['YYYY-DDD', /\d{4}-\d{3}/], 2382 ['YYYY-MM', /\d{4}-\d\d/, false], 2383 ['YYYYYYMMDD', /[+-]\d{10}/], 2384 ['YYYYMMDD', /\d{8}/], 2385 ['GGGG[W]WWE', /\d{4}W\d{3}/], 2386 ['GGGG[W]WW', /\d{4}W\d{2}/, false], 2387 ['YYYYDDD', /\d{7}/], 2388 ['YYYYMM', /\d{6}/, false], 2389 ['YYYY', /\d{4}/, false], 2390 ], 2391 // iso time formats and regexes 2392 isoTimes = [ 2393 ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], 2394 ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], 2395 ['HH:mm:ss', /\d\d:\d\d:\d\d/], 2396 ['HH:mm', /\d\d:\d\d/], 2397 ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], 2398 ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], 2399 ['HHmmss', /\d\d\d\d\d\d/], 2400 ['HHmm', /\d\d\d\d/], 2401 ['HH', /\d\d/], 2402 ], 2403 aspNetJsonRegex = /^\/?Date\((-?\d+)/i, 2404 // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 2405 rfc2822 = 2406 /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/, 2407 obsOffsets = { 2408 UT: 0, 2409 GMT: 0, 2410 EDT: -4 * 60, 2411 EST: -5 * 60, 2412 CDT: -5 * 60, 2413 CST: -6 * 60, 2414 MDT: -6 * 60, 2415 MST: -7 * 60, 2416 PDT: -7 * 60, 2417 PST: -8 * 60, 2418 }; 2419 2420 // date from iso format 2421 function configFromISO(config) { 2422 var i, 2423 l, 2424 string = config._i, 2425 match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), 2426 allowTime, 2427 dateFormat, 2428 timeFormat, 2429 tzFormat, 2430 isoDatesLen = isoDates.length, 2431 isoTimesLen = isoTimes.length; 2432 2433 if (match) { 2434 getParsingFlags(config).iso = true; 2435 for (i = 0, l = isoDatesLen; i < l; i++) { 2436 if (isoDates[i][1].exec(match[1])) { 2437 dateFormat = isoDates[i][0]; 2438 allowTime = isoDates[i][2] !== false; 2439 break; 2440 } 2441 } 2442 if (dateFormat == null) { 2443 config._isValid = false; 2444 return; 2445 } 2446 if (match[3]) { 2447 for (i = 0, l = isoTimesLen; i < l; i++) { 2448 if (isoTimes[i][1].exec(match[3])) { 2449 // match[2] should be 'T' or space 2450 timeFormat = (match[2] || ' ') + isoTimes[i][0]; 2451 break; 2452 } 2453 } 2454 if (timeFormat == null) { 2455 config._isValid = false; 2456 return; 2457 } 2458 } 2459 if (!allowTime && timeFormat != null) { 2460 config._isValid = false; 2461 return; 2462 } 2463 if (match[4]) { 2464 if (tzRegex.exec(match[4])) { 2465 tzFormat = 'Z'; 2466 } else { 2467 config._isValid = false; 2468 return; 2469 } 2470 } 2471 config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); 2472 configFromStringAndFormat(config); 2473 } else { 2474 config._isValid = false; 2475 } 2476 } 2477 2478 function extractFromRFC2822Strings( 2479 yearStr, 2480 monthStr, 2481 dayStr, 2482 hourStr, 2483 minuteStr, 2484 secondStr 2485 ) { 2486 var result = [ 2487 untruncateYear(yearStr), 2488 defaultLocaleMonthsShort.indexOf(monthStr), 2489 parseInt(dayStr, 10), 2490 parseInt(hourStr, 10), 2491 parseInt(minuteStr, 10), 2492 ]; 2493 2494 if (secondStr) { 2495 result.push(parseInt(secondStr, 10)); 2496 } 2497 2498 return result; 2499 } 2500 2501 function untruncateYear(yearStr) { 2502 var year = parseInt(yearStr, 10); 2503 if (year <= 49) { 2504 return 2000 + year; 2505 } else if (year <= 999) { 2506 return 1900 + year; 2507 } 2508 return year; 2509 } 2510 2511 function preprocessRFC2822(s) { 2512 // Remove comments and folding whitespace and replace multiple-spaces with a single space 2513 return s 2514 .replace(/\([^()]*\)|[\n\t]/g, ' ') 2515 .replace(/(\s\s+)/g, ' ') 2516 .replace(/^\s\s*/, '') 2517 .replace(/\s\s*$/, ''); 2518 } 2519 2520 function checkWeekday(weekdayStr, parsedInput, config) { 2521 if (weekdayStr) { 2522 // TODO: Replace the vanilla JS Date object with an independent day-of-week check. 2523 var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), 2524 weekdayActual = new Date( 2525 parsedInput[0], 2526 parsedInput[1], 2527 parsedInput[2] 2528 ).getDay(); 2529 if (weekdayProvided !== weekdayActual) { 2530 getParsingFlags(config).weekdayMismatch = true; 2531 config._isValid = false; 2532 return false; 2533 } 2534 } 2535 return true; 2536 } 2537 2538 function calculateOffset(obsOffset, militaryOffset, numOffset) { 2539 if (obsOffset) { 2540 return obsOffsets[obsOffset]; 2541 } else if (militaryOffset) { 2542 // the only allowed military tz is Z 2543 return 0; 2544 } else { 2545 var hm = parseInt(numOffset, 10), 2546 m = hm % 100, 2547 h = (hm - m) / 100; 2548 return h * 60 + m; 2549 } 2550 } 2551 2552 // date and time from ref 2822 format 2553 function configFromRFC2822(config) { 2554 var match = rfc2822.exec(preprocessRFC2822(config._i)), 2555 parsedArray; 2556 if (match) { 2557 parsedArray = extractFromRFC2822Strings( 2558 match[4], 2559 match[3], 2560 match[2], 2561 match[5], 2562 match[6], 2563 match[7] 2564 ); 2565 if (!checkWeekday(match[1], parsedArray, config)) { 2566 return; 2567 } 2568 2569 config._a = parsedArray; 2570 config._tzm = calculateOffset(match[8], match[9], match[10]); 2571 2572 config._d = createUTCDate.apply(null, config._a); 2573 config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); 2574 2575 getParsingFlags(config).rfc2822 = true; 2576 } else { 2577 config._isValid = false; 2578 } 2579 } 2580 2581 // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict 2582 function configFromString(config) { 2583 var matched = aspNetJsonRegex.exec(config._i); 2584 if (matched !== null) { 2585 config._d = new Date(+matched[1]); 2586 return; 2587 } 2588 2589 configFromISO(config); 2590 if (config._isValid === false) { 2591 delete config._isValid; 2592 } else { 2593 return; 2594 } 2595 2596 configFromRFC2822(config); 2597 if (config._isValid === false) { 2598 delete config._isValid; 2599 } else { 2600 return; 2601 } 2602 2603 if (config._strict) { 2604 config._isValid = false; 2605 } else { 2606 // Final attempt, use Input Fallback 2607 hooks.createFromInputFallback(config); 2608 } 2609 } 2610 2611 hooks.createFromInputFallback = deprecate( 2612 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 2613 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 2614 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.', 2615 function (config) { 2616 config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); 2617 } 2618 ); 2619 2620 // Pick the first defined of two or three arguments. 2621 function defaults(a, b, c) { 2622 if (a != null) { 2623 return a; 2624 } 2625 if (b != null) { 2626 return b; 2627 } 2628 return c; 2629 } 2630 2631 function currentDateArray(config) { 2632 // hooks is actually the exported moment object 2633 var nowValue = new Date(hooks.now()); 2634 if (config._useUTC) { 2635 return [ 2636 nowValue.getUTCFullYear(), 2637 nowValue.getUTCMonth(), 2638 nowValue.getUTCDate(), 2639 ]; 2640 } 2641 return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; 2642 } 2643 2644 // convert an array to a date. 2645 // the array should mirror the parameters below 2646 // note: all values past the year are optional and will default to the lowest possible value. 2647 // [year, month, day , hour, minute, second, millisecond] 2648 function configFromArray(config) { 2649 var i, 2650 date, 2651 input = [], 2652 currentDate, 2653 expectedWeekday, 2654 yearToUse; 2655 2656 if (config._d) { 2657 return; 2658 } 2659 2660 currentDate = currentDateArray(config); 2661 2662 //compute day of the year from weeks and weekdays 2663 if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { 2664 dayOfYearFromWeekInfo(config); 2665 } 2666 2667 //if the day of the year is set, figure out what it is 2668 if (config._dayOfYear != null) { 2669 yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); 2670 2671 if ( 2672 config._dayOfYear > daysInYear(yearToUse) || 2673 config._dayOfYear === 0 2674 ) { 2675 getParsingFlags(config)._overflowDayOfYear = true; 2676 } 2677 2678 date = createUTCDate(yearToUse, 0, config._dayOfYear); 2679 config._a[MONTH] = date.getUTCMonth(); 2680 config._a[DATE] = date.getUTCDate(); 2681 } 2682 2683 // Default to current date. 2684 // * if no year, month, day of month are given, default to today 2685 // * if day of month is given, default month and year 2686 // * if month is given, default only year 2687 // * if year is given, don't default anything 2688 for (i = 0; i < 3 && config._a[i] == null; ++i) { 2689 config._a[i] = input[i] = currentDate[i]; 2690 } 2691 2692 // Zero out whatever was not defaulted, including time 2693 for (; i < 7; i++) { 2694 config._a[i] = input[i] = 2695 config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i]; 2696 } 2697 2698 // Check for 24:00:00.000 2699 if ( 2700 config._a[HOUR] === 24 && 2701 config._a[MINUTE] === 0 && 2702 config._a[SECOND] === 0 && 2703 config._a[MILLISECOND] === 0 2704 ) { 2705 config._nextDay = true; 2706 config._a[HOUR] = 0; 2707 } 2708 2709 config._d = (config._useUTC ? createUTCDate : createDate).apply( 2710 null, 2711 input 2712 ); 2713 expectedWeekday = config._useUTC 2714 ? config._d.getUTCDay() 2715 : config._d.getDay(); 2716 2717 // Apply timezone offset from input. The actual utcOffset can be changed 2718 // with parseZone. 2719 if (config._tzm != null) { 2720 config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); 2721 } 2722 2723 if (config._nextDay) { 2724 config._a[HOUR] = 24; 2725 } 2726 2727 // check for mismatching day of week 2728 if ( 2729 config._w && 2730 typeof config._w.d !== 'undefined' && 2731 config._w.d !== expectedWeekday 2732 ) { 2733 getParsingFlags(config).weekdayMismatch = true; 2734 } 2735 } 2736 2737 function dayOfYearFromWeekInfo(config) { 2738 var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek; 2739 2740 w = config._w; 2741 if (w.GG != null || w.W != null || w.E != null) { 2742 dow = 1; 2743 doy = 4; 2744 2745 // TODO: We need to take the current isoWeekYear, but that depends on 2746 // how we interpret now (local, utc, fixed offset). So create 2747 // a now version of current config (take local/utc/offset flags, and 2748 // create now). 2749 weekYear = defaults( 2750 w.GG, 2751 config._a[YEAR], 2752 weekOfYear(createLocal(), 1, 4).year 2753 ); 2754 week = defaults(w.W, 1); 2755 weekday = defaults(w.E, 1); 2756 if (weekday < 1 || weekday > 7) { 2757 weekdayOverflow = true; 2758 } 2759 } else { 2760 dow = config._locale._week.dow; 2761 doy = config._locale._week.doy; 2762 2763 curWeek = weekOfYear(createLocal(), dow, doy); 2764 2765 weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); 2766 2767 // Default to current week. 2768 week = defaults(w.w, curWeek.week); 2769 2770 if (w.d != null) { 2771 // weekday -- low day numbers are considered next week 2772 weekday = w.d; 2773 if (weekday < 0 || weekday > 6) { 2774 weekdayOverflow = true; 2775 } 2776 } else if (w.e != null) { 2777 // local weekday -- counting starts from beginning of week 2778 weekday = w.e + dow; 2779 if (w.e < 0 || w.e > 6) { 2780 weekdayOverflow = true; 2781 } 2782 } else { 2783 // default to beginning of week 2784 weekday = dow; 2785 } 2786 } 2787 if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { 2788 getParsingFlags(config)._overflowWeeks = true; 2789 } else if (weekdayOverflow != null) { 2790 getParsingFlags(config)._overflowWeekday = true; 2791 } else { 2792 temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); 2793 config._a[YEAR] = temp.year; 2794 config._dayOfYear = temp.dayOfYear; 2795 } 2796 } 2797 2798 // constant that refers to the ISO standard 2799 hooks.ISO_8601 = function () {}; 2800 2801 // constant that refers to the RFC 2822 form 2802 hooks.RFC_2822 = function () {}; 2803 2804 // date from string and format string 2805 function configFromStringAndFormat(config) { 2806 // TODO: Move this to another part of the creation flow to prevent circular deps 2807 if (config._f === hooks.ISO_8601) { 2808 configFromISO(config); 2809 return; 2810 } 2811 if (config._f === hooks.RFC_2822) { 2812 configFromRFC2822(config); 2813 return; 2814 } 2815 config._a = []; 2816 getParsingFlags(config).empty = true; 2817 2818 // This array is used to make a Date, either with `new Date` or `Date.UTC` 2819 var string = '' + config._i, 2820 i, 2821 parsedInput, 2822 tokens, 2823 token, 2824 skipped, 2825 stringLength = string.length, 2826 totalParsedInputLength = 0, 2827 era, 2828 tokenLen; 2829 2830 tokens = 2831 expandFormat(config._f, config._locale).match(formattingTokens) || []; 2832 tokenLen = tokens.length; 2833 for (i = 0; i < tokenLen; i++) { 2834 token = tokens[i]; 2835 parsedInput = (string.match(getParseRegexForToken(token, config)) || 2836 [])[0]; 2837 if (parsedInput) { 2838 skipped = string.substr(0, string.indexOf(parsedInput)); 2839 if (skipped.length > 0) { 2840 getParsingFlags(config).unusedInput.push(skipped); 2841 } 2842 string = string.slice( 2843 string.indexOf(parsedInput) + parsedInput.length 2844 ); 2845 totalParsedInputLength += parsedInput.length; 2846 } 2847 // don't parse if it's not a known token 2848 if (formatTokenFunctions[token]) { 2849 if (parsedInput) { 2850 getParsingFlags(config).empty = false; 2851 } else { 2852 getParsingFlags(config).unusedTokens.push(token); 2853 } 2854 addTimeToArrayFromToken(token, parsedInput, config); 2855 } else if (config._strict && !parsedInput) { 2856 getParsingFlags(config).unusedTokens.push(token); 2857 } 2858 } 2859 2860 // add remaining unparsed input length to the string 2861 getParsingFlags(config).charsLeftOver = 2862 stringLength - totalParsedInputLength; 2863 if (string.length > 0) { 2864 getParsingFlags(config).unusedInput.push(string); 2865 } 2866 2867 // clear _12h flag if hour is <= 12 2868 if ( 2869 config._a[HOUR] <= 12 && 2870 getParsingFlags(config).bigHour === true && 2871 config._a[HOUR] > 0 2872 ) { 2873 getParsingFlags(config).bigHour = undefined; 2874 } 2875 2876 getParsingFlags(config).parsedDateParts = config._a.slice(0); 2877 getParsingFlags(config).meridiem = config._meridiem; 2878 // handle meridiem 2879 config._a[HOUR] = meridiemFixWrap( 2880 config._locale, 2881 config._a[HOUR], 2882 config._meridiem 2883 ); 2884 2885 // handle era 2886 era = getParsingFlags(config).era; 2887 if (era !== null) { 2888 config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]); 2889 } 2890 2891 configFromArray(config); 2892 checkOverflow(config); 2893 } 2894 2895 function meridiemFixWrap(locale, hour, meridiem) { 2896 var isPm; 2897 2898 if (meridiem == null) { 2899 // nothing to do 2900 return hour; 2901 } 2902 if (locale.meridiemHour != null) { 2903 return locale.meridiemHour(hour, meridiem); 2904 } else if (locale.isPM != null) { 2905 // Fallback 2906 isPm = locale.isPM(meridiem); 2907 if (isPm && hour < 12) { 2908 hour += 12; 2909 } 2910 if (!isPm && hour === 12) { 2911 hour = 0; 2912 } 2913 return hour; 2914 } else { 2915 // this is not supposed to happen 2916 return hour; 2917 } 2918 } 2919 2920 // date from string and array of format strings 2921 function configFromStringAndArray(config) { 2922 var tempConfig, 2923 bestMoment, 2924 scoreToBeat, 2925 i, 2926 currentScore, 2927 validFormatFound, 2928 bestFormatIsValid = false, 2929 configfLen = config._f.length; 2930 2931 if (configfLen === 0) { 2932 getParsingFlags(config).invalidFormat = true; 2933 config._d = new Date(NaN); 2934 return; 2935 } 2936 2937 for (i = 0; i < configfLen; i++) { 2938 currentScore = 0; 2939 validFormatFound = false; 2940 tempConfig = copyConfig({}, config); 2941 if (config._useUTC != null) { 2942 tempConfig._useUTC = config._useUTC; 2943 } 2944 tempConfig._f = config._f[i]; 2945 configFromStringAndFormat(tempConfig); 2946 2947 if (isValid(tempConfig)) { 2948 validFormatFound = true; 2949 } 2950 2951 // if there is any input that was not parsed add a penalty for that format 2952 currentScore += getParsingFlags(tempConfig).charsLeftOver; 2953 2954 //or tokens 2955 currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; 2956 2957 getParsingFlags(tempConfig).score = currentScore; 2958 2959 if (!bestFormatIsValid) { 2960 if ( 2961 scoreToBeat == null || 2962 currentScore < scoreToBeat || 2963 validFormatFound 2964 ) { 2965 scoreToBeat = currentScore; 2966 bestMoment = tempConfig; 2967 if (validFormatFound) { 2968 bestFormatIsValid = true; 2969 } 2970 } 2971 } else { 2972 if (currentScore < scoreToBeat) { 2973 scoreToBeat = currentScore; 2974 bestMoment = tempConfig; 2975 } 2976 } 2977 } 2978 2979 extend(config, bestMoment || tempConfig); 2980 } 2981 2982 function configFromObject(config) { 2983 if (config._d) { 2984 return; 2985 } 2986 2987 var i = normalizeObjectUnits(config._i), 2988 dayOrDate = i.day === undefined ? i.date : i.day; 2989 config._a = map( 2990 [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], 2991 function (obj) { 2992 return obj && parseInt(obj, 10); 2993 } 2994 ); 2995 2996 configFromArray(config); 2997 } 2998 2999 function createFromConfig(config) { 3000 var res = new Moment(checkOverflow(prepareConfig(config))); 3001 if (res._nextDay) { 3002 // Adding is smart enough around DST 3003 res.add(1, 'd'); 3004 res._nextDay = undefined; 3005 } 3006 3007 return res; 3008 } 3009 3010 function prepareConfig(config) { 3011 var input = config._i, 3012 format = config._f; 3013 3014 config._locale = config._locale || getLocale(config._l); 3015 3016 if (input === null || (format === undefined && input === '')) { 3017 return createInvalid({ nullInput: true }); 3018 } 3019 3020 if (typeof input === 'string') { 3021 config._i = input = config._locale.preparse(input); 3022 } 3023 3024 if (isMoment(input)) { 3025 return new Moment(checkOverflow(input)); 3026 } else if (isDate(input)) { 3027 config._d = input; 3028 } else if (isArray(format)) { 3029 configFromStringAndArray(config); 3030 } else if (format) { 3031 configFromStringAndFormat(config); 3032 } else { 3033 configFromInput(config); 3034 } 3035 3036 if (!isValid(config)) { 3037 config._d = null; 3038 } 3039 3040 return config; 3041 } 3042 3043 function configFromInput(config) { 3044 var input = config._i; 3045 if (isUndefined(input)) { 3046 config._d = new Date(hooks.now()); 3047 } else if (isDate(input)) { 3048 config._d = new Date(input.valueOf()); 3049 } else if (typeof input === 'string') { 3050 configFromString(config); 3051 } else if (isArray(input)) { 3052 config._a = map(input.slice(0), function (obj) { 3053 return parseInt(obj, 10); 3054 }); 3055 configFromArray(config); 3056 } else if (isObject(input)) { 3057 configFromObject(config); 3058 } else if (isNumber(input)) { 3059 // from milliseconds 3060 config._d = new Date(input); 3061 } else { 3062 hooks.createFromInputFallback(config); 3063 } 3064 } 3065 3066 function createLocalOrUTC(input, format, locale, strict, isUTC) { 3067 var c = {}; 3068 3069 if (format === true || format === false) { 3070 strict = format; 3071 format = undefined; 3072 } 3073 3074 if (locale === true || locale === false) { 3075 strict = locale; 3076 locale = undefined; 3077 } 3078 3079 if ( 3080 (isObject(input) && isObjectEmpty(input)) || 3081 (isArray(input) && input.length === 0) 3082 ) { 3083 input = undefined; 3084 } 3085 // object construction must be done this way. 3086 // https://github.com/moment/moment/issues/1423 3087 c._isAMomentObject = true; 3088 c._useUTC = c._isUTC = isUTC; 3089 c._l = locale; 3090 c._i = input; 3091 c._f = format; 3092 c._strict = strict; 3093 3094 return createFromConfig(c); 3095 } 3096 3097 function createLocal(input, format, locale, strict) { 3098 return createLocalOrUTC(input, format, locale, strict, false); 3099 } 3100 3101 var prototypeMin = deprecate( 3102 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', 3103 function () { 3104 var other = createLocal.apply(null, arguments); 3105 if (this.isValid() && other.isValid()) { 3106 return other < this ? this : other; 3107 } else { 3108 return createInvalid(); 3109 } 3110 } 3111 ), 3112 prototypeMax = deprecate( 3113 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', 3114 function () { 3115 var other = createLocal.apply(null, arguments); 3116 if (this.isValid() && other.isValid()) { 3117 return other > this ? this : other; 3118 } else { 3119 return createInvalid(); 3120 } 3121 } 3122 ); 3123 3124 // Pick a moment m from moments so that m[fn](other) is true for all 3125 // other. This relies on the function fn to be transitive. 3126 // 3127 // moments should either be an array of moment objects or an array, whose 3128 // first element is an array of moment objects. 3129 function pickBy(fn, moments) { 3130 var res, i; 3131 if (moments.length === 1 && isArray(moments[0])) { 3132 moments = moments[0]; 3133 } 3134 if (!moments.length) { 3135 return createLocal(); 3136 } 3137 res = moments[0]; 3138 for (i = 1; i < moments.length; ++i) { 3139 if (!moments[i].isValid() || moments[i][fn](res)) { 3140 res = moments[i]; 3141 } 3142 } 3143 return res; 3144 } 3145 3146 // TODO: Use [].sort instead? 3147 function min() { 3148 var args = [].slice.call(arguments, 0); 3149 3150 return pickBy('isBefore', args); 3151 } 3152 3153 function max() { 3154 var args = [].slice.call(arguments, 0); 3155 3156 return pickBy('isAfter', args); 3157 } 3158 3159 var now = function () { 3160 return Date.now ? Date.now() : +new Date(); 3161 }; 3162 3163 var ordering = [ 3164 'year', 3165 'quarter', 3166 'month', 3167 'week', 3168 'day', 3169 'hour', 3170 'minute', 3171 'second', 3172 'millisecond', 3173 ]; 3174 3175 function isDurationValid(m) { 3176 var key, 3177 unitHasDecimal = false, 3178 i, 3179 orderLen = ordering.length; 3180 for (key in m) { 3181 if ( 3182 hasOwnProp(m, key) && 3183 !( 3184 indexOf.call(ordering, key) !== -1 && 3185 (m[key] == null || !isNaN(m[key])) 3186 ) 3187 ) { 3188 return false; 3189 } 3190 } 3191 3192 for (i = 0; i < orderLen; ++i) { 3193 if (m[ordering[i]]) { 3194 if (unitHasDecimal) { 3195 return false; // only allow non-integers for smallest unit 3196 } 3197 if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { 3198 unitHasDecimal = true; 3199 } 3200 } 3201 } 3202 3203 return true; 3204 } 3205 3206 function isValid$1() { 3207 return this._isValid; 3208 } 3209 3210 function createInvalid$1() { 3211 return createDuration(NaN); 3212 } 3213 3214 function Duration(duration) { 3215 var normalizedInput = normalizeObjectUnits(duration), 3216 years = normalizedInput.year || 0, 3217 quarters = normalizedInput.quarter || 0, 3218 months = normalizedInput.month || 0, 3219 weeks = normalizedInput.week || normalizedInput.isoWeek || 0, 3220 days = normalizedInput.day || 0, 3221 hours = normalizedInput.hour || 0, 3222 minutes = normalizedInput.minute || 0, 3223 seconds = normalizedInput.second || 0, 3224 milliseconds = normalizedInput.millisecond || 0; 3225 3226 this._isValid = isDurationValid(normalizedInput); 3227 3228 // representation for dateAddRemove 3229 this._milliseconds = 3230 +milliseconds + 3231 seconds * 1e3 + // 1000 3232 minutes * 6e4 + // 1000 * 60 3233 hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 3234 // Because of dateAddRemove treats 24 hours as different from a 3235 // day when working around DST, we need to store them separately 3236 this._days = +days + weeks * 7; 3237 // It is impossible to translate months into days without knowing 3238 // which months you are are talking about, so we have to store 3239 // it separately. 3240 this._months = +months + quarters * 3 + years * 12; 3241 3242 this._data = {}; 3243 3244 this._locale = getLocale(); 3245 3246 this._bubble(); 3247 } 3248 3249 function isDuration(obj) { 3250 return obj instanceof Duration; 3251 } 3252 3253 function absRound(number) { 3254 if (number < 0) { 3255 return Math.round(-1 * number) * -1; 3256 } else { 3257 return Math.round(number); 3258 } 3259 } 3260 3261 // compare two arrays, return the number of differences 3262 function compareArrays(array1, array2, dontConvert) { 3263 var len = Math.min(array1.length, array2.length), 3264 lengthDiff = Math.abs(array1.length - array2.length), 3265 diffs = 0, 3266 i; 3267 for (i = 0; i < len; i++) { 3268 if ( 3269 (dontConvert && array1[i] !== array2[i]) || 3270 (!dontConvert && toInt(array1[i]) !== toInt(array2[i])) 3271 ) { 3272 diffs++; 3273 } 3274 } 3275 return diffs + lengthDiff; 3276 } 3277 3278 // FORMATTING 3279 3280 function offset(token, separator) { 3281 addFormatToken(token, 0, 0, function () { 3282 var offset = this.utcOffset(), 3283 sign = '+'; 3284 if (offset < 0) { 3285 offset = -offset; 3286 sign = '-'; 3287 } 3288 return ( 3289 sign + 3290 zeroFill(~~(offset / 60), 2) + 3291 separator + 3292 zeroFill(~~offset % 60, 2) 3293 ); 3294 }); 3295 } 3296 3297 offset('Z', ':'); 3298 offset('ZZ', ''); 3299 3300 // PARSING 3301 3302 addRegexToken('Z', matchShortOffset); 3303 addRegexToken('ZZ', matchShortOffset); 3304 addParseToken(['Z', 'ZZ'], function (input, array, config) { 3305 config._useUTC = true; 3306 config._tzm = offsetFromString(matchShortOffset, input); 3307 }); 3308 3309 // HELPERS 3310 3311 // timezone chunker 3312 // '+10:00' > ['10', '00'] 3313 // '-1530' > ['-15', '30'] 3314 var chunkOffset = /([\+\-]|\d\d)/gi; 3315 3316 function offsetFromString(matcher, string) { 3317 var matches = (string || '').match(matcher), 3318 chunk, 3319 parts, 3320 minutes; 3321 3322 if (matches === null) { 3323 return null; 3324 } 3325 3326 chunk = matches[matches.length - 1] || []; 3327 parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; 3328 minutes = +(parts[1] * 60) + toInt(parts[2]); 3329 3330 return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes; 3331 } 3332 3333 // Return a moment from input, that is local/utc/zone equivalent to model. 3334 function cloneWithOffset(input, model) { 3335 var res, diff; 3336 if (model._isUTC) { 3337 res = model.clone(); 3338 diff = 3339 (isMoment(input) || isDate(input) 3340 ? input.valueOf() 3341 : createLocal(input).valueOf()) - res.valueOf(); 3342 // Use low-level api, because this fn is low-level api. 3343 res._d.setTime(res._d.valueOf() + diff); 3344 hooks.updateOffset(res, false); 3345 return res; 3346 } else { 3347 return createLocal(input).local(); 3348 } 3349 } 3350 3351 function getDateOffset(m) { 3352 // On Firefox.24 Date#getTimezoneOffset returns a floating point. 3353 // https://github.com/moment/moment/pull/1871 3354 return -Math.round(m._d.getTimezoneOffset()); 3355 } 3356 3357 // HOOKS 3358 3359 // This function will be called whenever a moment is mutated. 3360 // It is intended to keep the offset in sync with the timezone. 3361 hooks.updateOffset = function () {}; 3362 3363 // MOMENTS 3364 3365 // keepLocalTime = true means only change the timezone, without 3366 // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> 3367 // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset 3368 // +0200, so we adjust the time as needed, to be valid. 3369 // 3370 // Keeping the time actually adds/subtracts (one hour) 3371 // from the actual represented time. That is why we call updateOffset 3372 // a second time. In case it wants us to change the offset again 3373 // _changeInProgress == true case, then we have to adjust, because 3374 // there is no such time in the given timezone. 3375 function getSetOffset(input, keepLocalTime, keepMinutes) { 3376 var offset = this._offset || 0, 3377 localAdjust; 3378 if (!this.isValid()) { 3379 return input != null ? this : NaN; 3380 } 3381 if (input != null) { 3382 if (typeof input === 'string') { 3383 input = offsetFromString(matchShortOffset, input); 3384 if (input === null) { 3385 return this; 3386 } 3387 } else if (Math.abs(input) < 16 && !keepMinutes) { 3388 input = input * 60; 3389 } 3390 if (!this._isUTC && keepLocalTime) { 3391 localAdjust = getDateOffset(this); 3392 } 3393 this._offset = input; 3394 this._isUTC = true; 3395 if (localAdjust != null) { 3396 this.add(localAdjust, 'm'); 3397 } 3398 if (offset !== input) { 3399 if (!keepLocalTime || this._changeInProgress) { 3400 addSubtract( 3401 this, 3402 createDuration(input - offset, 'm'), 3403 1, 3404 false 3405 ); 3406 } else if (!this._changeInProgress) { 3407 this._changeInProgress = true; 3408 hooks.updateOffset(this, true); 3409 this._changeInProgress = null; 3410 } 3411 } 3412 return this; 3413 } else { 3414 return this._isUTC ? offset : getDateOffset(this); 3415 } 3416 } 3417 3418 function getSetZone(input, keepLocalTime) { 3419 if (input != null) { 3420 if (typeof input !== 'string') { 3421 input = -input; 3422 } 3423 3424 this.utcOffset(input, keepLocalTime); 3425 3426 return this; 3427 } else { 3428 return -this.utcOffset(); 3429 } 3430 } 3431 3432 function setOffsetToUTC(keepLocalTime) { 3433 return this.utcOffset(0, keepLocalTime); 3434 } 3435 3436 function setOffsetToLocal(keepLocalTime) { 3437 if (this._isUTC) { 3438 this.utcOffset(0, keepLocalTime); 3439 this._isUTC = false; 3440 3441 if (keepLocalTime) { 3442 this.subtract(getDateOffset(this), 'm'); 3443 } 3444 } 3445 return this; 3446 } 3447 3448 function setOffsetToParsedOffset() { 3449 if (this._tzm != null) { 3450 this.utcOffset(this._tzm, false, true); 3451 } else if (typeof this._i === 'string') { 3452 var tZone = offsetFromString(matchOffset, this._i); 3453 if (tZone != null) { 3454 this.utcOffset(tZone); 3455 } else { 3456 this.utcOffset(0, true); 3457 } 3458 } 3459 return this; 3460 } 3461 3462 function hasAlignedHourOffset(input) { 3463 if (!this.isValid()) { 3464 return false; 3465 } 3466 input = input ? createLocal(input).utcOffset() : 0; 3467 3468 return (this.utcOffset() - input) % 60 === 0; 3469 } 3470 3471 function isDaylightSavingTime() { 3472 return ( 3473 this.utcOffset() > this.clone().month(0).utcOffset() || 3474 this.utcOffset() > this.clone().month(5).utcOffset() 3475 ); 3476 } 3477 3478 function isDaylightSavingTimeShifted() { 3479 if (!isUndefined(this._isDSTShifted)) { 3480 return this._isDSTShifted; 3481 } 3482 3483 var c = {}, 3484 other; 3485 3486 copyConfig(c, this); 3487 c = prepareConfig(c); 3488 3489 if (c._a) { 3490 other = c._isUTC ? createUTC(c._a) : createLocal(c._a); 3491 this._isDSTShifted = 3492 this.isValid() && compareArrays(c._a, other.toArray()) > 0; 3493 } else { 3494 this._isDSTShifted = false; 3495 } 3496 3497 return this._isDSTShifted; 3498 } 3499 3500 function isLocal() { 3501 return this.isValid() ? !this._isUTC : false; 3502 } 3503 3504 function isUtcOffset() { 3505 return this.isValid() ? this._isUTC : false; 3506 } 3507 3508 function isUtc() { 3509 return this.isValid() ? this._isUTC && this._offset === 0 : false; 3510 } 3511 3512 // ASP.NET json date format regex 3513 var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/, 3514 // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html 3515 // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere 3516 // and further modified to allow for strings containing both week and day 3517 isoRegex = 3518 /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; 3519 3520 function createDuration(input, key) { 3521 var duration = input, 3522 // matching against regexp is expensive, do it on demand 3523 match = null, 3524 sign, 3525 ret, 3526 diffRes; 3527 3528 if (isDuration(input)) { 3529 duration = { 3530 ms: input._milliseconds, 3531 d: input._days, 3532 M: input._months, 3533 }; 3534 } else if (isNumber(input) || !isNaN(+input)) { 3535 duration = {}; 3536 if (key) { 3537 duration[key] = +input; 3538 } else { 3539 duration.milliseconds = +input; 3540 } 3541 } else if ((match = aspNetRegex.exec(input))) { 3542 sign = match[1] === '-' ? -1 : 1; 3543 duration = { 3544 y: 0, 3545 d: toInt(match[DATE]) * sign, 3546 h: toInt(match[HOUR]) * sign, 3547 m: toInt(match[MINUTE]) * sign, 3548 s: toInt(match[SECOND]) * sign, 3549 ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match 3550 }; 3551 } else if ((match = isoRegex.exec(input))) { 3552 sign = match[1] === '-' ? -1 : 1; 3553 duration = { 3554 y: parseIso(match[2], sign), 3555 M: parseIso(match[3], sign), 3556 w: parseIso(match[4], sign), 3557 d: parseIso(match[5], sign), 3558 h: parseIso(match[6], sign), 3559 m: parseIso(match[7], sign), 3560 s: parseIso(match[8], sign), 3561 }; 3562 } else if (duration == null) { 3563 // checks for null or undefined 3564 duration = {}; 3565 } else if ( 3566 typeof duration === 'object' && 3567 ('from' in duration || 'to' in duration) 3568 ) { 3569 diffRes = momentsDifference( 3570 createLocal(duration.from), 3571 createLocal(duration.to) 3572 ); 3573 3574 duration = {}; 3575 duration.ms = diffRes.milliseconds; 3576 duration.M = diffRes.months; 3577 } 3578 3579 ret = new Duration(duration); 3580 3581 if (isDuration(input) && hasOwnProp(input, '_locale')) { 3582 ret._locale = input._locale; 3583 } 3584 3585 if (isDuration(input) && hasOwnProp(input, '_isValid')) { 3586 ret._isValid = input._isValid; 3587 } 3588 3589 return ret; 3590 } 3591 3592 createDuration.fn = Duration.prototype; 3593 createDuration.invalid = createInvalid$1; 3594 3595 function parseIso(inp, sign) { 3596 // We'd normally use ~~inp for this, but unfortunately it also 3597 // converts floats to ints. 3598 // inp may be undefined, so careful calling replace on it. 3599 var res = inp && parseFloat(inp.replace(',', '.')); 3600 // apply sign while we're at it 3601 return (isNaN(res) ? 0 : res) * sign; 3602 } 3603 3604 function positiveMomentsDifference(base, other) { 3605 var res = {}; 3606 3607 res.months = 3608 other.month() - base.month() + (other.year() - base.year()) * 12; 3609 if (base.clone().add(res.months, 'M').isAfter(other)) { 3610 --res.months; 3611 } 3612 3613 res.milliseconds = +other - +base.clone().add(res.months, 'M'); 3614 3615 return res; 3616 } 3617 3618 function momentsDifference(base, other) { 3619 var res; 3620 if (!(base.isValid() && other.isValid())) { 3621 return { milliseconds: 0, months: 0 }; 3622 } 3623 3624 other = cloneWithOffset(other, base); 3625 if (base.isBefore(other)) { 3626 res = positiveMomentsDifference(base, other); 3627 } else { 3628 res = positiveMomentsDifference(other, base); 3629 res.milliseconds = -res.milliseconds; 3630 res.months = -res.months; 3631 } 3632 3633 return res; 3634 } 3635 3636 // TODO: remove 'name' arg after deprecation is removed 3637 function createAdder(direction, name) { 3638 return function (val, period) { 3639 var dur, tmp; 3640 //invert the arguments, but complain about it 3641 if (period !== null && !isNaN(+period)) { 3642 deprecateSimple( 3643 name, 3644 'moment().' + 3645 name + 3646 '(period, number) is deprecated. Please use moment().' + 3647 name + 3648 '(number, period). ' + 3649 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.' 3650 ); 3651 tmp = val; 3652 val = period; 3653 period = tmp; 3654 } 3655 3656 dur = createDuration(val, period); 3657 addSubtract(this, dur, direction); 3658 return this; 3659 }; 3660 } 3661 3662 function addSubtract(mom, duration, isAdding, updateOffset) { 3663 var milliseconds = duration._milliseconds, 3664 days = absRound(duration._days), 3665 months = absRound(duration._months); 3666 3667 if (!mom.isValid()) { 3668 // No op 3669 return; 3670 } 3671 3672 updateOffset = updateOffset == null ? true : updateOffset; 3673 3674 if (months) { 3675 setMonth(mom, get(mom, 'Month') + months * isAdding); 3676 } 3677 if (days) { 3678 set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); 3679 } 3680 if (milliseconds) { 3681 mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); 3682 } 3683 if (updateOffset) { 3684 hooks.updateOffset(mom, days || months); 3685 } 3686 } 3687 3688 var add = createAdder(1, 'add'), 3689 subtract = createAdder(-1, 'subtract'); 3690 3691 function isString(input) { 3692 return typeof input === 'string' || input instanceof String; 3693 } 3694 3695 // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined 3696 function isMomentInput(input) { 3697 return ( 3698 isMoment(input) || 3699 isDate(input) || 3700 isString(input) || 3701 isNumber(input) || 3702 isNumberOrStringArray(input) || 3703 isMomentInputObject(input) || 3704 input === null || 3705 input === undefined 3706 ); 3707 } 3708 3709 function isMomentInputObject(input) { 3710 var objectTest = isObject(input) && !isObjectEmpty(input), 3711 propertyTest = false, 3712 properties = [ 3713 'years', 3714 'year', 3715 'y', 3716 'months', 3717 'month', 3718 'M', 3719 'days', 3720 'day', 3721 'd', 3722 'dates', 3723 'date', 3724 'D', 3725 'hours', 3726 'hour', 3727 'h', 3728 'minutes', 3729 'minute', 3730 'm', 3731 'seconds', 3732 'second', 3733 's', 3734 'milliseconds', 3735 'millisecond', 3736 'ms', 3737 ], 3738 i, 3739 property, 3740 propertyLen = properties.length; 3741 3742 for (i = 0; i < propertyLen; i += 1) { 3743 property = properties[i]; 3744 propertyTest = propertyTest || hasOwnProp(input, property); 3745 } 3746 3747 return objectTest && propertyTest; 3748 } 3749 3750 function isNumberOrStringArray(input) { 3751 var arrayTest = isArray(input), 3752 dataTypeTest = false; 3753 if (arrayTest) { 3754 dataTypeTest = 3755 input.filter(function (item) { 3756 return !isNumber(item) && isString(input); 3757 }).length === 0; 3758 } 3759 return arrayTest && dataTypeTest; 3760 } 3761 3762 function isCalendarSpec(input) { 3763 var objectTest = isObject(input) && !isObjectEmpty(input), 3764 propertyTest = false, 3765 properties = [ 3766 'sameDay', 3767 'nextDay', 3768 'lastDay', 3769 'nextWeek', 3770 'lastWeek', 3771 'sameElse', 3772 ], 3773 i, 3774 property; 3775 3776 for (i = 0; i < properties.length; i += 1) { 3777 property = properties[i]; 3778 propertyTest = propertyTest || hasOwnProp(input, property); 3779 } 3780 3781 return objectTest && propertyTest; 3782 } 3783 3784 function getCalendarFormat(myMoment, now) { 3785 var diff = myMoment.diff(now, 'days', true); 3786 return diff < -6 3787 ? 'sameElse' 3788 : diff < -1 3789 ? 'lastWeek' 3790 : diff < 0 3791 ? 'lastDay' 3792 : diff < 1 3793 ? 'sameDay' 3794 : diff < 2 3795 ? 'nextDay' 3796 : diff < 7 3797 ? 'nextWeek' 3798 : 'sameElse'; 3799 } 3800 3801 function calendar$1(time, formats) { 3802 // Support for single parameter, formats only overload to the calendar function 3803 if (arguments.length === 1) { 3804 if (!arguments[0]) { 3805 time = undefined; 3806 formats = undefined; 3807 } else if (isMomentInput(arguments[0])) { 3808 time = arguments[0]; 3809 formats = undefined; 3810 } else if (isCalendarSpec(arguments[0])) { 3811 formats = arguments[0]; 3812 time = undefined; 3813 } 3814 } 3815 // We want to compare the start of today, vs this. 3816 // Getting start-of-today depends on whether we're local/utc/offset or not. 3817 var now = time || createLocal(), 3818 sod = cloneWithOffset(now, this).startOf('day'), 3819 format = hooks.calendarFormat(this, sod) || 'sameElse', 3820 output = 3821 formats && 3822 (isFunction(formats[format]) 3823 ? formats[format].call(this, now) 3824 : formats[format]); 3825 3826 return this.format( 3827 output || this.localeData().calendar(format, this, createLocal(now)) 3828 ); 3829 } 3830 3831 function clone() { 3832 return new Moment(this); 3833 } 3834 3835 function isAfter(input, units) { 3836 var localInput = isMoment(input) ? input : createLocal(input); 3837 if (!(this.isValid() && localInput.isValid())) { 3838 return false; 3839 } 3840 units = normalizeUnits(units) || 'millisecond'; 3841 if (units === 'millisecond') { 3842 return this.valueOf() > localInput.valueOf(); 3843 } else { 3844 return localInput.valueOf() < this.clone().startOf(units).valueOf(); 3845 } 3846 } 3847 3848 function isBefore(input, units) { 3849 var localInput = isMoment(input) ? input : createLocal(input); 3850 if (!(this.isValid() && localInput.isValid())) { 3851 return false; 3852 } 3853 units = normalizeUnits(units) || 'millisecond'; 3854 if (units === 'millisecond') { 3855 return this.valueOf() < localInput.valueOf(); 3856 } else { 3857 return this.clone().endOf(units).valueOf() < localInput.valueOf(); 3858 } 3859 } 3860 3861 function isBetween(from, to, units, inclusivity) { 3862 var localFrom = isMoment(from) ? from : createLocal(from), 3863 localTo = isMoment(to) ? to : createLocal(to); 3864 if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) { 3865 return false; 3866 } 3867 inclusivity = inclusivity || '()'; 3868 return ( 3869 (inclusivity[0] === '(' 3870 ? this.isAfter(localFrom, units) 3871 : !this.isBefore(localFrom, units)) && 3872 (inclusivity[1] === ')' 3873 ? this.isBefore(localTo, units) 3874 : !this.isAfter(localTo, units)) 3875 ); 3876 } 3877 3878 function isSame(input, units) { 3879 var localInput = isMoment(input) ? input : createLocal(input), 3880 inputMs; 3881 if (!(this.isValid() && localInput.isValid())) { 3882 return false; 3883 } 3884 units = normalizeUnits(units) || 'millisecond'; 3885 if (units === 'millisecond') { 3886 return this.valueOf() === localInput.valueOf(); 3887 } else { 3888 inputMs = localInput.valueOf(); 3889 return ( 3890 this.clone().startOf(units).valueOf() <= inputMs && 3891 inputMs <= this.clone().endOf(units).valueOf() 3892 ); 3893 } 3894 } 3895 3896 function isSameOrAfter(input, units) { 3897 return this.isSame(input, units) || this.isAfter(input, units); 3898 } 3899 3900 function isSameOrBefore(input, units) { 3901 return this.isSame(input, units) || this.isBefore(input, units); 3902 } 3903 3904 function diff(input, units, asFloat) { 3905 var that, zoneDelta, output; 3906 3907 if (!this.isValid()) { 3908 return NaN; 3909 } 3910 3911 that = cloneWithOffset(input, this); 3912 3913 if (!that.isValid()) { 3914 return NaN; 3915 } 3916 3917 zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; 3918 3919 units = normalizeUnits(units); 3920 3921 switch (units) { 3922 case 'year': 3923 output = monthDiff(this, that) / 12; 3924 break; 3925 case 'month': 3926 output = monthDiff(this, that); 3927 break; 3928 case 'quarter': 3929 output = monthDiff(this, that) / 3; 3930 break; 3931 case 'second': 3932 output = (this - that) / 1e3; 3933 break; // 1000 3934 case 'minute': 3935 output = (this - that) / 6e4; 3936 break; // 1000 * 60 3937 case 'hour': 3938 output = (this - that) / 36e5; 3939 break; // 1000 * 60 * 60 3940 case 'day': 3941 output = (this - that - zoneDelta) / 864e5; 3942 break; // 1000 * 60 * 60 * 24, negate dst 3943 case 'week': 3944 output = (this - that - zoneDelta) / 6048e5; 3945 break; // 1000 * 60 * 60 * 24 * 7, negate dst 3946 default: 3947 output = this - that; 3948 } 3949 3950 return asFloat ? output : absFloor(output); 3951 } 3952 3953 function monthDiff(a, b) { 3954 if (a.date() < b.date()) { 3955 // end-of-month calculations work correct when the start month has more 3956 // days than the end month. 3957 return -monthDiff(b, a); 3958 } 3959 // difference in months 3960 var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()), 3961 // b is in (anchor - 1 month, anchor + 1 month) 3962 anchor = a.clone().add(wholeMonthDiff, 'months'), 3963 anchor2, 3964 adjust; 3965 3966 if (b - anchor < 0) { 3967 anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); 3968 // linear across the month 3969 adjust = (b - anchor) / (anchor - anchor2); 3970 } else { 3971 anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); 3972 // linear across the month 3973 adjust = (b - anchor) / (anchor2 - anchor); 3974 } 3975 3976 //check for negative zero, return zero if negative zero 3977 return -(wholeMonthDiff + adjust) || 0; 3978 } 3979 3980 hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; 3981 hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; 3982 3983 function toString() { 3984 return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); 3985 } 3986 3987 function toISOString(keepOffset) { 3988 if (!this.isValid()) { 3989 return null; 3990 } 3991 var utc = keepOffset !== true, 3992 m = utc ? this.clone().utc() : this; 3993 if (m.year() < 0 || m.year() > 9999) { 3994 return formatMoment( 3995 m, 3996 utc 3997 ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' 3998 : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ' 3999 ); 4000 } 4001 if (isFunction(Date.prototype.toISOString)) { 4002 // native implementation is ~50x faster, use it when we can 4003 if (utc) { 4004 return this.toDate().toISOString(); 4005 } else { 4006 return new Date(this.valueOf() + this.utcOffset() * 60 * 1000) 4007 .toISOString() 4008 .replace('Z', formatMoment(m, 'Z')); 4009 } 4010 } 4011 return formatMoment( 4012 m, 4013 utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ' 4014 ); 4015 } 4016 4017 /** 4018 * Return a human readable representation of a moment that can 4019 * also be evaluated to get a new moment which is the same 4020 * 4021 * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects 4022 */ 4023 function inspect() { 4024 if (!this.isValid()) { 4025 return 'moment.invalid(/* ' + this._i + ' */)'; 4026 } 4027 var func = 'moment', 4028 zone = '', 4029 prefix, 4030 year, 4031 datetime, 4032 suffix; 4033 if (!this.isLocal()) { 4034 func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; 4035 zone = 'Z'; 4036 } 4037 prefix = '[' + func + '("]'; 4038 year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY'; 4039 datetime = '-MM-DD[T]HH:mm:ss.SSS'; 4040 suffix = zone + '[")]'; 4041 4042 return this.format(prefix + year + datetime + suffix); 4043 } 4044 4045 function format(inputString) { 4046 if (!inputString) { 4047 inputString = this.isUtc() 4048 ? hooks.defaultFormatUtc 4049 : hooks.defaultFormat; 4050 } 4051 var output = formatMoment(this, inputString); 4052 return this.localeData().postformat(output); 4053 } 4054 4055 function from(time, withoutSuffix) { 4056 if ( 4057 this.isValid() && 4058 ((isMoment(time) && time.isValid()) || createLocal(time).isValid()) 4059 ) { 4060 return createDuration({ to: this, from: time }) 4061 .locale(this.locale()) 4062 .humanize(!withoutSuffix); 4063 } else { 4064 return this.localeData().invalidDate(); 4065 } 4066 } 4067 4068 function fromNow(withoutSuffix) { 4069 return this.from(createLocal(), withoutSuffix); 4070 } 4071 4072 function to(time, withoutSuffix) { 4073 if ( 4074 this.isValid() && 4075 ((isMoment(time) && time.isValid()) || createLocal(time).isValid()) 4076 ) { 4077 return createDuration({ from: this, to: time }) 4078 .locale(this.locale()) 4079 .humanize(!withoutSuffix); 4080 } else { 4081 return this.localeData().invalidDate(); 4082 } 4083 } 4084 4085 function toNow(withoutSuffix) { 4086 return this.to(createLocal(), withoutSuffix); 4087 } 4088 4089 // If passed a locale key, it will set the locale for this 4090 // instance. Otherwise, it will return the locale configuration 4091 // variables for this instance. 4092 function locale(key) { 4093 var newLocaleData; 4094 4095 if (key === undefined) { 4096 return this._locale._abbr; 4097 } else { 4098 newLocaleData = getLocale(key); 4099 if (newLocaleData != null) { 4100 this._locale = newLocaleData; 4101 } 4102 return this; 4103 } 4104 } 4105 4106 var lang = deprecate( 4107 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', 4108 function (key) { 4109 if (key === undefined) { 4110 return this.localeData(); 4111 } else { 4112 return this.locale(key); 4113 } 4114 } 4115 ); 4116 4117 function localeData() { 4118 return this._locale; 4119 } 4120 4121 var MS_PER_SECOND = 1000, 4122 MS_PER_MINUTE = 60 * MS_PER_SECOND, 4123 MS_PER_HOUR = 60 * MS_PER_MINUTE, 4124 MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; 4125 4126 // actual modulo - handles negative numbers (for dates before 1970): 4127 function mod$1(dividend, divisor) { 4128 return ((dividend % divisor) + divisor) % divisor; 4129 } 4130 4131 function localStartOfDate(y, m, d) { 4132 // the date constructor remaps years 0-99 to 1900-1999 4133 if (y < 100 && y >= 0) { 4134 // preserve leap years using a full 400 year cycle, then reset 4135 return new Date(y + 400, m, d) - MS_PER_400_YEARS; 4136 } else { 4137 return new Date(y, m, d).valueOf(); 4138 } 4139 } 4140 4141 function utcStartOfDate(y, m, d) { 4142 // Date.UTC remaps years 0-99 to 1900-1999 4143 if (y < 100 && y >= 0) { 4144 // preserve leap years using a full 400 year cycle, then reset 4145 return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS; 4146 } else { 4147 return Date.UTC(y, m, d); 4148 } 4149 } 4150 4151 function startOf(units) { 4152 var time, startOfDate; 4153 units = normalizeUnits(units); 4154 if (units === undefined || units === 'millisecond' || !this.isValid()) { 4155 return this; 4156 } 4157 4158 startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; 4159 4160 switch (units) { 4161 case 'year': 4162 time = startOfDate(this.year(), 0, 1); 4163 break; 4164 case 'quarter': 4165 time = startOfDate( 4166 this.year(), 4167 this.month() - (this.month() % 3), 4168 1 4169 ); 4170 break; 4171 case 'month': 4172 time = startOfDate(this.year(), this.month(), 1); 4173 break; 4174 case 'week': 4175 time = startOfDate( 4176 this.year(), 4177 this.month(), 4178 this.date() - this.weekday() 4179 ); 4180 break; 4181 case 'isoWeek': 4182 time = startOfDate( 4183 this.year(), 4184 this.month(), 4185 this.date() - (this.isoWeekday() - 1) 4186 ); 4187 break; 4188 case 'day': 4189 case 'date': 4190 time = startOfDate(this.year(), this.month(), this.date()); 4191 break; 4192 case 'hour': 4193 time = this._d.valueOf(); 4194 time -= mod$1( 4195 time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), 4196 MS_PER_HOUR 4197 ); 4198 break; 4199 case 'minute': 4200 time = this._d.valueOf(); 4201 time -= mod$1(time, MS_PER_MINUTE); 4202 break; 4203 case 'second': 4204 time = this._d.valueOf(); 4205 time -= mod$1(time, MS_PER_SECOND); 4206 break; 4207 } 4208 4209 this._d.setTime(time); 4210 hooks.updateOffset(this, true); 4211 return this; 4212 } 4213 4214 function endOf(units) { 4215 var time, startOfDate; 4216 units = normalizeUnits(units); 4217 if (units === undefined || units === 'millisecond' || !this.isValid()) { 4218 return this; 4219 } 4220 4221 startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; 4222 4223 switch (units) { 4224 case 'year': 4225 time = startOfDate(this.year() + 1, 0, 1) - 1; 4226 break; 4227 case 'quarter': 4228 time = 4229 startOfDate( 4230 this.year(), 4231 this.month() - (this.month() % 3) + 3, 4232 1 4233 ) - 1; 4234 break; 4235 case 'month': 4236 time = startOfDate(this.year(), this.month() + 1, 1) - 1; 4237 break; 4238 case 'week': 4239 time = 4240 startOfDate( 4241 this.year(), 4242 this.month(), 4243 this.date() - this.weekday() + 7 4244 ) - 1; 4245 break; 4246 case 'isoWeek': 4247 time = 4248 startOfDate( 4249 this.year(), 4250 this.month(), 4251 this.date() - (this.isoWeekday() - 1) + 7 4252 ) - 1; 4253 break; 4254 case 'day': 4255 case 'date': 4256 time = startOfDate(this.year(), this.month(), this.date() + 1) - 1; 4257 break; 4258 case 'hour': 4259 time = this._d.valueOf(); 4260 time += 4261 MS_PER_HOUR - 4262 mod$1( 4263 time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), 4264 MS_PER_HOUR 4265 ) - 4266 1; 4267 break; 4268 case 'minute': 4269 time = this._d.valueOf(); 4270 time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1; 4271 break; 4272 case 'second': 4273 time = this._d.valueOf(); 4274 time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1; 4275 break; 4276 } 4277 4278 this._d.setTime(time); 4279 hooks.updateOffset(this, true); 4280 return this; 4281 } 4282 4283 function valueOf() { 4284 return this._d.valueOf() - (this._offset || 0) * 60000; 4285 } 4286 4287 function unix() { 4288 return Math.floor(this.valueOf() / 1000); 4289 } 4290 4291 function toDate() { 4292 return new Date(this.valueOf()); 4293 } 4294 4295 function toArray() { 4296 var m = this; 4297 return [ 4298 m.year(), 4299 m.month(), 4300 m.date(), 4301 m.hour(), 4302 m.minute(), 4303 m.second(), 4304 m.millisecond(), 4305 ]; 4306 } 4307 4308 function toObject() { 4309 var m = this; 4310 return { 4311 years: m.year(), 4312 months: m.month(), 4313 date: m.date(), 4314 hours: m.hours(), 4315 minutes: m.minutes(), 4316 seconds: m.seconds(), 4317 milliseconds: m.milliseconds(), 4318 }; 4319 } 4320 4321 function toJSON() { 4322 // new Date(NaN).toJSON() === null 4323 return this.isValid() ? this.toISOString() : null; 4324 } 4325 4326 function isValid$2() { 4327 return isValid(this); 4328 } 4329 4330 function parsingFlags() { 4331 return extend({}, getParsingFlags(this)); 4332 } 4333 4334 function invalidAt() { 4335 return getParsingFlags(this).overflow; 4336 } 4337 4338 function creationData() { 4339 return { 4340 input: this._i, 4341 format: this._f, 4342 locale: this._locale, 4343 isUTC: this._isUTC, 4344 strict: this._strict, 4345 }; 4346 } 4347 4348 addFormatToken('N', 0, 0, 'eraAbbr'); 4349 addFormatToken('NN', 0, 0, 'eraAbbr'); 4350 addFormatToken('NNN', 0, 0, 'eraAbbr'); 4351 addFormatToken('NNNN', 0, 0, 'eraName'); 4352 addFormatToken('NNNNN', 0, 0, 'eraNarrow'); 4353 4354 addFormatToken('y', ['y', 1], 'yo', 'eraYear'); 4355 addFormatToken('y', ['yy', 2], 0, 'eraYear'); 4356 addFormatToken('y', ['yyy', 3], 0, 'eraYear'); 4357 addFormatToken('y', ['yyyy', 4], 0, 'eraYear'); 4358 4359 addRegexToken('N', matchEraAbbr); 4360 addRegexToken('NN', matchEraAbbr); 4361 addRegexToken('NNN', matchEraAbbr); 4362 addRegexToken('NNNN', matchEraName); 4363 addRegexToken('NNNNN', matchEraNarrow); 4364 4365 addParseToken( 4366 ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], 4367 function (input, array, config, token) { 4368 var era = config._locale.erasParse(input, token, config._strict); 4369 if (era) { 4370 getParsingFlags(config).era = era; 4371 } else { 4372 getParsingFlags(config).invalidEra = input; 4373 } 4374 } 4375 ); 4376 4377 addRegexToken('y', matchUnsigned); 4378 addRegexToken('yy', matchUnsigned); 4379 addRegexToken('yyy', matchUnsigned); 4380 addRegexToken('yyyy', matchUnsigned); 4381 addRegexToken('yo', matchEraYearOrdinal); 4382 4383 addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR); 4384 addParseToken(['yo'], function (input, array, config, token) { 4385 var match; 4386 if (config._locale._eraYearOrdinalRegex) { 4387 match = input.match(config._locale._eraYearOrdinalRegex); 4388 } 4389 4390 if (config._locale.eraYearOrdinalParse) { 4391 array[YEAR] = config._locale.eraYearOrdinalParse(input, match); 4392 } else { 4393 array[YEAR] = parseInt(input, 10); 4394 } 4395 }); 4396 4397 function localeEras(m, format) { 4398 var i, 4399 l, 4400 date, 4401 eras = this._eras || getLocale('en')._eras; 4402 for (i = 0, l = eras.length; i < l; ++i) { 4403 switch (typeof eras[i].since) { 4404 case 'string': 4405 // truncate time 4406 date = hooks(eras[i].since).startOf('day'); 4407 eras[i].since = date.valueOf(); 4408 break; 4409 } 4410 4411 switch (typeof eras[i].until) { 4412 case 'undefined': 4413 eras[i].until = +Infinity; 4414 break; 4415 case 'string': 4416 // truncate time 4417 date = hooks(eras[i].until).startOf('day').valueOf(); 4418 eras[i].until = date.valueOf(); 4419 break; 4420 } 4421 } 4422 return eras; 4423 } 4424 4425 function localeErasParse(eraName, format, strict) { 4426 var i, 4427 l, 4428 eras = this.eras(), 4429 name, 4430 abbr, 4431 narrow; 4432 eraName = eraName.toUpperCase(); 4433 4434 for (i = 0, l = eras.length; i < l; ++i) { 4435 name = eras[i].name.toUpperCase(); 4436 abbr = eras[i].abbr.toUpperCase(); 4437 narrow = eras[i].narrow.toUpperCase(); 4438 4439 if (strict) { 4440 switch (format) { 4441 case 'N': 4442 case 'NN': 4443 case 'NNN': 4444 if (abbr === eraName) { 4445 return eras[i]; 4446 } 4447 break; 4448 4449 case 'NNNN': 4450 if (name === eraName) { 4451 return eras[i]; 4452 } 4453 break; 4454 4455 case 'NNNNN': 4456 if (narrow === eraName) { 4457 return eras[i]; 4458 } 4459 break; 4460 } 4461 } else if ([name, abbr, narrow].indexOf(eraName) >= 0) { 4462 return eras[i]; 4463 } 4464 } 4465 } 4466 4467 function localeErasConvertYear(era, year) { 4468 var dir = era.since <= era.until ? +1 : -1; 4469 if (year === undefined) { 4470 return hooks(era.since).year(); 4471 } else { 4472 return hooks(era.since).year() + (year - era.offset) * dir; 4473 } 4474 } 4475 4476 function getEraName() { 4477 var i, 4478 l, 4479 val, 4480 eras = this.localeData().eras(); 4481 for (i = 0, l = eras.length; i < l; ++i) { 4482 // truncate time 4483 val = this.clone().startOf('day').valueOf(); 4484 4485 if (eras[i].since <= val && val <= eras[i].until) { 4486 return eras[i].name; 4487 } 4488 if (eras[i].until <= val && val <= eras[i].since) { 4489 return eras[i].name; 4490 } 4491 } 4492 4493 return ''; 4494 } 4495 4496 function getEraNarrow() { 4497 var i, 4498 l, 4499 val, 4500 eras = this.localeData().eras(); 4501 for (i = 0, l = eras.length; i < l; ++i) { 4502 // truncate time 4503 val = this.clone().startOf('day').valueOf(); 4504 4505 if (eras[i].since <= val && val <= eras[i].until) { 4506 return eras[i].narrow; 4507 } 4508 if (eras[i].until <= val && val <= eras[i].since) { 4509 return eras[i].narrow; 4510 } 4511 } 4512 4513 return ''; 4514 } 4515 4516 function getEraAbbr() { 4517 var i, 4518 l, 4519 val, 4520 eras = this.localeData().eras(); 4521 for (i = 0, l = eras.length; i < l; ++i) { 4522 // truncate time 4523 val = this.clone().startOf('day').valueOf(); 4524 4525 if (eras[i].since <= val && val <= eras[i].until) { 4526 return eras[i].abbr; 4527 } 4528 if (eras[i].until <= val && val <= eras[i].since) { 4529 return eras[i].abbr; 4530 } 4531 } 4532 4533 return ''; 4534 } 4535 4536 function getEraYear() { 4537 var i, 4538 l, 4539 dir, 4540 val, 4541 eras = this.localeData().eras(); 4542 for (i = 0, l = eras.length; i < l; ++i) { 4543 dir = eras[i].since <= eras[i].until ? +1 : -1; 4544 4545 // truncate time 4546 val = this.clone().startOf('day').valueOf(); 4547 4548 if ( 4549 (eras[i].since <= val && val <= eras[i].until) || 4550 (eras[i].until <= val && val <= eras[i].since) 4551 ) { 4552 return ( 4553 (this.year() - hooks(eras[i].since).year()) * dir + 4554 eras[i].offset 4555 ); 4556 } 4557 } 4558 4559 return this.year(); 4560 } 4561 4562 function erasNameRegex(isStrict) { 4563 if (!hasOwnProp(this, '_erasNameRegex')) { 4564 computeErasParse.call(this); 4565 } 4566 return isStrict ? this._erasNameRegex : this._erasRegex; 4567 } 4568 4569 function erasAbbrRegex(isStrict) { 4570 if (!hasOwnProp(this, '_erasAbbrRegex')) { 4571 computeErasParse.call(this); 4572 } 4573 return isStrict ? this._erasAbbrRegex : this._erasRegex; 4574 } 4575 4576 function erasNarrowRegex(isStrict) { 4577 if (!hasOwnProp(this, '_erasNarrowRegex')) { 4578 computeErasParse.call(this); 4579 } 4580 return isStrict ? this._erasNarrowRegex : this._erasRegex; 4581 } 4582 4583 function matchEraAbbr(isStrict, locale) { 4584 return locale.erasAbbrRegex(isStrict); 4585 } 4586 4587 function matchEraName(isStrict, locale) { 4588 return locale.erasNameRegex(isStrict); 4589 } 4590 4591 function matchEraNarrow(isStrict, locale) { 4592 return locale.erasNarrowRegex(isStrict); 4593 } 4594 4595 function matchEraYearOrdinal(isStrict, locale) { 4596 return locale._eraYearOrdinalRegex || matchUnsigned; 4597 } 4598 4599 function computeErasParse() { 4600 var abbrPieces = [], 4601 namePieces = [], 4602 narrowPieces = [], 4603 mixedPieces = [], 4604 i, 4605 l, 4606 erasName, 4607 erasAbbr, 4608 erasNarrow, 4609 eras = this.eras(); 4610 4611 for (i = 0, l = eras.length; i < l; ++i) { 4612 erasName = regexEscape(eras[i].name); 4613 erasAbbr = regexEscape(eras[i].abbr); 4614 erasNarrow = regexEscape(eras[i].narrow); 4615 4616 namePieces.push(erasName); 4617 abbrPieces.push(erasAbbr); 4618 narrowPieces.push(erasNarrow); 4619 mixedPieces.push(erasName); 4620 mixedPieces.push(erasAbbr); 4621 mixedPieces.push(erasNarrow); 4622 } 4623 4624 this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); 4625 this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i'); 4626 this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i'); 4627 this._erasNarrowRegex = new RegExp( 4628 '^(' + narrowPieces.join('|') + ')', 4629 'i' 4630 ); 4631 } 4632 4633 // FORMATTING 4634 4635 addFormatToken(0, ['gg', 2], 0, function () { 4636 return this.weekYear() % 100; 4637 }); 4638 4639 addFormatToken(0, ['GG', 2], 0, function () { 4640 return this.isoWeekYear() % 100; 4641 }); 4642 4643 function addWeekYearFormatToken(token, getter) { 4644 addFormatToken(0, [token, token.length], 0, getter); 4645 } 4646 4647 addWeekYearFormatToken('gggg', 'weekYear'); 4648 addWeekYearFormatToken('ggggg', 'weekYear'); 4649 addWeekYearFormatToken('GGGG', 'isoWeekYear'); 4650 addWeekYearFormatToken('GGGGG', 'isoWeekYear'); 4651 4652 // ALIASES 4653 4654 // PARSING 4655 4656 addRegexToken('G', matchSigned); 4657 addRegexToken('g', matchSigned); 4658 addRegexToken('GG', match1to2, match2); 4659 addRegexToken('gg', match1to2, match2); 4660 addRegexToken('GGGG', match1to4, match4); 4661 addRegexToken('gggg', match1to4, match4); 4662 addRegexToken('GGGGG', match1to6, match6); 4663 addRegexToken('ggggg', match1to6, match6); 4664 4665 addWeekParseToken( 4666 ['gggg', 'ggggg', 'GGGG', 'GGGGG'], 4667 function (input, week, config, token) { 4668 week[token.substr(0, 2)] = toInt(input); 4669 } 4670 ); 4671 4672 addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { 4673 week[token] = hooks.parseTwoDigitYear(input); 4674 }); 4675 4676 // MOMENTS 4677 4678 function getSetWeekYear(input) { 4679 return getSetWeekYearHelper.call( 4680 this, 4681 input, 4682 this.week(), 4683 this.weekday() + this.localeData()._week.dow, 4684 this.localeData()._week.dow, 4685 this.localeData()._week.doy 4686 ); 4687 } 4688 4689 function getSetISOWeekYear(input) { 4690 return getSetWeekYearHelper.call( 4691 this, 4692 input, 4693 this.isoWeek(), 4694 this.isoWeekday(), 4695 1, 4696 4 4697 ); 4698 } 4699 4700 function getISOWeeksInYear() { 4701 return weeksInYear(this.year(), 1, 4); 4702 } 4703 4704 function getISOWeeksInISOWeekYear() { 4705 return weeksInYear(this.isoWeekYear(), 1, 4); 4706 } 4707 4708 function getWeeksInYear() { 4709 var weekInfo = this.localeData()._week; 4710 return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); 4711 } 4712 4713 function getWeeksInWeekYear() { 4714 var weekInfo = this.localeData()._week; 4715 return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy); 4716 } 4717 4718 function getSetWeekYearHelper(input, week, weekday, dow, doy) { 4719 var weeksTarget; 4720 if (input == null) { 4721 return weekOfYear(this, dow, doy).year; 4722 } else { 4723 weeksTarget = weeksInYear(input, dow, doy); 4724 if (week > weeksTarget) { 4725 week = weeksTarget; 4726 } 4727 return setWeekAll.call(this, input, week, weekday, dow, doy); 4728 } 4729 } 4730 4731 function setWeekAll(weekYear, week, weekday, dow, doy) { 4732 var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), 4733 date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); 4734 4735 this.year(date.getUTCFullYear()); 4736 this.month(date.getUTCMonth()); 4737 this.date(date.getUTCDate()); 4738 return this; 4739 } 4740 4741 // FORMATTING 4742 4743 addFormatToken('Q', 0, 'Qo', 'quarter'); 4744 4745 // PARSING 4746 4747 addRegexToken('Q', match1); 4748 addParseToken('Q', function (input, array) { 4749 array[MONTH] = (toInt(input) - 1) * 3; 4750 }); 4751 4752 // MOMENTS 4753 4754 function getSetQuarter(input) { 4755 return input == null 4756 ? Math.ceil((this.month() + 1) / 3) 4757 : this.month((input - 1) * 3 + (this.month() % 3)); 4758 } 4759 4760 // FORMATTING 4761 4762 addFormatToken('D', ['DD', 2], 'Do', 'date'); 4763 4764 // PARSING 4765 4766 addRegexToken('D', match1to2, match1to2NoLeadingZero); 4767 addRegexToken('DD', match1to2, match2); 4768 addRegexToken('Do', function (isStrict, locale) { 4769 // TODO: Remove "ordinalParse" fallback in next major release. 4770 return isStrict 4771 ? locale._dayOfMonthOrdinalParse || locale._ordinalParse 4772 : locale._dayOfMonthOrdinalParseLenient; 4773 }); 4774 4775 addParseToken(['D', 'DD'], DATE); 4776 addParseToken('Do', function (input, array) { 4777 array[DATE] = toInt(input.match(match1to2)[0]); 4778 }); 4779 4780 // MOMENTS 4781 4782 var getSetDayOfMonth = makeGetSet('Date', true); 4783 4784 // FORMATTING 4785 4786 addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); 4787 4788 // PARSING 4789 4790 addRegexToken('DDD', match1to3); 4791 addRegexToken('DDDD', match3); 4792 addParseToken(['DDD', 'DDDD'], function (input, array, config) { 4793 config._dayOfYear = toInt(input); 4794 }); 4795 4796 // HELPERS 4797 4798 // MOMENTS 4799 4800 function getSetDayOfYear(input) { 4801 var dayOfYear = 4802 Math.round( 4803 (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5 4804 ) + 1; 4805 return input == null ? dayOfYear : this.add(input - dayOfYear, 'd'); 4806 } 4807 4808 // FORMATTING 4809 4810 addFormatToken('m', ['mm', 2], 0, 'minute'); 4811 4812 // PARSING 4813 4814 addRegexToken('m', match1to2, match1to2HasZero); 4815 addRegexToken('mm', match1to2, match2); 4816 addParseToken(['m', 'mm'], MINUTE); 4817 4818 // MOMENTS 4819 4820 var getSetMinute = makeGetSet('Minutes', false); 4821 4822 // FORMATTING 4823 4824 addFormatToken('s', ['ss', 2], 0, 'second'); 4825 4826 // PARSING 4827 4828 addRegexToken('s', match1to2, match1to2HasZero); 4829 addRegexToken('ss', match1to2, match2); 4830 addParseToken(['s', 'ss'], SECOND); 4831 4832 // MOMENTS 4833 4834 var getSetSecond = makeGetSet('Seconds', false); 4835 4836 // FORMATTING 4837 4838 addFormatToken('S', 0, 0, function () { 4839 return ~~(this.millisecond() / 100); 4840 }); 4841 4842 addFormatToken(0, ['SS', 2], 0, function () { 4843 return ~~(this.millisecond() / 10); 4844 }); 4845 4846 addFormatToken(0, ['SSS', 3], 0, 'millisecond'); 4847 addFormatToken(0, ['SSSS', 4], 0, function () { 4848 return this.millisecond() * 10; 4849 }); 4850 addFormatToken(0, ['SSSSS', 5], 0, function () { 4851 return this.millisecond() * 100; 4852 }); 4853 addFormatToken(0, ['SSSSSS', 6], 0, function () { 4854 return this.millisecond() * 1000; 4855 }); 4856 addFormatToken(0, ['SSSSSSS', 7], 0, function () { 4857 return this.millisecond() * 10000; 4858 }); 4859 addFormatToken(0, ['SSSSSSSS', 8], 0, function () { 4860 return this.millisecond() * 100000; 4861 }); 4862 addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { 4863 return this.millisecond() * 1000000; 4864 }); 4865 4866 // PARSING 4867 4868 addRegexToken('S', match1to3, match1); 4869 addRegexToken('SS', match1to3, match2); 4870 addRegexToken('SSS', match1to3, match3); 4871 4872 var token, getSetMillisecond; 4873 for (token = 'SSSS'; token.length <= 9; token += 'S') { 4874 addRegexToken(token, matchUnsigned); 4875 } 4876 4877 function parseMs(input, array) { 4878 array[MILLISECOND] = toInt(('0.' + input) * 1000); 4879 } 4880 4881 for (token = 'S'; token.length <= 9; token += 'S') { 4882 addParseToken(token, parseMs); 4883 } 4884 4885 getSetMillisecond = makeGetSet('Milliseconds', false); 4886 4887 // FORMATTING 4888 4889 addFormatToken('z', 0, 0, 'zoneAbbr'); 4890 addFormatToken('zz', 0, 0, 'zoneName'); 4891 4892 // MOMENTS 4893 4894 function getZoneAbbr() { 4895 return this._isUTC ? 'UTC' : ''; 4896 } 4897 4898 function getZoneName() { 4899 return this._isUTC ? 'Coordinated Universal Time' : ''; 4900 } 4901 4902 var proto = Moment.prototype; 4903 4904 proto.add = add; 4905 proto.calendar = calendar$1; 4906 proto.clone = clone; 4907 proto.diff = diff; 4908 proto.endOf = endOf; 4909 proto.format = format; 4910 proto.from = from; 4911 proto.fromNow = fromNow; 4912 proto.to = to; 4913 proto.toNow = toNow; 4914 proto.get = stringGet; 4915 proto.invalidAt = invalidAt; 4916 proto.isAfter = isAfter; 4917 proto.isBefore = isBefore; 4918 proto.isBetween = isBetween; 4919 proto.isSame = isSame; 4920 proto.isSameOrAfter = isSameOrAfter; 4921 proto.isSameOrBefore = isSameOrBefore; 4922 proto.isValid = isValid$2; 4923 proto.lang = lang; 4924 proto.locale = locale; 4925 proto.localeData = localeData; 4926 proto.max = prototypeMax; 4927 proto.min = prototypeMin; 4928 proto.parsingFlags = parsingFlags; 4929 proto.set = stringSet; 4930 proto.startOf = startOf; 4931 proto.subtract = subtract; 4932 proto.toArray = toArray; 4933 proto.toObject = toObject; 4934 proto.toDate = toDate; 4935 proto.toISOString = toISOString; 4936 proto.inspect = inspect; 4937 if (typeof Symbol !== 'undefined' && Symbol.for != null) { 4938 proto[Symbol.for('nodejs.util.inspect.custom')] = function () { 4939 return 'Moment<' + this.format() + '>'; 4940 }; 4941 } 4942 proto.toJSON = toJSON; 4943 proto.toString = toString; 4944 proto.unix = unix; 4945 proto.valueOf = valueOf; 4946 proto.creationData = creationData; 4947 proto.eraName = getEraName; 4948 proto.eraNarrow = getEraNarrow; 4949 proto.eraAbbr = getEraAbbr; 4950 proto.eraYear = getEraYear; 4951 proto.year = getSetYear; 4952 proto.isLeapYear = getIsLeapYear; 4953 proto.weekYear = getSetWeekYear; 4954 proto.isoWeekYear = getSetISOWeekYear; 4955 proto.quarter = proto.quarters = getSetQuarter; 4956 proto.month = getSetMonth; 4957 proto.daysInMonth = getDaysInMonth; 4958 proto.week = proto.weeks = getSetWeek; 4959 proto.isoWeek = proto.isoWeeks = getSetISOWeek; 4960 proto.weeksInYear = getWeeksInYear; 4961 proto.weeksInWeekYear = getWeeksInWeekYear; 4962 proto.isoWeeksInYear = getISOWeeksInYear; 4963 proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear; 4964 proto.date = getSetDayOfMonth; 4965 proto.day = proto.days = getSetDayOfWeek; 4966 proto.weekday = getSetLocaleDayOfWeek; 4967 proto.isoWeekday = getSetISODayOfWeek; 4968 proto.dayOfYear = getSetDayOfYear; 4969 proto.hour = proto.hours = getSetHour; 4970 proto.minute = proto.minutes = getSetMinute; 4971 proto.second = proto.seconds = getSetSecond; 4972 proto.millisecond = proto.milliseconds = getSetMillisecond; 4973 proto.utcOffset = getSetOffset; 4974 proto.utc = setOffsetToUTC; 4975 proto.local = setOffsetToLocal; 4976 proto.parseZone = setOffsetToParsedOffset; 4977 proto.hasAlignedHourOffset = hasAlignedHourOffset; 4978 proto.isDST = isDaylightSavingTime; 4979 proto.isLocal = isLocal; 4980 proto.isUtcOffset = isUtcOffset; 4981 proto.isUtc = isUtc; 4982 proto.isUTC = isUtc; 4983 proto.zoneAbbr = getZoneAbbr; 4984 proto.zoneName = getZoneName; 4985 proto.dates = deprecate( 4986 'dates accessor is deprecated. Use date instead.', 4987 getSetDayOfMonth 4988 ); 4989 proto.months = deprecate( 4990 'months accessor is deprecated. Use month instead', 4991 getSetMonth 4992 ); 4993 proto.years = deprecate( 4994 'years accessor is deprecated. Use year instead', 4995 getSetYear 4996 ); 4997 proto.zone = deprecate( 4998 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', 4999 getSetZone 5000 ); 5001 proto.isDSTShifted = deprecate( 5002 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', 5003 isDaylightSavingTimeShifted 5004 ); 5005 5006 function createUnix(input) { 5007 return createLocal(input * 1000); 5008 } 5009 5010 function createInZone() { 5011 return createLocal.apply(null, arguments).parseZone(); 5012 } 5013 5014 function preParsePostFormat(string) { 5015 return string; 5016 } 5017 5018 var proto$1 = Locale.prototype; 5019 5020 proto$1.calendar = calendar; 5021 proto$1.longDateFormat = longDateFormat; 5022 proto$1.invalidDate = invalidDate; 5023 proto$1.ordinal = ordinal; 5024 proto$1.preparse = preParsePostFormat; 5025 proto$1.postformat = preParsePostFormat; 5026 proto$1.relativeTime = relativeTime; 5027 proto$1.pastFuture = pastFuture; 5028 proto$1.set = set; 5029 proto$1.eras = localeEras; 5030 proto$1.erasParse = localeErasParse; 5031 proto$1.erasConvertYear = localeErasConvertYear; 5032 proto$1.erasAbbrRegex = erasAbbrRegex; 5033 proto$1.erasNameRegex = erasNameRegex; 5034 proto$1.erasNarrowRegex = erasNarrowRegex; 5035 5036 proto$1.months = localeMonths; 5037 proto$1.monthsShort = localeMonthsShort; 5038 proto$1.monthsParse = localeMonthsParse; 5039 proto$1.monthsRegex = monthsRegex; 5040 proto$1.monthsShortRegex = monthsShortRegex; 5041 proto$1.week = localeWeek; 5042 proto$1.firstDayOfYear = localeFirstDayOfYear; 5043 proto$1.firstDayOfWeek = localeFirstDayOfWeek; 5044 5045 proto$1.weekdays = localeWeekdays; 5046 proto$1.weekdaysMin = localeWeekdaysMin; 5047 proto$1.weekdaysShort = localeWeekdaysShort; 5048 proto$1.weekdaysParse = localeWeekdaysParse; 5049 5050 proto$1.weekdaysRegex = weekdaysRegex; 5051 proto$1.weekdaysShortRegex = weekdaysShortRegex; 5052 proto$1.weekdaysMinRegex = weekdaysMinRegex; 5053 5054 proto$1.isPM = localeIsPM; 5055 proto$1.meridiem = localeMeridiem; 5056 5057 function get$1(format, index, field, setter) { 5058 var locale = getLocale(), 5059 utc = createUTC().set(setter, index); 5060 return locale[field](utc, format); 5061 } 5062 5063 function listMonthsImpl(format, index, field) { 5064 if (isNumber(format)) { 5065 index = format; 5066 format = undefined; 5067 } 5068 5069 format = format || ''; 5070 5071 if (index != null) { 5072 return get$1(format, index, field, 'month'); 5073 } 5074 5075 var i, 5076 out = []; 5077 for (i = 0; i < 12; i++) { 5078 out[i] = get$1(format, i, field, 'month'); 5079 } 5080 return out; 5081 } 5082 5083 // () 5084 // (5) 5085 // (fmt, 5) 5086 // (fmt) 5087 // (true) 5088 // (true, 5) 5089 // (true, fmt, 5) 5090 // (true, fmt) 5091 function listWeekdaysImpl(localeSorted, format, index, field) { 5092 if (typeof localeSorted === 'boolean') { 5093 if (isNumber(format)) { 5094 index = format; 5095 format = undefined; 5096 } 5097 5098 format = format || ''; 5099 } else { 5100 format = localeSorted; 5101 index = format; 5102 localeSorted = false; 5103 5104 if (isNumber(format)) { 5105 index = format; 5106 format = undefined; 5107 } 5108 5109 format = format || ''; 5110 } 5111 5112 var locale = getLocale(), 5113 shift = localeSorted ? locale._week.dow : 0, 5114 i, 5115 out = []; 5116 5117 if (index != null) { 5118 return get$1(format, (index + shift) % 7, field, 'day'); 5119 } 5120 5121 for (i = 0; i < 7; i++) { 5122 out[i] = get$1(format, (i + shift) % 7, field, 'day'); 5123 } 5124 return out; 5125 } 5126 5127 function listMonths(format, index) { 5128 return listMonthsImpl(format, index, 'months'); 5129 } 5130 5131 function listMonthsShort(format, index) { 5132 return listMonthsImpl(format, index, 'monthsShort'); 5133 } 5134 5135 function listWeekdays(localeSorted, format, index) { 5136 return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); 5137 } 5138 5139 function listWeekdaysShort(localeSorted, format, index) { 5140 return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); 5141 } 5142 5143 function listWeekdaysMin(localeSorted, format, index) { 5144 return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); 5145 } 5146 5147 getSetGlobalLocale('en', { 5148 eras: [ 5149 { 5150 since: '0001-01-01', 5151 until: +Infinity, 5152 offset: 1, 5153 name: 'Anno Domini', 5154 narrow: 'AD', 5155 abbr: 'AD', 5156 }, 5157 { 5158 since: '0000-12-31', 5159 until: -Infinity, 5160 offset: 1, 5161 name: 'Before Christ', 5162 narrow: 'BC', 5163 abbr: 'BC', 5164 }, 5165 ], 5166 dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, 5167 ordinal: function (number) { 5168 var b = number % 10, 5169 output = 5170 toInt((number % 100) / 10) === 1 5171 ? 'th' 5172 : b === 1 5173 ? 'st' 5174 : b === 2 5175 ? 'nd' 5176 : b === 3 5177 ? 'rd' 5178 : 'th'; 5179 return number + output; 5180 }, 5181 }); 5182 5183 // Side effect imports 5184 5185 hooks.lang = deprecate( 5186 'moment.lang is deprecated. Use moment.locale instead.', 5187 getSetGlobalLocale 5188 ); 5189 hooks.langData = deprecate( 5190 'moment.langData is deprecated. Use moment.localeData instead.', 5191 getLocale 5192 ); 5193 5194 var mathAbs = Math.abs; 5195 5196 function abs() { 5197 var data = this._data; 5198 5199 this._milliseconds = mathAbs(this._milliseconds); 5200 this._days = mathAbs(this._days); 5201 this._months = mathAbs(this._months); 5202 5203 data.milliseconds = mathAbs(data.milliseconds); 5204 data.seconds = mathAbs(data.seconds); 5205 data.minutes = mathAbs(data.minutes); 5206 data.hours = mathAbs(data.hours); 5207 data.months = mathAbs(data.months); 5208 data.years = mathAbs(data.years); 5209 5210 return this; 5211 } 5212 5213 function addSubtract$1(duration, input, value, direction) { 5214 var other = createDuration(input, value); 5215 5216 duration._milliseconds += direction * other._milliseconds; 5217 duration._days += direction * other._days; 5218 duration._months += direction * other._months; 5219 5220 return duration._bubble(); 5221 } 5222 5223 // supports only 2.0-style add(1, 's') or add(duration) 5224 function add$1(input, value) { 5225 return addSubtract$1(this, input, value, 1); 5226 } 5227 5228 // supports only 2.0-style subtract(1, 's') or subtract(duration) 5229 function subtract$1(input, value) { 5230 return addSubtract$1(this, input, value, -1); 5231 } 5232 5233 function absCeil(number) { 5234 if (number < 0) { 5235 return Math.floor(number); 5236 } else { 5237 return Math.ceil(number); 5238 } 5239 } 5240 5241 function bubble() { 5242 var milliseconds = this._milliseconds, 5243 days = this._days, 5244 months = this._months, 5245 data = this._data, 5246 seconds, 5247 minutes, 5248 hours, 5249 years, 5250 monthsFromDays; 5251 5252 // if we have a mix of positive and negative values, bubble down first 5253 // check: https://github.com/moment/moment/issues/2166 5254 if ( 5255 !( 5256 (milliseconds >= 0 && days >= 0 && months >= 0) || 5257 (milliseconds <= 0 && days <= 0 && months <= 0) 5258 ) 5259 ) { 5260 milliseconds += absCeil(monthsToDays(months) + days) * 864e5; 5261 days = 0; 5262 months = 0; 5263 } 5264 5265 // The following code bubbles up values, see the tests for 5266 // examples of what that means. 5267 data.milliseconds = milliseconds % 1000; 5268 5269 seconds = absFloor(milliseconds / 1000); 5270 data.seconds = seconds % 60; 5271 5272 minutes = absFloor(seconds / 60); 5273 data.minutes = minutes % 60; 5274 5275 hours = absFloor(minutes / 60); 5276 data.hours = hours % 24; 5277 5278 days += absFloor(hours / 24); 5279 5280 // convert days to months 5281 monthsFromDays = absFloor(daysToMonths(days)); 5282 months += monthsFromDays; 5283 days -= absCeil(monthsToDays(monthsFromDays)); 5284 5285 // 12 months -> 1 year 5286 years = absFloor(months / 12); 5287 months %= 12; 5288 5289 data.days = days; 5290 data.months = months; 5291 data.years = years; 5292 5293 return this; 5294 } 5295 5296 function daysToMonths(days) { 5297 // 400 years have 146097 days (taking into account leap year rules) 5298 // 400 years have 12 months === 4800 5299 return (days * 4800) / 146097; 5300 } 5301 5302 function monthsToDays(months) { 5303 // the reverse of daysToMonths 5304 return (months * 146097) / 4800; 5305 } 5306 5307 function as(units) { 5308 if (!this.isValid()) { 5309 return NaN; 5310 } 5311 var days, 5312 months, 5313 milliseconds = this._milliseconds; 5314 5315 units = normalizeUnits(units); 5316 5317 if (units === 'month' || units === 'quarter' || units === 'year') { 5318 days = this._days + milliseconds / 864e5; 5319 months = this._months + daysToMonths(days); 5320 switch (units) { 5321 case 'month': 5322 return months; 5323 case 'quarter': 5324 return months / 3; 5325 case 'year': 5326 return months / 12; 5327 } 5328 } else { 5329 // handle milliseconds separately because of floating point math errors (issue #1867) 5330 days = this._days + Math.round(monthsToDays(this._months)); 5331 switch (units) { 5332 case 'week': 5333 return days / 7 + milliseconds / 6048e5; 5334 case 'day': 5335 return days + milliseconds / 864e5; 5336 case 'hour': 5337 return days * 24 + milliseconds / 36e5; 5338 case 'minute': 5339 return days * 1440 + milliseconds / 6e4; 5340 case 'second': 5341 return days * 86400 + milliseconds / 1000; 5342 // Math.floor prevents floating point math errors here 5343 case 'millisecond': 5344 return Math.floor(days * 864e5) + milliseconds; 5345 default: 5346 throw new Error('Unknown unit ' + units); 5347 } 5348 } 5349 } 5350 5351 function makeAs(alias) { 5352 return function () { 5353 return this.as(alias); 5354 }; 5355 } 5356 5357 var asMilliseconds = makeAs('ms'), 5358 asSeconds = makeAs('s'), 5359 asMinutes = makeAs('m'), 5360 asHours = makeAs('h'), 5361 asDays = makeAs('d'), 5362 asWeeks = makeAs('w'), 5363 asMonths = makeAs('M'), 5364 asQuarters = makeAs('Q'), 5365 asYears = makeAs('y'), 5366 valueOf$1 = asMilliseconds; 5367 5368 function clone$1() { 5369 return createDuration(this); 5370 } 5371 5372 function get$2(units) { 5373 units = normalizeUnits(units); 5374 return this.isValid() ? this[units + 's']() : NaN; 5375 } 5376 5377 function makeGetter(name) { 5378 return function () { 5379 return this.isValid() ? this._data[name] : NaN; 5380 }; 5381 } 5382 5383 var milliseconds = makeGetter('milliseconds'), 5384 seconds = makeGetter('seconds'), 5385 minutes = makeGetter('minutes'), 5386 hours = makeGetter('hours'), 5387 days = makeGetter('days'), 5388 months = makeGetter('months'), 5389 years = makeGetter('years'); 5390 5391 function weeks() { 5392 return absFloor(this.days() / 7); 5393 } 5394 5395 var round = Math.round, 5396 thresholds = { 5397 ss: 44, // a few seconds to seconds 5398 s: 45, // seconds to minute 5399 m: 45, // minutes to hour 5400 h: 22, // hours to day 5401 d: 26, // days to month/week 5402 w: null, // weeks to month 5403 M: 11, // months to year 5404 }; 5405 5406 // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize 5407 function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { 5408 return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); 5409 } 5410 5411 function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) { 5412 var duration = createDuration(posNegDuration).abs(), 5413 seconds = round(duration.as('s')), 5414 minutes = round(duration.as('m')), 5415 hours = round(duration.as('h')), 5416 days = round(duration.as('d')), 5417 months = round(duration.as('M')), 5418 weeks = round(duration.as('w')), 5419 years = round(duration.as('y')), 5420 a = 5421 (seconds <= thresholds.ss && ['s', seconds]) || 5422 (seconds < thresholds.s && ['ss', seconds]) || 5423 (minutes <= 1 && ['m']) || 5424 (minutes < thresholds.m && ['mm', minutes]) || 5425 (hours <= 1 && ['h']) || 5426 (hours < thresholds.h && ['hh', hours]) || 5427 (days <= 1 && ['d']) || 5428 (days < thresholds.d && ['dd', days]); 5429 5430 if (thresholds.w != null) { 5431 a = 5432 a || 5433 (weeks <= 1 && ['w']) || 5434 (weeks < thresholds.w && ['ww', weeks]); 5435 } 5436 a = a || 5437 (months <= 1 && ['M']) || 5438 (months < thresholds.M && ['MM', months]) || 5439 (years <= 1 && ['y']) || ['yy', years]; 5440 5441 a[2] = withoutSuffix; 5442 a[3] = +posNegDuration > 0; 5443 a[4] = locale; 5444 return substituteTimeAgo.apply(null, a); 5445 } 5446 5447 // This function allows you to set the rounding function for relative time strings 5448 function getSetRelativeTimeRounding(roundingFunction) { 5449 if (roundingFunction === undefined) { 5450 return round; 5451 } 5452 if (typeof roundingFunction === 'function') { 5453 round = roundingFunction; 5454 return true; 5455 } 5456 return false; 5457 } 5458 5459 // This function allows you to set a threshold for relative time strings 5460 function getSetRelativeTimeThreshold(threshold, limit) { 5461 if (thresholds[threshold] === undefined) { 5462 return false; 5463 } 5464 if (limit === undefined) { 5465 return thresholds[threshold]; 5466 } 5467 thresholds[threshold] = limit; 5468 if (threshold === 's') { 5469 thresholds.ss = limit - 1; 5470 } 5471 return true; 5472 } 5473 5474 function humanize(argWithSuffix, argThresholds) { 5475 if (!this.isValid()) { 5476 return this.localeData().invalidDate(); 5477 } 5478 5479 var withSuffix = false, 5480 th = thresholds, 5481 locale, 5482 output; 5483 5484 if (typeof argWithSuffix === 'object') { 5485 argThresholds = argWithSuffix; 5486 argWithSuffix = false; 5487 } 5488 if (typeof argWithSuffix === 'boolean') { 5489 withSuffix = argWithSuffix; 5490 } 5491 if (typeof argThresholds === 'object') { 5492 th = Object.assign({}, thresholds, argThresholds); 5493 if (argThresholds.s != null && argThresholds.ss == null) { 5494 th.ss = argThresholds.s - 1; 5495 } 5496 } 5497 5498 locale = this.localeData(); 5499 output = relativeTime$1(this, !withSuffix, th, locale); 5500 5501 if (withSuffix) { 5502 output = locale.pastFuture(+this, output); 5503 } 5504 5505 return locale.postformat(output); 5506 } 5507 5508 var abs$1 = Math.abs; 5509 5510 function sign(x) { 5511 return (x > 0) - (x < 0) || +x; 5512 } 5513 5514 function toISOString$1() { 5515 // for ISO strings we do not use the normal bubbling rules: 5516 // * milliseconds bubble up until they become hours 5517 // * days do not bubble at all 5518 // * months bubble up until they become years 5519 // This is because there is no context-free conversion between hours and days 5520 // (think of clock changes) 5521 // and also not between days and months (28-31 days per month) 5522 if (!this.isValid()) { 5523 return this.localeData().invalidDate(); 5524 } 5525 5526 var seconds = abs$1(this._milliseconds) / 1000, 5527 days = abs$1(this._days), 5528 months = abs$1(this._months), 5529 minutes, 5530 hours, 5531 years, 5532 s, 5533 total = this.asSeconds(), 5534 totalSign, 5535 ymSign, 5536 daysSign, 5537 hmsSign; 5538 5539 if (!total) { 5540 // this is the same as C#'s (Noda) and python (isodate)... 5541 // but not other JS (goog.date) 5542 return 'P0D'; 5543 } 5544 5545 // 3600 seconds -> 60 minutes -> 1 hour 5546 minutes = absFloor(seconds / 60); 5547 hours = absFloor(minutes / 60); 5548 seconds %= 60; 5549 minutes %= 60; 5550 5551 // 12 months -> 1 year 5552 years = absFloor(months / 12); 5553 months %= 12; 5554 5555 // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js 5556 s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; 5557 5558 totalSign = total < 0 ? '-' : ''; 5559 ymSign = sign(this._months) !== sign(total) ? '-' : ''; 5560 daysSign = sign(this._days) !== sign(total) ? '-' : ''; 5561 hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; 5562 5563 return ( 5564 totalSign + 5565 'P' + 5566 (years ? ymSign + years + 'Y' : '') + 5567 (months ? ymSign + months + 'M' : '') + 5568 (days ? daysSign + days + 'D' : '') + 5569 (hours || minutes || seconds ? 'T' : '') + 5570 (hours ? hmsSign + hours + 'H' : '') + 5571 (minutes ? hmsSign + minutes + 'M' : '') + 5572 (seconds ? hmsSign + s + 'S' : '') 5573 ); 5574 } 5575 5576 var proto$2 = Duration.prototype; 5577 5578 proto$2.isValid = isValid$1; 5579 proto$2.abs = abs; 5580 proto$2.add = add$1; 5581 proto$2.subtract = subtract$1; 5582 proto$2.as = as; 5583 proto$2.asMilliseconds = asMilliseconds; 5584 proto$2.asSeconds = asSeconds; 5585 proto$2.asMinutes = asMinutes; 5586 proto$2.asHours = asHours; 5587 proto$2.asDays = asDays; 5588 proto$2.asWeeks = asWeeks; 5589 proto$2.asMonths = asMonths; 5590 proto$2.asQuarters = asQuarters; 5591 proto$2.asYears = asYears; 5592 proto$2.valueOf = valueOf$1; 5593 proto$2._bubble = bubble; 5594 proto$2.clone = clone$1; 5595 proto$2.get = get$2; 5596 proto$2.milliseconds = milliseconds; 5597 proto$2.seconds = seconds; 5598 proto$2.minutes = minutes; 5599 proto$2.hours = hours; 5600 proto$2.days = days; 5601 proto$2.weeks = weeks; 5602 proto$2.months = months; 5603 proto$2.years = years; 5604 proto$2.humanize = humanize; 5605 proto$2.toISOString = toISOString$1; 5606 proto$2.toString = toISOString$1; 5607 proto$2.toJSON = toISOString$1; 5608 proto$2.locale = locale; 5609 proto$2.localeData = localeData; 5610 5611 proto$2.toIsoString = deprecate( 5612 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', 5613 toISOString$1 5614 ); 5615 proto$2.lang = lang; 5616 5617 // FORMATTING 5618 5619 addFormatToken('X', 0, 0, 'unix'); 5620 addFormatToken('x', 0, 0, 'valueOf'); 5621 5622 // PARSING 5623 5624 addRegexToken('x', matchSigned); 5625 addRegexToken('X', matchTimestamp); 5626 addParseToken('X', function (input, array, config) { 5627 config._d = new Date(parseFloat(input) * 1000); 5628 }); 5629 addParseToken('x', function (input, array, config) { 5630 config._d = new Date(toInt(input)); 5631 }); 5632 5633 //! moment.js 5634 5635 hooks.version = '2.30.1'; 5636 5637 setHookCallback(createLocal); 5638 5639 hooks.fn = proto; 5640 hooks.min = min; 5641 hooks.max = max; 5642 hooks.now = now; 5643 hooks.utc = createUTC; 5644 hooks.unix = createUnix; 5645 hooks.months = listMonths; 5646 hooks.isDate = isDate; 5647 hooks.locale = getSetGlobalLocale; 5648 hooks.invalid = createInvalid; 5649 hooks.duration = createDuration; 5650 hooks.isMoment = isMoment; 5651 hooks.weekdays = listWeekdays; 5652 hooks.parseZone = createInZone; 5653 hooks.localeData = getLocale; 5654 hooks.isDuration = isDuration; 5655 hooks.monthsShort = listMonthsShort; 5656 hooks.weekdaysMin = listWeekdaysMin; 5657 hooks.defineLocale = defineLocale; 5658 hooks.updateLocale = updateLocale; 5659 hooks.locales = listLocales; 5660 hooks.weekdaysShort = listWeekdaysShort; 5661 hooks.normalizeUnits = normalizeUnits; 5662 hooks.relativeTimeRounding = getSetRelativeTimeRounding; 5663 hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; 5664 hooks.calendarFormat = getCalendarFormat; 5665 hooks.prototype = proto; 5666 5667 // currently HTML5 input type only supports 24-hour formats 5668 hooks.HTML5_FMT = { 5669 DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" /> 5670 DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" /> 5671 DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" /> 5672 DATE: 'YYYY-MM-DD', // <input type="date" /> 5673 TIME: 'HH:mm', // <input type="time" /> 5674 TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" /> 5675 TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" /> 5676 WEEK: 'GGGG-[W]WW', // <input type="week" /> 5677 MONTH: 'YYYY-MM', // <input type="month" /> 5678 }; 5679 5680 //! moment.js locale configuration 5681 5682 hooks.defineLocale('af', { 5683 months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split( 5684 '_' 5685 ), 5686 monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), 5687 weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split( 5688 '_' 5689 ), 5690 weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), 5691 weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), 5692 meridiemParse: /vm|nm/i, 5693 isPM: function (input) { 5694 return /^nm$/i.test(input); 5695 }, 5696 meridiem: function (hours, minutes, isLower) { 5697 if (hours < 12) { 5698 return isLower ? 'vm' : 'VM'; 5699 } else { 5700 return isLower ? 'nm' : 'NM'; 5701 } 5702 }, 5703 longDateFormat: { 5704 LT: 'HH:mm', 5705 LTS: 'HH:mm:ss', 5706 L: 'DD/MM/YYYY', 5707 LL: 'D MMMM YYYY', 5708 LLL: 'D MMMM YYYY HH:mm', 5709 LLLL: 'dddd, D MMMM YYYY HH:mm', 5710 }, 5711 calendar: { 5712 sameDay: '[Vandag om] LT', 5713 nextDay: '[Môre om] LT', 5714 nextWeek: 'dddd [om] LT', 5715 lastDay: '[Gister om] LT', 5716 lastWeek: '[Laas] dddd [om] LT', 5717 sameElse: 'L', 5718 }, 5719 relativeTime: { 5720 future: 'oor %s', 5721 past: '%s gelede', 5722 s: "'n paar sekondes", 5723 ss: '%d sekondes', 5724 m: "'n minuut", 5725 mm: '%d minute', 5726 h: "'n uur", 5727 hh: '%d ure', 5728 d: "'n dag", 5729 dd: '%d dae', 5730 M: "'n maand", 5731 MM: '%d maande', 5732 y: "'n jaar", 5733 yy: '%d jaar', 5734 }, 5735 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, 5736 ordinal: function (number) { 5737 return ( 5738 number + 5739 (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') 5740 ); // Thanks to Joris Röling : https://github.com/jjupiter 5741 }, 5742 week: { 5743 dow: 1, // Maandag is die eerste dag van die week. 5744 doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar. 5745 }, 5746 }); 5747 5748 //! moment.js locale configuration 5749 5750 var pluralForm = function (n) { 5751 return n === 0 5752 ? 0 5753 : n === 1 5754 ? 1 5755 : n === 2 5756 ? 2 5757 : n % 100 >= 3 && n % 100 <= 10 5758 ? 3 5759 : n % 100 >= 11 5760 ? 4 5761 : 5; 5762 }, 5763 plurals = { 5764 s: [ 5765 'أقل من ثانية', 5766 'ثانية واحدة', 5767 ['ثانيتان', 'ثانيتين'], 5768 '%d ثوان', 5769 '%d ثانية', 5770 '%d ثانية', 5771 ], 5772 m: [ 5773 'أقل من دقيقة', 5774 'دقيقة واحدة', 5775 ['دقيقتان', 'دقيقتين'], 5776 '%d دقائق', 5777 '%d دقيقة', 5778 '%d دقيقة', 5779 ], 5780 h: [ 5781 'أقل من ساعة', 5782 'ساعة واحدة', 5783 ['ساعتان', 'ساعتين'], 5784 '%d ساعات', 5785 '%d ساعة', 5786 '%d ساعة', 5787 ], 5788 d: [ 5789 'أقل من يوم', 5790 'يوم واحد', 5791 ['يومان', 'يومين'], 5792 '%d أيام', 5793 '%d يومًا', 5794 '%d يوم', 5795 ], 5796 M: [ 5797 'أقل من شهر', 5798 'شهر واحد', 5799 ['شهران', 'شهرين'], 5800 '%d أشهر', 5801 '%d شهرا', 5802 '%d شهر', 5803 ], 5804 y: [ 5805 'أقل من عام', 5806 'عام واحد', 5807 ['عامان', 'عامين'], 5808 '%d أعوام', 5809 '%d عامًا', 5810 '%d عام', 5811 ], 5812 }, 5813 pluralize = function (u) { 5814 return function (number, withoutSuffix, string, isFuture) { 5815 var f = pluralForm(number), 5816 str = plurals[u][pluralForm(number)]; 5817 if (f === 2) { 5818 str = str[withoutSuffix ? 0 : 1]; 5819 } 5820 return str.replace(/%d/i, number); 5821 }; 5822 }, 5823 months$1 = [ 5824 'جانفي', 5825 'فيفري', 5826 'مارس', 5827 'أفريل', 5828 'ماي', 5829 'جوان', 5830 'جويلية', 5831 'أوت', 5832 'سبتمبر', 5833 'أكتوبر', 5834 'نوفمبر', 5835 'ديسمبر', 5836 ]; 5837 5838 hooks.defineLocale('ar-dz', { 5839 months: months$1, 5840 monthsShort: months$1, 5841 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), 5842 weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), 5843 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), 5844 weekdaysParseExact: true, 5845 longDateFormat: { 5846 LT: 'HH:mm', 5847 LTS: 'HH:mm:ss', 5848 L: 'D/\u200FM/\u200FYYYY', 5849 LL: 'D MMMM YYYY', 5850 LLL: 'D MMMM YYYY HH:mm', 5851 LLLL: 'dddd D MMMM YYYY HH:mm', 5852 }, 5853 meridiemParse: /ص|م/, 5854 isPM: function (input) { 5855 return 'م' === input; 5856 }, 5857 meridiem: function (hour, minute, isLower) { 5858 if (hour < 12) { 5859 return 'ص'; 5860 } else { 5861 return 'م'; 5862 } 5863 }, 5864 calendar: { 5865 sameDay: '[اليوم عند الساعة] LT', 5866 nextDay: '[غدًا عند الساعة] LT', 5867 nextWeek: 'dddd [عند الساعة] LT', 5868 lastDay: '[أمس عند الساعة] LT', 5869 lastWeek: 'dddd [عند الساعة] LT', 5870 sameElse: 'L', 5871 }, 5872 relativeTime: { 5873 future: 'بعد %s', 5874 past: 'منذ %s', 5875 s: pluralize('s'), 5876 ss: pluralize('s'), 5877 m: pluralize('m'), 5878 mm: pluralize('m'), 5879 h: pluralize('h'), 5880 hh: pluralize('h'), 5881 d: pluralize('d'), 5882 dd: pluralize('d'), 5883 M: pluralize('M'), 5884 MM: pluralize('M'), 5885 y: pluralize('y'), 5886 yy: pluralize('y'), 5887 }, 5888 postformat: function (string) { 5889 return string.replace(/,/g, '،'); 5890 }, 5891 week: { 5892 dow: 0, // Sunday is the first day of the week. 5893 doy: 4, // The week that contains Jan 4th is the first week of the year. 5894 }, 5895 }); 5896 5897 //! moment.js locale configuration 5898 5899 hooks.defineLocale('ar-kw', { 5900 months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( 5901 '_' 5902 ), 5903 monthsShort: 5904 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( 5905 '_' 5906 ), 5907 weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), 5908 weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), 5909 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), 5910 weekdaysParseExact: true, 5911 longDateFormat: { 5912 LT: 'HH:mm', 5913 LTS: 'HH:mm:ss', 5914 L: 'DD/MM/YYYY', 5915 LL: 'D MMMM YYYY', 5916 LLL: 'D MMMM YYYY HH:mm', 5917 LLLL: 'dddd D MMMM YYYY HH:mm', 5918 }, 5919 calendar: { 5920 sameDay: '[اليوم على الساعة] LT', 5921 nextDay: '[غدا على الساعة] LT', 5922 nextWeek: 'dddd [على الساعة] LT', 5923 lastDay: '[أمس على الساعة] LT', 5924 lastWeek: 'dddd [على الساعة] LT', 5925 sameElse: 'L', 5926 }, 5927 relativeTime: { 5928 future: 'في %s', 5929 past: 'منذ %s', 5930 s: 'ثوان', 5931 ss: '%d ثانية', 5932 m: 'دقيقة', 5933 mm: '%d دقائق', 5934 h: 'ساعة', 5935 hh: '%d ساعات', 5936 d: 'يوم', 5937 dd: '%d أيام', 5938 M: 'شهر', 5939 MM: '%d أشهر', 5940 y: 'سنة', 5941 yy: '%d سنوات', 5942 }, 5943 week: { 5944 dow: 0, // Sunday is the first day of the week. 5945 doy: 12, // The week that contains Jan 12th is the first week of the year. 5946 }, 5947 }); 5948 5949 //! moment.js locale configuration 5950 5951 var symbolMap = { 5952 1: '1', 5953 2: '2', 5954 3: '3', 5955 4: '4', 5956 5: '5', 5957 6: '6', 5958 7: '7', 5959 8: '8', 5960 9: '9', 5961 0: '0', 5962 }, 5963 pluralForm$1 = function (n) { 5964 return n === 0 5965 ? 0 5966 : n === 1 5967 ? 1 5968 : n === 2 5969 ? 2 5970 : n % 100 >= 3 && n % 100 <= 10 5971 ? 3 5972 : n % 100 >= 11 5973 ? 4 5974 : 5; 5975 }, 5976 plurals$1 = { 5977 s: [ 5978 'أقل من ثانية', 5979 'ثانية واحدة', 5980 ['ثانيتان', 'ثانيتين'], 5981 '%d ثوان', 5982 '%d ثانية', 5983 '%d ثانية', 5984 ], 5985 m: [ 5986 'أقل من دقيقة', 5987 'دقيقة واحدة', 5988 ['دقيقتان', 'دقيقتين'], 5989 '%d دقائق', 5990 '%d دقيقة', 5991 '%d دقيقة', 5992 ], 5993 h: [ 5994 'أقل من ساعة', 5995 'ساعة واحدة', 5996 ['ساعتان', 'ساعتين'], 5997 '%d ساعات', 5998 '%d ساعة', 5999 '%d ساعة', 6000 ], 6001 d: [ 6002 'أقل من يوم', 6003 'يوم واحد', 6004 ['يومان', 'يومين'], 6005 '%d أيام', 6006 '%d يومًا', 6007 '%d يوم', 6008 ], 6009 M: [ 6010 'أقل من شهر', 6011 'شهر واحد', 6012 ['شهران', 'شهرين'], 6013 '%d أشهر', 6014 '%d شهرا', 6015 '%d شهر', 6016 ], 6017 y: [ 6018 'أقل من عام', 6019 'عام واحد', 6020 ['عامان', 'عامين'], 6021 '%d أعوام', 6022 '%d عامًا', 6023 '%d عام', 6024 ], 6025 }, 6026 pluralize$1 = function (u) { 6027 return function (number, withoutSuffix, string, isFuture) { 6028 var f = pluralForm$1(number), 6029 str = plurals$1[u][pluralForm$1(number)]; 6030 if (f === 2) { 6031 str = str[withoutSuffix ? 0 : 1]; 6032 } 6033 return str.replace(/%d/i, number); 6034 }; 6035 }, 6036 months$2 = [ 6037 'يناير', 6038 'فبراير', 6039 'مارس', 6040 'أبريل', 6041 'مايو', 6042 'يونيو', 6043 'يوليو', 6044 'أغسطس', 6045 'سبتمبر', 6046 'أكتوبر', 6047 'نوفمبر', 6048 'ديسمبر', 6049 ]; 6050 6051 hooks.defineLocale('ar-ly', { 6052 months: months$2, 6053 monthsShort: months$2, 6054 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), 6055 weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), 6056 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), 6057 weekdaysParseExact: true, 6058 longDateFormat: { 6059 LT: 'HH:mm', 6060 LTS: 'HH:mm:ss', 6061 L: 'D/\u200FM/\u200FYYYY', 6062 LL: 'D MMMM YYYY', 6063 LLL: 'D MMMM YYYY HH:mm', 6064 LLLL: 'dddd D MMMM YYYY HH:mm', 6065 }, 6066 meridiemParse: /ص|م/, 6067 isPM: function (input) { 6068 return 'م' === input; 6069 }, 6070 meridiem: function (hour, minute, isLower) { 6071 if (hour < 12) { 6072 return 'ص'; 6073 } else { 6074 return 'م'; 6075 } 6076 }, 6077 calendar: { 6078 sameDay: '[اليوم عند الساعة] LT', 6079 nextDay: '[غدًا عند الساعة] LT', 6080 nextWeek: 'dddd [عند الساعة] LT', 6081 lastDay: '[أمس عند الساعة] LT', 6082 lastWeek: 'dddd [عند الساعة] LT', 6083 sameElse: 'L', 6084 }, 6085 relativeTime: { 6086 future: 'بعد %s', 6087 past: 'منذ %s', 6088 s: pluralize$1('s'), 6089 ss: pluralize$1('s'), 6090 m: pluralize$1('m'), 6091 mm: pluralize$1('m'), 6092 h: pluralize$1('h'), 6093 hh: pluralize$1('h'), 6094 d: pluralize$1('d'), 6095 dd: pluralize$1('d'), 6096 M: pluralize$1('M'), 6097 MM: pluralize$1('M'), 6098 y: pluralize$1('y'), 6099 yy: pluralize$1('y'), 6100 }, 6101 preparse: function (string) { 6102 return string.replace(/،/g, ','); 6103 }, 6104 postformat: function (string) { 6105 return string 6106 .replace(/\d/g, function (match) { 6107 return symbolMap[match]; 6108 }) 6109 .replace(/,/g, '،'); 6110 }, 6111 week: { 6112 dow: 6, // Saturday is the first day of the week. 6113 doy: 12, // The week that contains Jan 12th is the first week of the year. 6114 }, 6115 }); 6116 6117 //! moment.js locale configuration 6118 6119 hooks.defineLocale('ar-ma', { 6120 months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( 6121 '_' 6122 ), 6123 monthsShort: 6124 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split( 6125 '_' 6126 ), 6127 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), 6128 weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), 6129 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), 6130 weekdaysParseExact: true, 6131 longDateFormat: { 6132 LT: 'HH:mm', 6133 LTS: 'HH:mm:ss', 6134 L: 'DD/MM/YYYY', 6135 LL: 'D MMMM YYYY', 6136 LLL: 'D MMMM YYYY HH:mm', 6137 LLLL: 'dddd D MMMM YYYY HH:mm', 6138 }, 6139 calendar: { 6140 sameDay: '[اليوم على الساعة] LT', 6141 nextDay: '[غدا على الساعة] LT', 6142 nextWeek: 'dddd [على الساعة] LT', 6143 lastDay: '[أمس على الساعة] LT', 6144 lastWeek: 'dddd [على الساعة] LT', 6145 sameElse: 'L', 6146 }, 6147 relativeTime: { 6148 future: 'في %s', 6149 past: 'منذ %s', 6150 s: 'ثوان', 6151 ss: '%d ثانية', 6152 m: 'دقيقة', 6153 mm: '%d دقائق', 6154 h: 'ساعة', 6155 hh: '%d ساعات', 6156 d: 'يوم', 6157 dd: '%d أيام', 6158 M: 'شهر', 6159 MM: '%d أشهر', 6160 y: 'سنة', 6161 yy: '%d سنوات', 6162 }, 6163 week: { 6164 dow: 1, // Monday is the first day of the week. 6165 doy: 4, // The week that contains Jan 4th is the first week of the year. 6166 }, 6167 }); 6168 6169 //! moment.js locale configuration 6170 6171 var symbolMap$1 = { 6172 1: '١', 6173 2: '٢', 6174 3: '٣', 6175 4: '٤', 6176 5: '٥', 6177 6: '٦', 6178 7: '٧', 6179 8: '٨', 6180 9: '٩', 6181 0: '٠', 6182 }, 6183 numberMap = { 6184 '١': '1', 6185 '٢': '2', 6186 '٣': '3', 6187 '٤': '4', 6188 '٥': '5', 6189 '٦': '6', 6190 '٧': '7', 6191 '٨': '8', 6192 '٩': '9', 6193 '٠': '0', 6194 }; 6195 6196 hooks.defineLocale('ar-ps', { 6197 months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split( 6198 '_' 6199 ), 6200 monthsShort: 6201 'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'), 6202 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), 6203 weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), 6204 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), 6205 weekdaysParseExact: true, 6206 longDateFormat: { 6207 LT: 'HH:mm', 6208 LTS: 'HH:mm:ss', 6209 L: 'DD/MM/YYYY', 6210 LL: 'D MMMM YYYY', 6211 LLL: 'D MMMM YYYY HH:mm', 6212 LLLL: 'dddd D MMMM YYYY HH:mm', 6213 }, 6214 meridiemParse: /ص|م/, 6215 isPM: function (input) { 6216 return 'م' === input; 6217 }, 6218 meridiem: function (hour, minute, isLower) { 6219 if (hour < 12) { 6220 return 'ص'; 6221 } else { 6222 return 'م'; 6223 } 6224 }, 6225 calendar: { 6226 sameDay: '[اليوم على الساعة] LT', 6227 nextDay: '[غدا على الساعة] LT', 6228 nextWeek: 'dddd [على الساعة] LT', 6229 lastDay: '[أمس على الساعة] LT', 6230 lastWeek: 'dddd [على الساعة] LT', 6231 sameElse: 'L', 6232 }, 6233 relativeTime: { 6234 future: 'في %s', 6235 past: 'منذ %s', 6236 s: 'ثوان', 6237 ss: '%d ثانية', 6238 m: 'دقيقة', 6239 mm: '%d دقائق', 6240 h: 'ساعة', 6241 hh: '%d ساعات', 6242 d: 'يوم', 6243 dd: '%d أيام', 6244 M: 'شهر', 6245 MM: '%d أشهر', 6246 y: 'سنة', 6247 yy: '%d سنوات', 6248 }, 6249 preparse: function (string) { 6250 return string 6251 .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) { 6252 return numberMap[match]; 6253 }) 6254 .split('') // reversed since negative lookbehind not supported everywhere 6255 .reverse() 6256 .join('') 6257 .replace(/[١٢](?![\u062a\u0643])/g, function (match) { 6258 return numberMap[match]; 6259 }) 6260 .split('') 6261 .reverse() 6262 .join('') 6263 .replace(/،/g, ','); 6264 }, 6265 postformat: function (string) { 6266 return string 6267 .replace(/\d/g, function (match) { 6268 return symbolMap$1[match]; 6269 }) 6270 .replace(/,/g, '،'); 6271 }, 6272 week: { 6273 dow: 0, // Sunday is the first day of the week. 6274 doy: 6, // The week that contains Jan 6th is the first week of the year. 6275 }, 6276 }); 6277 6278 //! moment.js locale configuration 6279 6280 var symbolMap$2 = { 6281 1: '١', 6282 2: '٢', 6283 3: '٣', 6284 4: '٤', 6285 5: '٥', 6286 6: '٦', 6287 7: '٧', 6288 8: '٨', 6289 9: '٩', 6290 0: '٠', 6291 }, 6292 numberMap$1 = { 6293 '١': '1', 6294 '٢': '2', 6295 '٣': '3', 6296 '٤': '4', 6297 '٥': '5', 6298 '٦': '6', 6299 '٧': '7', 6300 '٨': '8', 6301 '٩': '9', 6302 '٠': '0', 6303 }; 6304 6305 hooks.defineLocale('ar-sa', { 6306 months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( 6307 '_' 6308 ), 6309 monthsShort: 6310 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( 6311 '_' 6312 ), 6313 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), 6314 weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), 6315 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), 6316 weekdaysParseExact: true, 6317 longDateFormat: { 6318 LT: 'HH:mm', 6319 LTS: 'HH:mm:ss', 6320 L: 'DD/MM/YYYY', 6321 LL: 'D MMMM YYYY', 6322 LLL: 'D MMMM YYYY HH:mm', 6323 LLLL: 'dddd D MMMM YYYY HH:mm', 6324 }, 6325 meridiemParse: /ص|م/, 6326 isPM: function (input) { 6327 return 'م' === input; 6328 }, 6329 meridiem: function (hour, minute, isLower) { 6330 if (hour < 12) { 6331 return 'ص'; 6332 } else { 6333 return 'م'; 6334 } 6335 }, 6336 calendar: { 6337 sameDay: '[اليوم على الساعة] LT', 6338 nextDay: '[غدا على الساعة] LT', 6339 nextWeek: 'dddd [على الساعة] LT', 6340 lastDay: '[أمس على الساعة] LT', 6341 lastWeek: 'dddd [على الساعة] LT', 6342 sameElse: 'L', 6343 }, 6344 relativeTime: { 6345 future: 'في %s', 6346 past: 'منذ %s', 6347 s: 'ثوان', 6348 ss: '%d ثانية', 6349 m: 'دقيقة', 6350 mm: '%d دقائق', 6351 h: 'ساعة', 6352 hh: '%d ساعات', 6353 d: 'يوم', 6354 dd: '%d أيام', 6355 M: 'شهر', 6356 MM: '%d أشهر', 6357 y: 'سنة', 6358 yy: '%d سنوات', 6359 }, 6360 preparse: function (string) { 6361 return string 6362 .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { 6363 return numberMap$1[match]; 6364 }) 6365 .replace(/،/g, ','); 6366 }, 6367 postformat: function (string) { 6368 return string 6369 .replace(/\d/g, function (match) { 6370 return symbolMap$2[match]; 6371 }) 6372 .replace(/,/g, '،'); 6373 }, 6374 week: { 6375 dow: 0, // Sunday is the first day of the week. 6376 doy: 6, // The week that contains Jan 6th is the first week of the year. 6377 }, 6378 }); 6379 6380 //! moment.js locale configuration 6381 6382 hooks.defineLocale('ar-tn', { 6383 months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( 6384 '_' 6385 ), 6386 monthsShort: 6387 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split( 6388 '_' 6389 ), 6390 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), 6391 weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), 6392 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), 6393 weekdaysParseExact: true, 6394 longDateFormat: { 6395 LT: 'HH:mm', 6396 LTS: 'HH:mm:ss', 6397 L: 'DD/MM/YYYY', 6398 LL: 'D MMMM YYYY', 6399 LLL: 'D MMMM YYYY HH:mm', 6400 LLLL: 'dddd D MMMM YYYY HH:mm', 6401 }, 6402 calendar: { 6403 sameDay: '[اليوم على الساعة] LT', 6404 nextDay: '[غدا على الساعة] LT', 6405 nextWeek: 'dddd [على الساعة] LT', 6406 lastDay: '[أمس على الساعة] LT', 6407 lastWeek: 'dddd [على الساعة] LT', 6408 sameElse: 'L', 6409 }, 6410 relativeTime: { 6411 future: 'في %s', 6412 past: 'منذ %s', 6413 s: 'ثوان', 6414 ss: '%d ثانية', 6415 m: 'دقيقة', 6416 mm: '%d دقائق', 6417 h: 'ساعة', 6418 hh: '%d ساعات', 6419 d: 'يوم', 6420 dd: '%d أيام', 6421 M: 'شهر', 6422 MM: '%d أشهر', 6423 y: 'سنة', 6424 yy: '%d سنوات', 6425 }, 6426 week: { 6427 dow: 1, // Monday is the first day of the week. 6428 doy: 4, // The week that contains Jan 4th is the first week of the year. 6429 }, 6430 }); 6431 6432 //! moment.js locale configuration 6433 6434 var symbolMap$3 = { 6435 1: '١', 6436 2: '٢', 6437 3: '٣', 6438 4: '٤', 6439 5: '٥', 6440 6: '٦', 6441 7: '٧', 6442 8: '٨', 6443 9: '٩', 6444 0: '٠', 6445 }, 6446 numberMap$2 = { 6447 '١': '1', 6448 '٢': '2', 6449 '٣': '3', 6450 '٤': '4', 6451 '٥': '5', 6452 '٦': '6', 6453 '٧': '7', 6454 '٨': '8', 6455 '٩': '9', 6456 '٠': '0', 6457 }, 6458 pluralForm$2 = function (n) { 6459 return n === 0 6460 ? 0 6461 : n === 1 6462 ? 1 6463 : n === 2 6464 ? 2 6465 : n % 100 >= 3 && n % 100 <= 10 6466 ? 3 6467 : n % 100 >= 11 6468 ? 4 6469 : 5; 6470 }, 6471 plurals$2 = { 6472 s: [ 6473 'أقل من ثانية', 6474 'ثانية واحدة', 6475 ['ثانيتان', 'ثانيتين'], 6476 '%d ثوان', 6477 '%d ثانية', 6478 '%d ثانية', 6479 ], 6480 m: [ 6481 'أقل من دقيقة', 6482 'دقيقة واحدة', 6483 ['دقيقتان', 'دقيقتين'], 6484 '%d دقائق', 6485 '%d دقيقة', 6486 '%d دقيقة', 6487 ], 6488 h: [ 6489 'أقل من ساعة', 6490 'ساعة واحدة', 6491 ['ساعتان', 'ساعتين'], 6492 '%d ساعات', 6493 '%d ساعة', 6494 '%d ساعة', 6495 ], 6496 d: [ 6497 'أقل من يوم', 6498 'يوم واحد', 6499 ['يومان', 'يومين'], 6500 '%d أيام', 6501 '%d يومًا', 6502 '%d يوم', 6503 ], 6504 M: [ 6505 'أقل من شهر', 6506 'شهر واحد', 6507 ['شهران', 'شهرين'], 6508 '%d أشهر', 6509 '%d شهرا', 6510 '%d شهر', 6511 ], 6512 y: [ 6513 'أقل من عام', 6514 'عام واحد', 6515 ['عامان', 'عامين'], 6516 '%d أعوام', 6517 '%d عامًا', 6518 '%d عام', 6519 ], 6520 }, 6521 pluralize$2 = function (u) { 6522 return function (number, withoutSuffix, string, isFuture) { 6523 var f = pluralForm$2(number), 6524 str = plurals$2[u][pluralForm$2(number)]; 6525 if (f === 2) { 6526 str = str[withoutSuffix ? 0 : 1]; 6527 } 6528 return str.replace(/%d/i, number); 6529 }; 6530 }, 6531 months$3 = [ 6532 'يناير', 6533 'فبراير', 6534 'مارس', 6535 'أبريل', 6536 'مايو', 6537 'يونيو', 6538 'يوليو', 6539 'أغسطس', 6540 'سبتمبر', 6541 'أكتوبر', 6542 'نوفمبر', 6543 'ديسمبر', 6544 ]; 6545 6546 hooks.defineLocale('ar', { 6547 months: months$3, 6548 monthsShort: months$3, 6549 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), 6550 weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), 6551 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), 6552 weekdaysParseExact: true, 6553 longDateFormat: { 6554 LT: 'HH:mm', 6555 LTS: 'HH:mm:ss', 6556 L: 'D/\u200FM/\u200FYYYY', 6557 LL: 'D MMMM YYYY', 6558 LLL: 'D MMMM YYYY HH:mm', 6559 LLLL: 'dddd D MMMM YYYY HH:mm', 6560 }, 6561 meridiemParse: /ص|م/, 6562 isPM: function (input) { 6563 return 'م' === input; 6564 }, 6565 meridiem: function (hour, minute, isLower) { 6566 if (hour < 12) { 6567 return 'ص'; 6568 } else { 6569 return 'م'; 6570 } 6571 }, 6572 calendar: { 6573 sameDay: '[اليوم عند الساعة] LT', 6574 nextDay: '[غدًا عند الساعة] LT', 6575 nextWeek: 'dddd [عند الساعة] LT', 6576 lastDay: '[أمس عند الساعة] LT', 6577 lastWeek: 'dddd [عند الساعة] LT', 6578 sameElse: 'L', 6579 }, 6580 relativeTime: { 6581 future: 'بعد %s', 6582 past: 'منذ %s', 6583 s: pluralize$2('s'), 6584 ss: pluralize$2('s'), 6585 m: pluralize$2('m'), 6586 mm: pluralize$2('m'), 6587 h: pluralize$2('h'), 6588 hh: pluralize$2('h'), 6589 d: pluralize$2('d'), 6590 dd: pluralize$2('d'), 6591 M: pluralize$2('M'), 6592 MM: pluralize$2('M'), 6593 y: pluralize$2('y'), 6594 yy: pluralize$2('y'), 6595 }, 6596 preparse: function (string) { 6597 return string 6598 .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { 6599 return numberMap$2[match]; 6600 }) 6601 .replace(/،/g, ','); 6602 }, 6603 postformat: function (string) { 6604 return string 6605 .replace(/\d/g, function (match) { 6606 return symbolMap$3[match]; 6607 }) 6608 .replace(/,/g, '،'); 6609 }, 6610 week: { 6611 dow: 6, // Saturday is the first day of the week. 6612 doy: 12, // The week that contains Jan 12th is the first week of the year. 6613 }, 6614 }); 6615 6616 //! moment.js locale configuration 6617 6618 var suffixes = { 6619 1: '-inci', 6620 5: '-inci', 6621 8: '-inci', 6622 70: '-inci', 6623 80: '-inci', 6624 2: '-nci', 6625 7: '-nci', 6626 20: '-nci', 6627 50: '-nci', 6628 3: '-üncü', 6629 4: '-üncü', 6630 100: '-üncü', 6631 6: '-ncı', 6632 9: '-uncu', 6633 10: '-uncu', 6634 30: '-uncu', 6635 60: '-ıncı', 6636 90: '-ıncı', 6637 }; 6638 6639 hooks.defineLocale('az', { 6640 months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split( 6641 '_' 6642 ), 6643 monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), 6644 weekdays: 6645 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split( 6646 '_' 6647 ), 6648 weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), 6649 weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'), 6650 weekdaysParseExact: true, 6651 longDateFormat: { 6652 LT: 'HH:mm', 6653 LTS: 'HH:mm:ss', 6654 L: 'DD.MM.YYYY', 6655 LL: 'D MMMM YYYY', 6656 LLL: 'D MMMM YYYY HH:mm', 6657 LLLL: 'dddd, D MMMM YYYY HH:mm', 6658 }, 6659 calendar: { 6660 sameDay: '[bugün saat] LT', 6661 nextDay: '[sabah saat] LT', 6662 nextWeek: '[gələn həftə] dddd [saat] LT', 6663 lastDay: '[dünən] LT', 6664 lastWeek: '[keçən həftə] dddd [saat] LT', 6665 sameElse: 'L', 6666 }, 6667 relativeTime: { 6668 future: '%s sonra', 6669 past: '%s əvvəl', 6670 s: 'bir neçə saniyə', 6671 ss: '%d saniyə', 6672 m: 'bir dəqiqə', 6673 mm: '%d dəqiqə', 6674 h: 'bir saat', 6675 hh: '%d saat', 6676 d: 'bir gün', 6677 dd: '%d gün', 6678 M: 'bir ay', 6679 MM: '%d ay', 6680 y: 'bir il', 6681 yy: '%d il', 6682 }, 6683 meridiemParse: /gecə|səhər|gündüz|axşam/, 6684 isPM: function (input) { 6685 return /^(gündüz|axşam)$/.test(input); 6686 }, 6687 meridiem: function (hour, minute, isLower) { 6688 if (hour < 4) { 6689 return 'gecə'; 6690 } else if (hour < 12) { 6691 return 'səhər'; 6692 } else if (hour < 17) { 6693 return 'gündüz'; 6694 } else { 6695 return 'axşam'; 6696 } 6697 }, 6698 dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, 6699 ordinal: function (number) { 6700 if (number === 0) { 6701 // special case for zero 6702 return number + '-ıncı'; 6703 } 6704 var a = number % 10, 6705 b = (number % 100) - a, 6706 c = number >= 100 ? 100 : null; 6707 return number + (suffixes[a] || suffixes[b] || suffixes[c]); 6708 }, 6709 week: { 6710 dow: 1, // Monday is the first day of the week. 6711 doy: 7, // The week that contains Jan 7th is the first week of the year. 6712 }, 6713 }); 6714 6715 //! moment.js locale configuration 6716 6717 function plural(word, num) { 6718 var forms = word.split('_'); 6719 return num % 10 === 1 && num % 100 !== 11 6720 ? forms[0] 6721 : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) 6722 ? forms[1] 6723 : forms[2]; 6724 } 6725 function relativeTimeWithPlural(number, withoutSuffix, key) { 6726 var format = { 6727 ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', 6728 mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', 6729 hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', 6730 dd: 'дзень_дні_дзён', 6731 MM: 'месяц_месяцы_месяцаў', 6732 yy: 'год_гады_гадоў', 6733 }; 6734 if (key === 'm') { 6735 return withoutSuffix ? 'хвіліна' : 'хвіліну'; 6736 } else if (key === 'h') { 6737 return withoutSuffix ? 'гадзіна' : 'гадзіну'; 6738 } else { 6739 return number + ' ' + plural(format[key], +number); 6740 } 6741 } 6742 6743 hooks.defineLocale('be', { 6744 months: { 6745 format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split( 6746 '_' 6747 ), 6748 standalone: 6749 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split( 6750 '_' 6751 ), 6752 }, 6753 monthsShort: 6754 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), 6755 weekdays: { 6756 format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split( 6757 '_' 6758 ), 6759 standalone: 6760 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split( 6761 '_' 6762 ), 6763 isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/, 6764 }, 6765 weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), 6766 weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'), 6767 longDateFormat: { 6768 LT: 'HH:mm', 6769 LTS: 'HH:mm:ss', 6770 L: 'DD.MM.YYYY', 6771 LL: 'D MMMM YYYY г.', 6772 LLL: 'D MMMM YYYY г., HH:mm', 6773 LLLL: 'dddd, D MMMM YYYY г., HH:mm', 6774 }, 6775 calendar: { 6776 sameDay: '[Сёння ў] LT', 6777 nextDay: '[Заўтра ў] LT', 6778 lastDay: '[Учора ў] LT', 6779 nextWeek: function () { 6780 return '[У] dddd [ў] LT'; 6781 }, 6782 lastWeek: function () { 6783 switch (this.day()) { 6784 case 0: 6785 case 3: 6786 case 5: 6787 case 6: 6788 return '[У мінулую] dddd [ў] LT'; 6789 case 1: 6790 case 2: 6791 case 4: 6792 return '[У мінулы] dddd [ў] LT'; 6793 } 6794 }, 6795 sameElse: 'L', 6796 }, 6797 relativeTime: { 6798 future: 'праз %s', 6799 past: '%s таму', 6800 s: 'некалькі секунд', 6801 m: relativeTimeWithPlural, 6802 mm: relativeTimeWithPlural, 6803 h: relativeTimeWithPlural, 6804 hh: relativeTimeWithPlural, 6805 d: 'дзень', 6806 dd: relativeTimeWithPlural, 6807 M: 'месяц', 6808 MM: relativeTimeWithPlural, 6809 y: 'год', 6810 yy: relativeTimeWithPlural, 6811 }, 6812 meridiemParse: /ночы|раніцы|дня|вечара/, 6813 isPM: function (input) { 6814 return /^(дня|вечара)$/.test(input); 6815 }, 6816 meridiem: function (hour, minute, isLower) { 6817 if (hour < 4) { 6818 return 'ночы'; 6819 } else if (hour < 12) { 6820 return 'раніцы'; 6821 } else if (hour < 17) { 6822 return 'дня'; 6823 } else { 6824 return 'вечара'; 6825 } 6826 }, 6827 dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/, 6828 ordinal: function (number, period) { 6829 switch (period) { 6830 case 'M': 6831 case 'd': 6832 case 'DDD': 6833 case 'w': 6834 case 'W': 6835 return (number % 10 === 2 || number % 10 === 3) && 6836 number % 100 !== 12 && 6837 number % 100 !== 13 6838 ? number + '-і' 6839 : number + '-ы'; 6840 case 'D': 6841 return number + '-га'; 6842 default: 6843 return number; 6844 } 6845 }, 6846 week: { 6847 dow: 1, // Monday is the first day of the week. 6848 doy: 7, // The week that contains Jan 7th is the first week of the year. 6849 }, 6850 }); 6851 6852 //! moment.js locale configuration 6853 6854 hooks.defineLocale('bg', { 6855 months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split( 6856 '_' 6857 ), 6858 monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), 6859 weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split( 6860 '_' 6861 ), 6862 weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'), 6863 weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), 6864 longDateFormat: { 6865 LT: 'H:mm', 6866 LTS: 'H:mm:ss', 6867 L: 'D.MM.YYYY', 6868 LL: 'D MMMM YYYY', 6869 LLL: 'D MMMM YYYY H:mm', 6870 LLLL: 'dddd, D MMMM YYYY H:mm', 6871 }, 6872 calendar: { 6873 sameDay: '[Днес в] LT', 6874 nextDay: '[Утре в] LT', 6875 nextWeek: 'dddd [в] LT', 6876 lastDay: '[Вчера в] LT', 6877 lastWeek: function () { 6878 switch (this.day()) { 6879 case 0: 6880 case 3: 6881 case 6: 6882 return '[Миналата] dddd [в] LT'; 6883 case 1: 6884 case 2: 6885 case 4: 6886 case 5: 6887 return '[Миналия] dddd [в] LT'; 6888 } 6889 }, 6890 sameElse: 'L', 6891 }, 6892 relativeTime: { 6893 future: 'след %s', 6894 past: 'преди %s', 6895 s: 'няколко секунди', 6896 ss: '%d секунди', 6897 m: 'минута', 6898 mm: '%d минути', 6899 h: 'час', 6900 hh: '%d часа', 6901 d: 'ден', 6902 dd: '%d дена', 6903 w: 'седмица', 6904 ww: '%d седмици', 6905 M: 'месец', 6906 MM: '%d месеца', 6907 y: 'година', 6908 yy: '%d години', 6909 }, 6910 dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, 6911 ordinal: function (number) { 6912 var lastDigit = number % 10, 6913 last2Digits = number % 100; 6914 if (number === 0) { 6915 return number + '-ев'; 6916 } else if (last2Digits === 0) { 6917 return number + '-ен'; 6918 } else if (last2Digits > 10 && last2Digits < 20) { 6919 return number + '-ти'; 6920 } else if (lastDigit === 1) { 6921 return number + '-ви'; 6922 } else if (lastDigit === 2) { 6923 return number + '-ри'; 6924 } else if (lastDigit === 7 || lastDigit === 8) { 6925 return number + '-ми'; 6926 } else { 6927 return number + '-ти'; 6928 } 6929 }, 6930 week: { 6931 dow: 1, // Monday is the first day of the week. 6932 doy: 7, // The week that contains Jan 7th is the first week of the year. 6933 }, 6934 }); 6935 6936 //! moment.js locale configuration 6937 6938 hooks.defineLocale('bm', { 6939 months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split( 6940 '_' 6941 ), 6942 monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'), 6943 weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'), 6944 weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'), 6945 weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'), 6946 longDateFormat: { 6947 LT: 'HH:mm', 6948 LTS: 'HH:mm:ss', 6949 L: 'DD/MM/YYYY', 6950 LL: 'MMMM [tile] D [san] YYYY', 6951 LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm', 6952 LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm', 6953 }, 6954 calendar: { 6955 sameDay: '[Bi lɛrɛ] LT', 6956 nextDay: '[Sini lɛrɛ] LT', 6957 nextWeek: 'dddd [don lɛrɛ] LT', 6958 lastDay: '[Kunu lɛrɛ] LT', 6959 lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT', 6960 sameElse: 'L', 6961 }, 6962 relativeTime: { 6963 future: '%s kɔnɔ', 6964 past: 'a bɛ %s bɔ', 6965 s: 'sanga dama dama', 6966 ss: 'sekondi %d', 6967 m: 'miniti kelen', 6968 mm: 'miniti %d', 6969 h: 'lɛrɛ kelen', 6970 hh: 'lɛrɛ %d', 6971 d: 'tile kelen', 6972 dd: 'tile %d', 6973 M: 'kalo kelen', 6974 MM: 'kalo %d', 6975 y: 'san kelen', 6976 yy: 'san %d', 6977 }, 6978 week: { 6979 dow: 1, // Monday is the first day of the week. 6980 doy: 4, // The week that contains Jan 4th is the first week of the year. 6981 }, 6982 }); 6983 6984 //! moment.js locale configuration 6985 6986 var symbolMap$4 = { 6987 1: '১', 6988 2: '২', 6989 3: '৩', 6990 4: '৪', 6991 5: '৫', 6992 6: '৬', 6993 7: '৭', 6994 8: '৮', 6995 9: '৯', 6996 0: '০', 6997 }, 6998 numberMap$3 = { 6999 '১': '1', 7000 '২': '2', 7001 '৩': '3', 7002 '৪': '4', 7003 '৫': '5', 7004 '৬': '6', 7005 '৭': '7', 7006 '৮': '8', 7007 '৯': '9', 7008 '০': '0', 7009 }; 7010 7011 hooks.defineLocale('bn-bd', { 7012 months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split( 7013 '_' 7014 ), 7015 monthsShort: 7016 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split( 7017 '_' 7018 ), 7019 weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split( 7020 '_' 7021 ), 7022 weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), 7023 weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'), 7024 longDateFormat: { 7025 LT: 'A h:mm সময়', 7026 LTS: 'A h:mm:ss সময়', 7027 L: 'DD/MM/YYYY', 7028 LL: 'D MMMM YYYY', 7029 LLL: 'D MMMM YYYY, A h:mm সময়', 7030 LLLL: 'dddd, D MMMM YYYY, A h:mm সময়', 7031 }, 7032 calendar: { 7033 sameDay: '[আজ] LT', 7034 nextDay: '[আগামীকাল] LT', 7035 nextWeek: 'dddd, LT', 7036 lastDay: '[গতকাল] LT', 7037 lastWeek: '[গত] dddd, LT', 7038 sameElse: 'L', 7039 }, 7040 relativeTime: { 7041 future: '%s পরে', 7042 past: '%s আগে', 7043 s: 'কয়েক সেকেন্ড', 7044 ss: '%d সেকেন্ড', 7045 m: 'এক মিনিট', 7046 mm: '%d মিনিট', 7047 h: 'এক ঘন্টা', 7048 hh: '%d ঘন্টা', 7049 d: 'এক দিন', 7050 dd: '%d দিন', 7051 M: 'এক মাস', 7052 MM: '%d মাস', 7053 y: 'এক বছর', 7054 yy: '%d বছর', 7055 }, 7056 preparse: function (string) { 7057 return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { 7058 return numberMap$3[match]; 7059 }); 7060 }, 7061 postformat: function (string) { 7062 return string.replace(/\d/g, function (match) { 7063 return symbolMap$4[match]; 7064 }); 7065 }, 7066 7067 meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/, 7068 meridiemHour: function (hour, meridiem) { 7069 if (hour === 12) { 7070 hour = 0; 7071 } 7072 if (meridiem === 'রাত') { 7073 return hour < 4 ? hour : hour + 12; 7074 } else if (meridiem === 'ভোর') { 7075 return hour; 7076 } else if (meridiem === 'সকাল') { 7077 return hour; 7078 } else if (meridiem === 'দুপুর') { 7079 return hour >= 3 ? hour : hour + 12; 7080 } else if (meridiem === 'বিকাল') { 7081 return hour + 12; 7082 } else if (meridiem === 'সন্ধ্যা') { 7083 return hour + 12; 7084 } 7085 }, 7086 7087 meridiem: function (hour, minute, isLower) { 7088 if (hour < 4) { 7089 return 'রাত'; 7090 } else if (hour < 6) { 7091 return 'ভোর'; 7092 } else if (hour < 12) { 7093 return 'সকাল'; 7094 } else if (hour < 15) { 7095 return 'দুপুর'; 7096 } else if (hour < 18) { 7097 return 'বিকাল'; 7098 } else if (hour < 20) { 7099 return 'সন্ধ্যা'; 7100 } else { 7101 return 'রাত'; 7102 } 7103 }, 7104 week: { 7105 dow: 0, // Sunday is the first day of the week. 7106 doy: 6, // The week that contains Jan 6th is the first week of the year. 7107 }, 7108 }); 7109 7110 //! moment.js locale configuration 7111 7112 var symbolMap$5 = { 7113 1: '১', 7114 2: '২', 7115 3: '৩', 7116 4: '৪', 7117 5: '৫', 7118 6: '৬', 7119 7: '৭', 7120 8: '৮', 7121 9: '৯', 7122 0: '০', 7123 }, 7124 numberMap$4 = { 7125 '১': '1', 7126 '২': '2', 7127 '৩': '3', 7128 '৪': '4', 7129 '৫': '5', 7130 '৬': '6', 7131 '৭': '7', 7132 '৮': '8', 7133 '৯': '9', 7134 '০': '0', 7135 }; 7136 7137 hooks.defineLocale('bn', { 7138 months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split( 7139 '_' 7140 ), 7141 monthsShort: 7142 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split( 7143 '_' 7144 ), 7145 weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split( 7146 '_' 7147 ), 7148 weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), 7149 weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'), 7150 longDateFormat: { 7151 LT: 'A h:mm সময়', 7152 LTS: 'A h:mm:ss সময়', 7153 L: 'DD/MM/YYYY', 7154 LL: 'D MMMM YYYY', 7155 LLL: 'D MMMM YYYY, A h:mm সময়', 7156 LLLL: 'dddd, D MMMM YYYY, A h:mm সময়', 7157 }, 7158 calendar: { 7159 sameDay: '[আজ] LT', 7160 nextDay: '[আগামীকাল] LT', 7161 nextWeek: 'dddd, LT', 7162 lastDay: '[গতকাল] LT', 7163 lastWeek: '[গত] dddd, LT', 7164 sameElse: 'L', 7165 }, 7166 relativeTime: { 7167 future: '%s পরে', 7168 past: '%s আগে', 7169 s: 'কয়েক সেকেন্ড', 7170 ss: '%d সেকেন্ড', 7171 m: 'এক মিনিট', 7172 mm: '%d মিনিট', 7173 h: 'এক ঘন্টা', 7174 hh: '%d ঘন্টা', 7175 d: 'এক দিন', 7176 dd: '%d দিন', 7177 M: 'এক মাস', 7178 MM: '%d মাস', 7179 y: 'এক বছর', 7180 yy: '%d বছর', 7181 }, 7182 preparse: function (string) { 7183 return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { 7184 return numberMap$4[match]; 7185 }); 7186 }, 7187 postformat: function (string) { 7188 return string.replace(/\d/g, function (match) { 7189 return symbolMap$5[match]; 7190 }); 7191 }, 7192 meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/, 7193 meridiemHour: function (hour, meridiem) { 7194 if (hour === 12) { 7195 hour = 0; 7196 } 7197 if ( 7198 (meridiem === 'রাত' && hour >= 4) || 7199 (meridiem === 'দুপুর' && hour < 5) || 7200 meridiem === 'বিকাল' 7201 ) { 7202 return hour + 12; 7203 } else { 7204 return hour; 7205 } 7206 }, 7207 meridiem: function (hour, minute, isLower) { 7208 if (hour < 4) { 7209 return 'রাত'; 7210 } else if (hour < 10) { 7211 return 'সকাল'; 7212 } else if (hour < 17) { 7213 return 'দুপুর'; 7214 } else if (hour < 20) { 7215 return 'বিকাল'; 7216 } else { 7217 return 'রাত'; 7218 } 7219 }, 7220 week: { 7221 dow: 0, // Sunday is the first day of the week. 7222 doy: 6, // The week that contains Jan 6th is the first week of the year. 7223 }, 7224 }); 7225 7226 //! moment.js locale configuration 7227 7228 var symbolMap$6 = { 7229 1: '༡', 7230 2: '༢', 7231 3: '༣', 7232 4: '༤', 7233 5: '༥', 7234 6: '༦', 7235 7: '༧', 7236 8: '༨', 7237 9: '༩', 7238 0: '༠', 7239 }, 7240 numberMap$5 = { 7241 '༡': '1', 7242 '༢': '2', 7243 '༣': '3', 7244 '༤': '4', 7245 '༥': '5', 7246 '༦': '6', 7247 '༧': '7', 7248 '༨': '8', 7249 '༩': '9', 7250 '༠': '0', 7251 }; 7252 7253 hooks.defineLocale('bo', { 7254 months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split( 7255 '_' 7256 ), 7257 monthsShort: 7258 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split( 7259 '_' 7260 ), 7261 monthsShortRegex: /^(ཟླ་\d{1,2})/, 7262 monthsParseExact: true, 7263 weekdays: 7264 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split( 7265 '_' 7266 ), 7267 weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split( 7268 '_' 7269 ), 7270 weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'), 7271 longDateFormat: { 7272 LT: 'A h:mm', 7273 LTS: 'A h:mm:ss', 7274 L: 'DD/MM/YYYY', 7275 LL: 'D MMMM YYYY', 7276 LLL: 'D MMMM YYYY, A h:mm', 7277 LLLL: 'dddd, D MMMM YYYY, A h:mm', 7278 }, 7279 calendar: { 7280 sameDay: '[དི་རིང] LT', 7281 nextDay: '[སང་ཉིན] LT', 7282 nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT', 7283 lastDay: '[ཁ་སང] LT', 7284 lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT', 7285 sameElse: 'L', 7286 }, 7287 relativeTime: { 7288 future: '%s ལ་', 7289 past: '%s སྔན་ལ', 7290 s: 'ལམ་སང', 7291 ss: '%d སྐར་ཆ།', 7292 m: 'སྐར་མ་གཅིག', 7293 mm: '%d སྐར་མ', 7294 h: 'ཆུ་ཚོད་གཅིག', 7295 hh: '%d ཆུ་ཚོད', 7296 d: 'ཉིན་གཅིག', 7297 dd: '%d ཉིན་', 7298 M: 'ཟླ་བ་གཅིག', 7299 MM: '%d ཟླ་བ', 7300 y: 'ལོ་གཅིག', 7301 yy: '%d ལོ', 7302 }, 7303 preparse: function (string) { 7304 return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { 7305 return numberMap$5[match]; 7306 }); 7307 }, 7308 postformat: function (string) { 7309 return string.replace(/\d/g, function (match) { 7310 return symbolMap$6[match]; 7311 }); 7312 }, 7313 meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, 7314 meridiemHour: function (hour, meridiem) { 7315 if (hour === 12) { 7316 hour = 0; 7317 } 7318 if ( 7319 (meridiem === 'མཚན་མོ' && hour >= 4) || 7320 (meridiem === 'ཉིན་གུང' && hour < 5) || 7321 meridiem === 'དགོང་དག' 7322 ) { 7323 return hour + 12; 7324 } else { 7325 return hour; 7326 } 7327 }, 7328 meridiem: function (hour, minute, isLower) { 7329 if (hour < 4) { 7330 return 'མཚན་མོ'; 7331 } else if (hour < 10) { 7332 return 'ཞོགས་ཀས'; 7333 } else if (hour < 17) { 7334 return 'ཉིན་གུང'; 7335 } else if (hour < 20) { 7336 return 'དགོང་དག'; 7337 } else { 7338 return 'མཚན་མོ'; 7339 } 7340 }, 7341 week: { 7342 dow: 0, // Sunday is the first day of the week. 7343 doy: 6, // The week that contains Jan 6th is the first week of the year. 7344 }, 7345 }); 7346 7347 //! moment.js locale configuration 7348 7349 function relativeTimeWithMutation(number, withoutSuffix, key) { 7350 var format = { 7351 mm: 'munutenn', 7352 MM: 'miz', 7353 dd: 'devezh', 7354 }; 7355 return number + ' ' + mutation(format[key], number); 7356 } 7357 function specialMutationForYears(number) { 7358 switch (lastNumber(number)) { 7359 case 1: 7360 case 3: 7361 case 4: 7362 case 5: 7363 case 9: 7364 return number + ' bloaz'; 7365 default: 7366 return number + ' vloaz'; 7367 } 7368 } 7369 function lastNumber(number) { 7370 if (number > 9) { 7371 return lastNumber(number % 10); 7372 } 7373 return number; 7374 } 7375 function mutation(text, number) { 7376 if (number === 2) { 7377 return softMutation(text); 7378 } 7379 return text; 7380 } 7381 function softMutation(text) { 7382 var mutationTable = { 7383 m: 'v', 7384 b: 'v', 7385 d: 'z', 7386 }; 7387 if (mutationTable[text.charAt(0)] === undefined) { 7388 return text; 7389 } 7390 return mutationTable[text.charAt(0)] + text.substring(1); 7391 } 7392 7393 var monthsParse = [ 7394 /^gen/i, 7395 /^c[ʼ\']hwe/i, 7396 /^meu/i, 7397 /^ebr/i, 7398 /^mae/i, 7399 /^(mez|eve)/i, 7400 /^gou/i, 7401 /^eos/i, 7402 /^gwe/i, 7403 /^her/i, 7404 /^du/i, 7405 /^ker/i, 7406 ], 7407 monthsRegex$1 = 7408 /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i, 7409 monthsStrictRegex = 7410 /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i, 7411 monthsShortStrictRegex = 7412 /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i, 7413 fullWeekdaysParse = [ 7414 /^sul/i, 7415 /^lun/i, 7416 /^meurzh/i, 7417 /^merc[ʼ\']her/i, 7418 /^yaou/i, 7419 /^gwener/i, 7420 /^sadorn/i, 7421 ], 7422 shortWeekdaysParse = [ 7423 /^Sul/i, 7424 /^Lun/i, 7425 /^Meu/i, 7426 /^Mer/i, 7427 /^Yao/i, 7428 /^Gwe/i, 7429 /^Sad/i, 7430 ], 7431 minWeekdaysParse = [ 7432 /^Su/i, 7433 /^Lu/i, 7434 /^Me([^r]|$)/i, 7435 /^Mer/i, 7436 /^Ya/i, 7437 /^Gw/i, 7438 /^Sa/i, 7439 ]; 7440 7441 hooks.defineLocale('br', { 7442 months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split( 7443 '_' 7444 ), 7445 monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), 7446 weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'), 7447 weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), 7448 weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), 7449 weekdaysParse: minWeekdaysParse, 7450 fullWeekdaysParse: fullWeekdaysParse, 7451 shortWeekdaysParse: shortWeekdaysParse, 7452 minWeekdaysParse: minWeekdaysParse, 7453 7454 monthsRegex: monthsRegex$1, 7455 monthsShortRegex: monthsRegex$1, 7456 monthsStrictRegex: monthsStrictRegex, 7457 monthsShortStrictRegex: monthsShortStrictRegex, 7458 monthsParse: monthsParse, 7459 longMonthsParse: monthsParse, 7460 shortMonthsParse: monthsParse, 7461 7462 longDateFormat: { 7463 LT: 'HH:mm', 7464 LTS: 'HH:mm:ss', 7465 L: 'DD/MM/YYYY', 7466 LL: 'D [a viz] MMMM YYYY', 7467 LLL: 'D [a viz] MMMM YYYY HH:mm', 7468 LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm', 7469 }, 7470 calendar: { 7471 sameDay: '[Hiziv da] LT', 7472 nextDay: '[Warcʼhoazh da] LT', 7473 nextWeek: 'dddd [da] LT', 7474 lastDay: '[Decʼh da] LT', 7475 lastWeek: 'dddd [paset da] LT', 7476 sameElse: 'L', 7477 }, 7478 relativeTime: { 7479 future: 'a-benn %s', 7480 past: '%s ʼzo', 7481 s: 'un nebeud segondennoù', 7482 ss: '%d eilenn', 7483 m: 'ur vunutenn', 7484 mm: relativeTimeWithMutation, 7485 h: 'un eur', 7486 hh: '%d eur', 7487 d: 'un devezh', 7488 dd: relativeTimeWithMutation, 7489 M: 'ur miz', 7490 MM: relativeTimeWithMutation, 7491 y: 'ur bloaz', 7492 yy: specialMutationForYears, 7493 }, 7494 dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/, 7495 ordinal: function (number) { 7496 var output = number === 1 ? 'añ' : 'vet'; 7497 return number + output; 7498 }, 7499 week: { 7500 dow: 1, // Monday is the first day of the week. 7501 doy: 4, // The week that contains Jan 4th is the first week of the year. 7502 }, 7503 meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn 7504 isPM: function (token) { 7505 return token === 'g.m.'; 7506 }, 7507 meridiem: function (hour, minute, isLower) { 7508 return hour < 12 ? 'a.m.' : 'g.m.'; 7509 }, 7510 }); 7511 7512 //! moment.js locale configuration 7513 7514 function processRelativeTime(number, withoutSuffix, key, isFuture) { 7515 switch (key) { 7516 case 'm': 7517 return withoutSuffix 7518 ? 'jedna minuta' 7519 : isFuture 7520 ? 'jednu minutu' 7521 : 'jedne minute'; 7522 } 7523 } 7524 7525 function translate(number, withoutSuffix, key) { 7526 var result = number + ' '; 7527 switch (key) { 7528 case 'ss': 7529 if (number === 1) { 7530 result += 'sekunda'; 7531 } else if (number === 2 || number === 3 || number === 4) { 7532 result += 'sekunde'; 7533 } else { 7534 result += 'sekundi'; 7535 } 7536 return result; 7537 case 'mm': 7538 if (number === 1) { 7539 result += 'minuta'; 7540 } else if (number === 2 || number === 3 || number === 4) { 7541 result += 'minute'; 7542 } else { 7543 result += 'minuta'; 7544 } 7545 return result; 7546 case 'h': 7547 return withoutSuffix ? 'jedan sat' : 'jedan sat'; 7548 case 'hh': 7549 if (number === 1) { 7550 result += 'sat'; 7551 } else if (number === 2 || number === 3 || number === 4) { 7552 result += 'sata'; 7553 } else { 7554 result += 'sati'; 7555 } 7556 return result; 7557 case 'dd': 7558 if (number === 1) { 7559 result += 'dan'; 7560 } else { 7561 result += 'dana'; 7562 } 7563 return result; 7564 case 'MM': 7565 if (number === 1) { 7566 result += 'mjesec'; 7567 } else if (number === 2 || number === 3 || number === 4) { 7568 result += 'mjeseca'; 7569 } else { 7570 result += 'mjeseci'; 7571 } 7572 return result; 7573 case 'yy': 7574 if (number === 1) { 7575 result += 'godina'; 7576 } else if (number === 2 || number === 3 || number === 4) { 7577 result += 'godine'; 7578 } else { 7579 result += 'godina'; 7580 } 7581 return result; 7582 } 7583 } 7584 7585 hooks.defineLocale('bs', { 7586 months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split( 7587 '_' 7588 ), 7589 monthsShort: 7590 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split( 7591 '_' 7592 ), 7593 monthsParseExact: true, 7594 weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( 7595 '_' 7596 ), 7597 weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), 7598 weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), 7599 weekdaysParseExact: true, 7600 longDateFormat: { 7601 LT: 'H:mm', 7602 LTS: 'H:mm:ss', 7603 L: 'DD.MM.YYYY', 7604 LL: 'D. MMMM YYYY', 7605 LLL: 'D. MMMM YYYY H:mm', 7606 LLLL: 'dddd, D. MMMM YYYY H:mm', 7607 }, 7608 calendar: { 7609 sameDay: '[danas u] LT', 7610 nextDay: '[sutra u] LT', 7611 nextWeek: function () { 7612 switch (this.day()) { 7613 case 0: 7614 return '[u] [nedjelju] [u] LT'; 7615 case 3: 7616 return '[u] [srijedu] [u] LT'; 7617 case 6: 7618 return '[u] [subotu] [u] LT'; 7619 case 1: 7620 case 2: 7621 case 4: 7622 case 5: 7623 return '[u] dddd [u] LT'; 7624 } 7625 }, 7626 lastDay: '[jučer u] LT', 7627 lastWeek: function () { 7628 switch (this.day()) { 7629 case 0: 7630 case 3: 7631 return '[prošlu] dddd [u] LT'; 7632 case 6: 7633 return '[prošle] [subote] [u] LT'; 7634 case 1: 7635 case 2: 7636 case 4: 7637 case 5: 7638 return '[prošli] dddd [u] LT'; 7639 } 7640 }, 7641 sameElse: 'L', 7642 }, 7643 relativeTime: { 7644 future: 'za %s', 7645 past: 'prije %s', 7646 s: 'par sekundi', 7647 ss: translate, 7648 m: processRelativeTime, 7649 mm: translate, 7650 h: translate, 7651 hh: translate, 7652 d: 'dan', 7653 dd: translate, 7654 M: 'mjesec', 7655 MM: translate, 7656 y: 'godinu', 7657 yy: translate, 7658 }, 7659 dayOfMonthOrdinalParse: /\d{1,2}\./, 7660 ordinal: '%d.', 7661 week: { 7662 dow: 1, // Monday is the first day of the week. 7663 doy: 7, // The week that contains Jan 7th is the first week of the year. 7664 }, 7665 }); 7666 7667 //! moment.js locale configuration 7668 7669 hooks.defineLocale('ca', { 7670 months: { 7671 standalone: 7672 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split( 7673 '_' 7674 ), 7675 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( 7676 '_' 7677 ), 7678 isFormat: /D[oD]?(\s)+MMMM/, 7679 }, 7680 monthsShort: 7681 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split( 7682 '_' 7683 ), 7684 monthsParseExact: true, 7685 weekdays: 7686 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split( 7687 '_' 7688 ), 7689 weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), 7690 weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'), 7691 weekdaysParseExact: true, 7692 longDateFormat: { 7693 LT: 'H:mm', 7694 LTS: 'H:mm:ss', 7695 L: 'DD/MM/YYYY', 7696 LL: 'D MMMM [de] YYYY', 7697 ll: 'D MMM YYYY', 7698 LLL: 'D MMMM [de] YYYY [a les] H:mm', 7699 lll: 'D MMM YYYY, H:mm', 7700 LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm', 7701 llll: 'ddd D MMM YYYY, H:mm', 7702 }, 7703 calendar: { 7704 sameDay: function () { 7705 return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; 7706 }, 7707 nextDay: function () { 7708 return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; 7709 }, 7710 nextWeek: function () { 7711 return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; 7712 }, 7713 lastDay: function () { 7714 return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; 7715 }, 7716 lastWeek: function () { 7717 return ( 7718 '[el] dddd [passat a ' + 7719 (this.hours() !== 1 ? 'les' : 'la') + 7720 '] LT' 7721 ); 7722 }, 7723 sameElse: 'L', 7724 }, 7725 relativeTime: { 7726 future: "d'aquí %s", 7727 past: 'fa %s', 7728 s: 'uns segons', 7729 ss: '%d segons', 7730 m: 'un minut', 7731 mm: '%d minuts', 7732 h: 'una hora', 7733 hh: '%d hores', 7734 d: 'un dia', 7735 dd: '%d dies', 7736 M: 'un mes', 7737 MM: '%d mesos', 7738 y: 'un any', 7739 yy: '%d anys', 7740 }, 7741 dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, 7742 ordinal: function (number, period) { 7743 var output = 7744 number === 1 7745 ? 'r' 7746 : number === 2 7747 ? 'n' 7748 : number === 3 7749 ? 'r' 7750 : number === 4 7751 ? 't' 7752 : 'è'; 7753 if (period === 'w' || period === 'W') { 7754 output = 'a'; 7755 } 7756 return number + output; 7757 }, 7758 week: { 7759 dow: 1, // Monday is the first day of the week. 7760 doy: 4, // The week that contains Jan 4th is the first week of the year. 7761 }, 7762 }); 7763 7764 //! moment.js locale configuration 7765 7766 var months$4 = { 7767 standalone: 7768 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split( 7769 '_' 7770 ), 7771 format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split( 7772 '_' 7773 ), 7774 isFormat: /DD?[o.]?(\[[^\[\]]*\]|\s)+MMMM/, 7775 }, 7776 monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'), 7777 monthsParse$1 = [ 7778 /^led/i, 7779 /^úno/i, 7780 /^bře/i, 7781 /^dub/i, 7782 /^kvě/i, 7783 /^(čvn|červen$|června)/i, 7784 /^(čvc|červenec|července)/i, 7785 /^srp/i, 7786 /^zář/i, 7787 /^říj/i, 7788 /^lis/i, 7789 /^pro/i, 7790 ], 7791 // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. 7792 // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. 7793 monthsRegex$2 = 7794 /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i; 7795 7796 function plural$1(n) { 7797 return n > 1 && n < 5 && ~~(n / 10) !== 1; 7798 } 7799 function translate$1(number, withoutSuffix, key, isFuture) { 7800 var result = number + ' '; 7801 switch (key) { 7802 case 's': // a few seconds / in a few seconds / a few seconds ago 7803 return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami'; 7804 case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago 7805 if (withoutSuffix || isFuture) { 7806 return result + (plural$1(number) ? 'sekundy' : 'sekund'); 7807 } else { 7808 return result + 'sekundami'; 7809 } 7810 case 'm': // a minute / in a minute / a minute ago 7811 return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou'; 7812 case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago 7813 if (withoutSuffix || isFuture) { 7814 return result + (plural$1(number) ? 'minuty' : 'minut'); 7815 } else { 7816 return result + 'minutami'; 7817 } 7818 case 'h': // an hour / in an hour / an hour ago 7819 return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; 7820 case 'hh': // 9 hours / in 9 hours / 9 hours ago 7821 if (withoutSuffix || isFuture) { 7822 return result + (plural$1(number) ? 'hodiny' : 'hodin'); 7823 } else { 7824 return result + 'hodinami'; 7825 } 7826 case 'd': // a day / in a day / a day ago 7827 return withoutSuffix || isFuture ? 'den' : 'dnem'; 7828 case 'dd': // 9 days / in 9 days / 9 days ago 7829 if (withoutSuffix || isFuture) { 7830 return result + (plural$1(number) ? 'dny' : 'dní'); 7831 } else { 7832 return result + 'dny'; 7833 } 7834 case 'M': // a month / in a month / a month ago 7835 return withoutSuffix || isFuture ? 'měsíc' : 'měsícem'; 7836 case 'MM': // 9 months / in 9 months / 9 months ago 7837 if (withoutSuffix || isFuture) { 7838 return result + (plural$1(number) ? 'měsíce' : 'měsíců'); 7839 } else { 7840 return result + 'měsíci'; 7841 } 7842 case 'y': // a year / in a year / a year ago 7843 return withoutSuffix || isFuture ? 'rok' : 'rokem'; 7844 case 'yy': // 9 years / in 9 years / 9 years ago 7845 if (withoutSuffix || isFuture) { 7846 return result + (plural$1(number) ? 'roky' : 'let'); 7847 } else { 7848 return result + 'lety'; 7849 } 7850 } 7851 } 7852 7853 hooks.defineLocale('cs', { 7854 months: months$4, 7855 monthsShort: monthsShort, 7856 monthsRegex: monthsRegex$2, 7857 monthsShortRegex: monthsRegex$2, 7858 // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched. 7859 // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'. 7860 monthsStrictRegex: 7861 /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i, 7862 monthsShortStrictRegex: 7863 /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i, 7864 monthsParse: monthsParse$1, 7865 longMonthsParse: monthsParse$1, 7866 shortMonthsParse: monthsParse$1, 7867 weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), 7868 weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'), 7869 weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'), 7870 longDateFormat: { 7871 LT: 'H:mm', 7872 LTS: 'H:mm:ss', 7873 L: 'DD.MM.YYYY', 7874 LL: 'D. MMMM YYYY', 7875 LLL: 'D. MMMM YYYY H:mm', 7876 LLLL: 'dddd D. MMMM YYYY H:mm', 7877 l: 'D. M. YYYY', 7878 }, 7879 calendar: { 7880 sameDay: '[dnes v] LT', 7881 nextDay: '[zítra v] LT', 7882 nextWeek: function () { 7883 switch (this.day()) { 7884 case 0: 7885 return '[v neděli v] LT'; 7886 case 1: 7887 case 2: 7888 return '[v] dddd [v] LT'; 7889 case 3: 7890 return '[ve středu v] LT'; 7891 case 4: 7892 return '[ve čtvrtek v] LT'; 7893 case 5: 7894 return '[v pátek v] LT'; 7895 case 6: 7896 return '[v sobotu v] LT'; 7897 } 7898 }, 7899 lastDay: '[včera v] LT', 7900 lastWeek: function () { 7901 switch (this.day()) { 7902 case 0: 7903 return '[minulou neděli v] LT'; 7904 case 1: 7905 case 2: 7906 return '[minulé] dddd [v] LT'; 7907 case 3: 7908 return '[minulou středu v] LT'; 7909 case 4: 7910 case 5: 7911 return '[minulý] dddd [v] LT'; 7912 case 6: 7913 return '[minulou sobotu v] LT'; 7914 } 7915 }, 7916 sameElse: 'L', 7917 }, 7918 relativeTime: { 7919 future: 'za %s', 7920 past: 'před %s', 7921 s: translate$1, 7922 ss: translate$1, 7923 m: translate$1, 7924 mm: translate$1, 7925 h: translate$1, 7926 hh: translate$1, 7927 d: translate$1, 7928 dd: translate$1, 7929 M: translate$1, 7930 MM: translate$1, 7931 y: translate$1, 7932 yy: translate$1, 7933 }, 7934 dayOfMonthOrdinalParse: /\d{1,2}\./, 7935 ordinal: '%d.', 7936 week: { 7937 dow: 1, // Monday is the first day of the week. 7938 doy: 4, // The week that contains Jan 4th is the first week of the year. 7939 }, 7940 }); 7941 7942 //! moment.js locale configuration 7943 7944 hooks.defineLocale('cv', { 7945 months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split( 7946 '_' 7947 ), 7948 monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), 7949 weekdays: 7950 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split( 7951 '_' 7952 ), 7953 weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), 7954 weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), 7955 longDateFormat: { 7956 LT: 'HH:mm', 7957 LTS: 'HH:mm:ss', 7958 L: 'DD-MM-YYYY', 7959 LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', 7960 LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', 7961 LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', 7962 }, 7963 calendar: { 7964 sameDay: '[Паян] LT [сехетре]', 7965 nextDay: '[Ыран] LT [сехетре]', 7966 lastDay: '[Ӗнер] LT [сехетре]', 7967 nextWeek: '[Ҫитес] dddd LT [сехетре]', 7968 lastWeek: '[Иртнӗ] dddd LT [сехетре]', 7969 sameElse: 'L', 7970 }, 7971 relativeTime: { 7972 future: function (output) { 7973 var affix = /сехет$/i.exec(output) 7974 ? 'рен' 7975 : /ҫул$/i.exec(output) 7976 ? 'тан' 7977 : 'ран'; 7978 return output + affix; 7979 }, 7980 past: '%s каялла', 7981 s: 'пӗр-ик ҫеккунт', 7982 ss: '%d ҫеккунт', 7983 m: 'пӗр минут', 7984 mm: '%d минут', 7985 h: 'пӗр сехет', 7986 hh: '%d сехет', 7987 d: 'пӗр кун', 7988 dd: '%d кун', 7989 M: 'пӗр уйӑх', 7990 MM: '%d уйӑх', 7991 y: 'пӗр ҫул', 7992 yy: '%d ҫул', 7993 }, 7994 dayOfMonthOrdinalParse: /\d{1,2}-мӗш/, 7995 ordinal: '%d-мӗш', 7996 week: { 7997 dow: 1, // Monday is the first day of the week. 7998 doy: 7, // The week that contains Jan 7th is the first week of the year. 7999 }, 8000 }); 8001 8002 //! moment.js locale configuration 8003 8004 hooks.defineLocale('cy', { 8005 months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split( 8006 '_' 8007 ), 8008 monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split( 8009 '_' 8010 ), 8011 weekdays: 8012 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split( 8013 '_' 8014 ), 8015 weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), 8016 weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), 8017 weekdaysParseExact: true, 8018 // time formats are the same as en-gb 8019 longDateFormat: { 8020 LT: 'HH:mm', 8021 LTS: 'HH:mm:ss', 8022 L: 'DD/MM/YYYY', 8023 LL: 'D MMMM YYYY', 8024 LLL: 'D MMMM YYYY HH:mm', 8025 LLLL: 'dddd, D MMMM YYYY HH:mm', 8026 }, 8027 calendar: { 8028 sameDay: '[Heddiw am] LT', 8029 nextDay: '[Yfory am] LT', 8030 nextWeek: 'dddd [am] LT', 8031 lastDay: '[Ddoe am] LT', 8032 lastWeek: 'dddd [diwethaf am] LT', 8033 sameElse: 'L', 8034 }, 8035 relativeTime: { 8036 future: 'mewn %s', 8037 past: '%s yn ôl', 8038 s: 'ychydig eiliadau', 8039 ss: '%d eiliad', 8040 m: 'munud', 8041 mm: '%d munud', 8042 h: 'awr', 8043 hh: '%d awr', 8044 d: 'diwrnod', 8045 dd: '%d diwrnod', 8046 M: 'mis', 8047 MM: '%d mis', 8048 y: 'blwyddyn', 8049 yy: '%d flynedd', 8050 }, 8051 dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, 8052 // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh 8053 ordinal: function (number) { 8054 var b = number, 8055 output = '', 8056 lookup = [ 8057 '', 8058 'af', 8059 'il', 8060 'ydd', 8061 'ydd', 8062 'ed', 8063 'ed', 8064 'ed', 8065 'fed', 8066 'fed', 8067 'fed', // 1af to 10fed 8068 'eg', 8069 'fed', 8070 'eg', 8071 'eg', 8072 'fed', 8073 'eg', 8074 'eg', 8075 'fed', 8076 'eg', 8077 'fed', // 11eg to 20fed 8078 ]; 8079 if (b > 20) { 8080 if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { 8081 output = 'fed'; // not 30ain, 70ain or 90ain 8082 } else { 8083 output = 'ain'; 8084 } 8085 } else if (b > 0) { 8086 output = lookup[b]; 8087 } 8088 return number + output; 8089 }, 8090 week: { 8091 dow: 1, // Monday is the first day of the week. 8092 doy: 4, // The week that contains Jan 4th is the first week of the year. 8093 }, 8094 }); 8095 8096 //! moment.js locale configuration 8097 8098 hooks.defineLocale('da', { 8099 months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split( 8100 '_' 8101 ), 8102 monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), 8103 weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), 8104 weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'), 8105 weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), 8106 longDateFormat: { 8107 LT: 'HH:mm', 8108 LTS: 'HH:mm:ss', 8109 L: 'DD.MM.YYYY', 8110 LL: 'D. MMMM YYYY', 8111 LLL: 'D. MMMM YYYY HH:mm', 8112 LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm', 8113 }, 8114 calendar: { 8115 sameDay: '[i dag kl.] LT', 8116 nextDay: '[i morgen kl.] LT', 8117 nextWeek: 'på dddd [kl.] LT', 8118 lastDay: '[i går kl.] LT', 8119 lastWeek: '[i] dddd[s kl.] LT', 8120 sameElse: 'L', 8121 }, 8122 relativeTime: { 8123 future: 'om %s', 8124 past: '%s siden', 8125 s: 'få sekunder', 8126 ss: '%d sekunder', 8127 m: 'et minut', 8128 mm: '%d minutter', 8129 h: 'en time', 8130 hh: '%d timer', 8131 d: 'en dag', 8132 dd: '%d dage', 8133 M: 'en måned', 8134 MM: '%d måneder', 8135 y: 'et år', 8136 yy: '%d år', 8137 }, 8138 dayOfMonthOrdinalParse: /\d{1,2}\./, 8139 ordinal: '%d.', 8140 week: { 8141 dow: 1, // Monday is the first day of the week. 8142 doy: 4, // The week that contains Jan 4th is the first week of the year. 8143 }, 8144 }); 8145 8146 //! moment.js locale configuration 8147 8148 function processRelativeTime$1(number, withoutSuffix, key, isFuture) { 8149 var format = { 8150 m: ['eine Minute', 'einer Minute'], 8151 h: ['eine Stunde', 'einer Stunde'], 8152 d: ['ein Tag', 'einem Tag'], 8153 dd: [number + ' Tage', number + ' Tagen'], 8154 w: ['eine Woche', 'einer Woche'], 8155 M: ['ein Monat', 'einem Monat'], 8156 MM: [number + ' Monate', number + ' Monaten'], 8157 y: ['ein Jahr', 'einem Jahr'], 8158 yy: [number + ' Jahre', number + ' Jahren'], 8159 }; 8160 return withoutSuffix ? format[key][0] : format[key][1]; 8161 } 8162 8163 hooks.defineLocale('de-at', { 8164 months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( 8165 '_' 8166 ), 8167 monthsShort: 8168 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), 8169 monthsParseExact: true, 8170 weekdays: 8171 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( 8172 '_' 8173 ), 8174 weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), 8175 weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), 8176 weekdaysParseExact: true, 8177 longDateFormat: { 8178 LT: 'HH:mm', 8179 LTS: 'HH:mm:ss', 8180 L: 'DD.MM.YYYY', 8181 LL: 'D. MMMM YYYY', 8182 LLL: 'D. MMMM YYYY HH:mm', 8183 LLLL: 'dddd, D. MMMM YYYY HH:mm', 8184 }, 8185 calendar: { 8186 sameDay: '[heute um] LT [Uhr]', 8187 sameElse: 'L', 8188 nextDay: '[morgen um] LT [Uhr]', 8189 nextWeek: 'dddd [um] LT [Uhr]', 8190 lastDay: '[gestern um] LT [Uhr]', 8191 lastWeek: '[letzten] dddd [um] LT [Uhr]', 8192 }, 8193 relativeTime: { 8194 future: 'in %s', 8195 past: 'vor %s', 8196 s: 'ein paar Sekunden', 8197 ss: '%d Sekunden', 8198 m: processRelativeTime$1, 8199 mm: '%d Minuten', 8200 h: processRelativeTime$1, 8201 hh: '%d Stunden', 8202 d: processRelativeTime$1, 8203 dd: processRelativeTime$1, 8204 w: processRelativeTime$1, 8205 ww: '%d Wochen', 8206 M: processRelativeTime$1, 8207 MM: processRelativeTime$1, 8208 y: processRelativeTime$1, 8209 yy: processRelativeTime$1, 8210 }, 8211 dayOfMonthOrdinalParse: /\d{1,2}\./, 8212 ordinal: '%d.', 8213 week: { 8214 dow: 1, // Monday is the first day of the week. 8215 doy: 4, // The week that contains Jan 4th is the first week of the year. 8216 }, 8217 }); 8218 8219 //! moment.js locale configuration 8220 8221 function processRelativeTime$2(number, withoutSuffix, key, isFuture) { 8222 var format = { 8223 m: ['eine Minute', 'einer Minute'], 8224 h: ['eine Stunde', 'einer Stunde'], 8225 d: ['ein Tag', 'einem Tag'], 8226 dd: [number + ' Tage', number + ' Tagen'], 8227 w: ['eine Woche', 'einer Woche'], 8228 M: ['ein Monat', 'einem Monat'], 8229 MM: [number + ' Monate', number + ' Monaten'], 8230 y: ['ein Jahr', 'einem Jahr'], 8231 yy: [number + ' Jahre', number + ' Jahren'], 8232 }; 8233 return withoutSuffix ? format[key][0] : format[key][1]; 8234 } 8235 8236 hooks.defineLocale('de-ch', { 8237 months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( 8238 '_' 8239 ), 8240 monthsShort: 8241 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), 8242 monthsParseExact: true, 8243 weekdays: 8244 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( 8245 '_' 8246 ), 8247 weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), 8248 weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), 8249 weekdaysParseExact: true, 8250 longDateFormat: { 8251 LT: 'HH:mm', 8252 LTS: 'HH:mm:ss', 8253 L: 'DD.MM.YYYY', 8254 LL: 'D. MMMM YYYY', 8255 LLL: 'D. MMMM YYYY HH:mm', 8256 LLLL: 'dddd, D. MMMM YYYY HH:mm', 8257 }, 8258 calendar: { 8259 sameDay: '[heute um] LT [Uhr]', 8260 sameElse: 'L', 8261 nextDay: '[morgen um] LT [Uhr]', 8262 nextWeek: 'dddd [um] LT [Uhr]', 8263 lastDay: '[gestern um] LT [Uhr]', 8264 lastWeek: '[letzten] dddd [um] LT [Uhr]', 8265 }, 8266 relativeTime: { 8267 future: 'in %s', 8268 past: 'vor %s', 8269 s: 'ein paar Sekunden', 8270 ss: '%d Sekunden', 8271 m: processRelativeTime$2, 8272 mm: '%d Minuten', 8273 h: processRelativeTime$2, 8274 hh: '%d Stunden', 8275 d: processRelativeTime$2, 8276 dd: processRelativeTime$2, 8277 w: processRelativeTime$2, 8278 ww: '%d Wochen', 8279 M: processRelativeTime$2, 8280 MM: processRelativeTime$2, 8281 y: processRelativeTime$2, 8282 yy: processRelativeTime$2, 8283 }, 8284 dayOfMonthOrdinalParse: /\d{1,2}\./, 8285 ordinal: '%d.', 8286 week: { 8287 dow: 1, // Monday is the first day of the week. 8288 doy: 4, // The week that contains Jan 4th is the first week of the year. 8289 }, 8290 }); 8291 8292 //! moment.js locale configuration 8293 8294 function processRelativeTime$3(number, withoutSuffix, key, isFuture) { 8295 var format = { 8296 m: ['eine Minute', 'einer Minute'], 8297 h: ['eine Stunde', 'einer Stunde'], 8298 d: ['ein Tag', 'einem Tag'], 8299 dd: [number + ' Tage', number + ' Tagen'], 8300 w: ['eine Woche', 'einer Woche'], 8301 M: ['ein Monat', 'einem Monat'], 8302 MM: [number + ' Monate', number + ' Monaten'], 8303 y: ['ein Jahr', 'einem Jahr'], 8304 yy: [number + ' Jahre', number + ' Jahren'], 8305 }; 8306 return withoutSuffix ? format[key][0] : format[key][1]; 8307 } 8308 8309 hooks.defineLocale('de', { 8310 months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( 8311 '_' 8312 ), 8313 monthsShort: 8314 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'), 8315 monthsParseExact: true, 8316 weekdays: 8317 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( 8318 '_' 8319 ), 8320 weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), 8321 weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), 8322 weekdaysParseExact: true, 8323 longDateFormat: { 8324 LT: 'HH:mm', 8325 LTS: 'HH:mm:ss', 8326 L: 'DD.MM.YYYY', 8327 LL: 'D. MMMM YYYY', 8328 LLL: 'D. MMMM YYYY HH:mm', 8329 LLLL: 'dddd, D. MMMM YYYY HH:mm', 8330 }, 8331 calendar: { 8332 sameDay: '[heute um] LT [Uhr]', 8333 sameElse: 'L', 8334 nextDay: '[morgen um] LT [Uhr]', 8335 nextWeek: 'dddd [um] LT [Uhr]', 8336 lastDay: '[gestern um] LT [Uhr]', 8337 lastWeek: '[letzten] dddd [um] LT [Uhr]', 8338 }, 8339 relativeTime: { 8340 future: 'in %s', 8341 past: 'vor %s', 8342 s: 'ein paar Sekunden', 8343 ss: '%d Sekunden', 8344 m: processRelativeTime$3, 8345 mm: '%d Minuten', 8346 h: processRelativeTime$3, 8347 hh: '%d Stunden', 8348 d: processRelativeTime$3, 8349 dd: processRelativeTime$3, 8350 w: processRelativeTime$3, 8351 ww: '%d Wochen', 8352 M: processRelativeTime$3, 8353 MM: processRelativeTime$3, 8354 y: processRelativeTime$3, 8355 yy: processRelativeTime$3, 8356 }, 8357 dayOfMonthOrdinalParse: /\d{1,2}\./, 8358 ordinal: '%d.', 8359 week: { 8360 dow: 1, // Monday is the first day of the week. 8361 doy: 4, // The week that contains Jan 4th is the first week of the year. 8362 }, 8363 }); 8364 8365 //! moment.js locale configuration 8366 8367 var months$5 = [ 8368 'ޖެނުއަރީ', 8369 'ފެބްރުއަރީ', 8370 'މާރިޗު', 8371 'އޭޕްރީލު', 8372 'މޭ', 8373 'ޖޫން', 8374 'ޖުލައި', 8375 'އޯގަސްޓު', 8376 'ސެޕްޓެމްބަރު', 8377 'އޮކްޓޯބަރު', 8378 'ނޮވެމްބަރު', 8379 'ޑިސެމްބަރު', 8380 ], 8381 weekdays = [ 8382 'އާދިއްތަ', 8383 'ހޯމަ', 8384 'އަންގާރަ', 8385 'ބުދަ', 8386 'ބުރާސްފަތި', 8387 'ހުކުރު', 8388 'ހޮނިހިރު', 8389 ]; 8390 8391 hooks.defineLocale('dv', { 8392 months: months$5, 8393 monthsShort: months$5, 8394 weekdays: weekdays, 8395 weekdaysShort: weekdays, 8396 weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'), 8397 longDateFormat: { 8398 LT: 'HH:mm', 8399 LTS: 'HH:mm:ss', 8400 L: 'D/M/YYYY', 8401 LL: 'D MMMM YYYY', 8402 LLL: 'D MMMM YYYY HH:mm', 8403 LLLL: 'dddd D MMMM YYYY HH:mm', 8404 }, 8405 meridiemParse: /މކ|މފ/, 8406 isPM: function (input) { 8407 return 'މފ' === input; 8408 }, 8409 meridiem: function (hour, minute, isLower) { 8410 if (hour < 12) { 8411 return 'މކ'; 8412 } else { 8413 return 'މފ'; 8414 } 8415 }, 8416 calendar: { 8417 sameDay: '[މިއަދު] LT', 8418 nextDay: '[މާދަމާ] LT', 8419 nextWeek: 'dddd LT', 8420 lastDay: '[އިއްޔެ] LT', 8421 lastWeek: '[ފާއިތުވި] dddd LT', 8422 sameElse: 'L', 8423 }, 8424 relativeTime: { 8425 future: 'ތެރޭގައި %s', 8426 past: 'ކުރިން %s', 8427 s: 'ސިކުންތުކޮޅެއް', 8428 ss: 'd% ސިކުންތު', 8429 m: 'މިނިޓެއް', 8430 mm: 'މިނިޓު %d', 8431 h: 'ގަޑިއިރެއް', 8432 hh: 'ގަޑިއިރު %d', 8433 d: 'ދުވަހެއް', 8434 dd: 'ދުވަސް %d', 8435 M: 'މަހެއް', 8436 MM: 'މަސް %d', 8437 y: 'އަހަރެއް', 8438 yy: 'އަހަރު %d', 8439 }, 8440 preparse: function (string) { 8441 return string.replace(/،/g, ','); 8442 }, 8443 postformat: function (string) { 8444 return string.replace(/,/g, '،'); 8445 }, 8446 week: { 8447 dow: 7, // Sunday is the first day of the week. 8448 doy: 12, // The week that contains Jan 12th is the first week of the year. 8449 }, 8450 }); 8451 8452 //! moment.js locale configuration 8453 8454 function isFunction$1(input) { 8455 return ( 8456 (typeof Function !== 'undefined' && input instanceof Function) || 8457 Object.prototype.toString.call(input) === '[object Function]' 8458 ); 8459 } 8460 8461 hooks.defineLocale('el', { 8462 monthsNominativeEl: 8463 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split( 8464 '_' 8465 ), 8466 monthsGenitiveEl: 8467 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split( 8468 '_' 8469 ), 8470 months: function (momentToFormat, format) { 8471 if (!momentToFormat) { 8472 return this._monthsNominativeEl; 8473 } else if ( 8474 typeof format === 'string' && 8475 /D/.test(format.substring(0, format.indexOf('MMMM'))) 8476 ) { 8477 // if there is a day number before 'MMMM' 8478 return this._monthsGenitiveEl[momentToFormat.month()]; 8479 } else { 8480 return this._monthsNominativeEl[momentToFormat.month()]; 8481 } 8482 }, 8483 monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), 8484 weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split( 8485 '_' 8486 ), 8487 weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), 8488 weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), 8489 meridiem: function (hours, minutes, isLower) { 8490 if (hours > 11) { 8491 return isLower ? 'μμ' : 'ΜΜ'; 8492 } else { 8493 return isLower ? 'πμ' : 'ΠΜ'; 8494 } 8495 }, 8496 isPM: function (input) { 8497 return (input + '').toLowerCase()[0] === 'μ'; 8498 }, 8499 meridiemParse: /[ΠΜ]\.?Μ?\.?/i, 8500 longDateFormat: { 8501 LT: 'h:mm A', 8502 LTS: 'h:mm:ss A', 8503 L: 'DD/MM/YYYY', 8504 LL: 'D MMMM YYYY', 8505 LLL: 'D MMMM YYYY h:mm A', 8506 LLLL: 'dddd, D MMMM YYYY h:mm A', 8507 }, 8508 calendarEl: { 8509 sameDay: '[Σήμερα {}] LT', 8510 nextDay: '[Αύριο {}] LT', 8511 nextWeek: 'dddd [{}] LT', 8512 lastDay: '[Χθες {}] LT', 8513 lastWeek: function () { 8514 switch (this.day()) { 8515 case 6: 8516 return '[το προηγούμενο] dddd [{}] LT'; 8517 default: 8518 return '[την προηγούμενη] dddd [{}] LT'; 8519 } 8520 }, 8521 sameElse: 'L', 8522 }, 8523 calendar: function (key, mom) { 8524 var output = this._calendarEl[key], 8525 hours = mom && mom.hours(); 8526 if (isFunction$1(output)) { 8527 output = output.apply(mom); 8528 } 8529 return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις'); 8530 }, 8531 relativeTime: { 8532 future: 'σε %s', 8533 past: '%s πριν', 8534 s: 'λίγα δευτερόλεπτα', 8535 ss: '%d δευτερόλεπτα', 8536 m: 'ένα λεπτό', 8537 mm: '%d λεπτά', 8538 h: 'μία ώρα', 8539 hh: '%d ώρες', 8540 d: 'μία μέρα', 8541 dd: '%d μέρες', 8542 M: 'ένας μήνας', 8543 MM: '%d μήνες', 8544 y: 'ένας χρόνος', 8545 yy: '%d χρόνια', 8546 }, 8547 dayOfMonthOrdinalParse: /\d{1,2}η/, 8548 ordinal: '%dη', 8549 week: { 8550 dow: 1, // Monday is the first day of the week. 8551 doy: 4, // The week that contains Jan 4st is the first week of the year. 8552 }, 8553 }); 8554 8555 //! moment.js locale configuration 8556 8557 hooks.defineLocale('en-au', { 8558 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( 8559 '_' 8560 ), 8561 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), 8562 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( 8563 '_' 8564 ), 8565 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), 8566 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), 8567 longDateFormat: { 8568 LT: 'h:mm A', 8569 LTS: 'h:mm:ss A', 8570 L: 'DD/MM/YYYY', 8571 LL: 'D MMMM YYYY', 8572 LLL: 'D MMMM YYYY h:mm A', 8573 LLLL: 'dddd, D MMMM YYYY h:mm A', 8574 }, 8575 calendar: { 8576 sameDay: '[Today at] LT', 8577 nextDay: '[Tomorrow at] LT', 8578 nextWeek: 'dddd [at] LT', 8579 lastDay: '[Yesterday at] LT', 8580 lastWeek: '[Last] dddd [at] LT', 8581 sameElse: 'L', 8582 }, 8583 relativeTime: { 8584 future: 'in %s', 8585 past: '%s ago', 8586 s: 'a few seconds', 8587 ss: '%d seconds', 8588 m: 'a minute', 8589 mm: '%d minutes', 8590 h: 'an hour', 8591 hh: '%d hours', 8592 d: 'a day', 8593 dd: '%d days', 8594 M: 'a month', 8595 MM: '%d months', 8596 y: 'a year', 8597 yy: '%d years', 8598 }, 8599 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, 8600 ordinal: function (number) { 8601 var b = number % 10, 8602 output = 8603 ~~((number % 100) / 10) === 1 8604 ? 'th' 8605 : b === 1 8606 ? 'st' 8607 : b === 2 8608 ? 'nd' 8609 : b === 3 8610 ? 'rd' 8611 : 'th'; 8612 return number + output; 8613 }, 8614 week: { 8615 dow: 0, // Sunday is the first day of the week. 8616 doy: 4, // The week that contains Jan 4th is the first week of the year. 8617 }, 8618 }); 8619 8620 //! moment.js locale configuration 8621 8622 hooks.defineLocale('en-ca', { 8623 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( 8624 '_' 8625 ), 8626 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), 8627 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( 8628 '_' 8629 ), 8630 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), 8631 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), 8632 longDateFormat: { 8633 LT: 'h:mm A', 8634 LTS: 'h:mm:ss A', 8635 L: 'YYYY-MM-DD', 8636 LL: 'MMMM D, YYYY', 8637 LLL: 'MMMM D, YYYY h:mm A', 8638 LLLL: 'dddd, MMMM D, YYYY h:mm A', 8639 }, 8640 calendar: { 8641 sameDay: '[Today at] LT', 8642 nextDay: '[Tomorrow at] LT', 8643 nextWeek: 'dddd [at] LT', 8644 lastDay: '[Yesterday at] LT', 8645 lastWeek: '[Last] dddd [at] LT', 8646 sameElse: 'L', 8647 }, 8648 relativeTime: { 8649 future: 'in %s', 8650 past: '%s ago', 8651 s: 'a few seconds', 8652 ss: '%d seconds', 8653 m: 'a minute', 8654 mm: '%d minutes', 8655 h: 'an hour', 8656 hh: '%d hours', 8657 d: 'a day', 8658 dd: '%d days', 8659 M: 'a month', 8660 MM: '%d months', 8661 y: 'a year', 8662 yy: '%d years', 8663 }, 8664 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, 8665 ordinal: function (number) { 8666 var b = number % 10, 8667 output = 8668 ~~((number % 100) / 10) === 1 8669 ? 'th' 8670 : b === 1 8671 ? 'st' 8672 : b === 2 8673 ? 'nd' 8674 : b === 3 8675 ? 'rd' 8676 : 'th'; 8677 return number + output; 8678 }, 8679 }); 8680 8681 //! moment.js locale configuration 8682 8683 hooks.defineLocale('en-gb', { 8684 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( 8685 '_' 8686 ), 8687 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), 8688 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( 8689 '_' 8690 ), 8691 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), 8692 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), 8693 longDateFormat: { 8694 LT: 'HH:mm', 8695 LTS: 'HH:mm:ss', 8696 L: 'DD/MM/YYYY', 8697 LL: 'D MMMM YYYY', 8698 LLL: 'D MMMM YYYY HH:mm', 8699 LLLL: 'dddd, D MMMM YYYY HH:mm', 8700 }, 8701 calendar: { 8702 sameDay: '[Today at] LT', 8703 nextDay: '[Tomorrow at] LT', 8704 nextWeek: 'dddd [at] LT', 8705 lastDay: '[Yesterday at] LT', 8706 lastWeek: '[Last] dddd [at] LT', 8707 sameElse: 'L', 8708 }, 8709 relativeTime: { 8710 future: 'in %s', 8711 past: '%s ago', 8712 s: 'a few seconds', 8713 ss: '%d seconds', 8714 m: 'a minute', 8715 mm: '%d minutes', 8716 h: 'an hour', 8717 hh: '%d hours', 8718 d: 'a day', 8719 dd: '%d days', 8720 M: 'a month', 8721 MM: '%d months', 8722 y: 'a year', 8723 yy: '%d years', 8724 }, 8725 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, 8726 ordinal: function (number) { 8727 var b = number % 10, 8728 output = 8729 ~~((number % 100) / 10) === 1 8730 ? 'th' 8731 : b === 1 8732 ? 'st' 8733 : b === 2 8734 ? 'nd' 8735 : b === 3 8736 ? 'rd' 8737 : 'th'; 8738 return number + output; 8739 }, 8740 week: { 8741 dow: 1, // Monday is the first day of the week. 8742 doy: 4, // The week that contains Jan 4th is the first week of the year. 8743 }, 8744 }); 8745 8746 //! moment.js locale configuration 8747 8748 hooks.defineLocale('en-ie', { 8749 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( 8750 '_' 8751 ), 8752 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), 8753 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( 8754 '_' 8755 ), 8756 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), 8757 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), 8758 longDateFormat: { 8759 LT: 'HH:mm', 8760 LTS: 'HH:mm:ss', 8761 L: 'DD/MM/YYYY', 8762 LL: 'D MMMM YYYY', 8763 LLL: 'D MMMM YYYY HH:mm', 8764 LLLL: 'dddd D MMMM YYYY HH:mm', 8765 }, 8766 calendar: { 8767 sameDay: '[Today at] LT', 8768 nextDay: '[Tomorrow at] LT', 8769 nextWeek: 'dddd [at] LT', 8770 lastDay: '[Yesterday at] LT', 8771 lastWeek: '[Last] dddd [at] LT', 8772 sameElse: 'L', 8773 }, 8774 relativeTime: { 8775 future: 'in %s', 8776 past: '%s ago', 8777 s: 'a few seconds', 8778 ss: '%d seconds', 8779 m: 'a minute', 8780 mm: '%d minutes', 8781 h: 'an hour', 8782 hh: '%d hours', 8783 d: 'a day', 8784 dd: '%d days', 8785 M: 'a month', 8786 MM: '%d months', 8787 y: 'a year', 8788 yy: '%d years', 8789 }, 8790 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, 8791 ordinal: function (number) { 8792 var b = number % 10, 8793 output = 8794 ~~((number % 100) / 10) === 1 8795 ? 'th' 8796 : b === 1 8797 ? 'st' 8798 : b === 2 8799 ? 'nd' 8800 : b === 3 8801 ? 'rd' 8802 : 'th'; 8803 return number + output; 8804 }, 8805 week: { 8806 dow: 1, // Monday is the first day of the week. 8807 doy: 4, // The week that contains Jan 4th is the first week of the year. 8808 }, 8809 }); 8810 8811 //! moment.js locale configuration 8812 8813 hooks.defineLocale('en-il', { 8814 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( 8815 '_' 8816 ), 8817 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), 8818 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( 8819 '_' 8820 ), 8821 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), 8822 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), 8823 longDateFormat: { 8824 LT: 'HH:mm', 8825 LTS: 'HH:mm:ss', 8826 L: 'DD/MM/YYYY', 8827 LL: 'D MMMM YYYY', 8828 LLL: 'D MMMM YYYY HH:mm', 8829 LLLL: 'dddd, D MMMM YYYY HH:mm', 8830 }, 8831 calendar: { 8832 sameDay: '[Today at] LT', 8833 nextDay: '[Tomorrow at] LT', 8834 nextWeek: 'dddd [at] LT', 8835 lastDay: '[Yesterday at] LT', 8836 lastWeek: '[Last] dddd [at] LT', 8837 sameElse: 'L', 8838 }, 8839 relativeTime: { 8840 future: 'in %s', 8841 past: '%s ago', 8842 s: 'a few seconds', 8843 ss: '%d seconds', 8844 m: 'a minute', 8845 mm: '%d minutes', 8846 h: 'an hour', 8847 hh: '%d hours', 8848 d: 'a day', 8849 dd: '%d days', 8850 M: 'a month', 8851 MM: '%d months', 8852 y: 'a year', 8853 yy: '%d years', 8854 }, 8855 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, 8856 ordinal: function (number) { 8857 var b = number % 10, 8858 output = 8859 ~~((number % 100) / 10) === 1 8860 ? 'th' 8861 : b === 1 8862 ? 'st' 8863 : b === 2 8864 ? 'nd' 8865 : b === 3 8866 ? 'rd' 8867 : 'th'; 8868 return number + output; 8869 }, 8870 }); 8871 8872 //! moment.js locale configuration 8873 8874 hooks.defineLocale('en-in', { 8875 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( 8876 '_' 8877 ), 8878 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), 8879 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( 8880 '_' 8881 ), 8882 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), 8883 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), 8884 longDateFormat: { 8885 LT: 'h:mm A', 8886 LTS: 'h:mm:ss A', 8887 L: 'DD/MM/YYYY', 8888 LL: 'D MMMM YYYY', 8889 LLL: 'D MMMM YYYY h:mm A', 8890 LLLL: 'dddd, D MMMM YYYY h:mm A', 8891 }, 8892 calendar: { 8893 sameDay: '[Today at] LT', 8894 nextDay: '[Tomorrow at] LT', 8895 nextWeek: 'dddd [at] LT', 8896 lastDay: '[Yesterday at] LT', 8897 lastWeek: '[Last] dddd [at] LT', 8898 sameElse: 'L', 8899 }, 8900 relativeTime: { 8901 future: 'in %s', 8902 past: '%s ago', 8903 s: 'a few seconds', 8904 ss: '%d seconds', 8905 m: 'a minute', 8906 mm: '%d minutes', 8907 h: 'an hour', 8908 hh: '%d hours', 8909 d: 'a day', 8910 dd: '%d days', 8911 M: 'a month', 8912 MM: '%d months', 8913 y: 'a year', 8914 yy: '%d years', 8915 }, 8916 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, 8917 ordinal: function (number) { 8918 var b = number % 10, 8919 output = 8920 ~~((number % 100) / 10) === 1 8921 ? 'th' 8922 : b === 1 8923 ? 'st' 8924 : b === 2 8925 ? 'nd' 8926 : b === 3 8927 ? 'rd' 8928 : 'th'; 8929 return number + output; 8930 }, 8931 week: { 8932 dow: 0, // Sunday is the first day of the week. 8933 doy: 6, // The week that contains Jan 1st is the first week of the year. 8934 }, 8935 }); 8936 8937 //! moment.js locale configuration 8938 8939 hooks.defineLocale('en-nz', { 8940 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( 8941 '_' 8942 ), 8943 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), 8944 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( 8945 '_' 8946 ), 8947 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), 8948 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), 8949 longDateFormat: { 8950 LT: 'h:mm A', 8951 LTS: 'h:mm:ss A', 8952 L: 'DD/MM/YYYY', 8953 LL: 'D MMMM YYYY', 8954 LLL: 'D MMMM YYYY h:mm A', 8955 LLLL: 'dddd, D MMMM YYYY h:mm A', 8956 }, 8957 calendar: { 8958 sameDay: '[Today at] LT', 8959 nextDay: '[Tomorrow at] LT', 8960 nextWeek: 'dddd [at] LT', 8961 lastDay: '[Yesterday at] LT', 8962 lastWeek: '[Last] dddd [at] LT', 8963 sameElse: 'L', 8964 }, 8965 relativeTime: { 8966 future: 'in %s', 8967 past: '%s ago', 8968 s: 'a few seconds', 8969 ss: '%d seconds', 8970 m: 'a minute', 8971 mm: '%d minutes', 8972 h: 'an hour', 8973 hh: '%d hours', 8974 d: 'a day', 8975 dd: '%d days', 8976 M: 'a month', 8977 MM: '%d months', 8978 y: 'a year', 8979 yy: '%d years', 8980 }, 8981 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, 8982 ordinal: function (number) { 8983 var b = number % 10, 8984 output = 8985 ~~((number % 100) / 10) === 1 8986 ? 'th' 8987 : b === 1 8988 ? 'st' 8989 : b === 2 8990 ? 'nd' 8991 : b === 3 8992 ? 'rd' 8993 : 'th'; 8994 return number + output; 8995 }, 8996 week: { 8997 dow: 1, // Monday is the first day of the week. 8998 doy: 4, // The week that contains Jan 4th is the first week of the year. 8999 }, 9000 }); 9001 9002 //! moment.js locale configuration 9003 9004 hooks.defineLocale('en-sg', { 9005 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( 9006 '_' 9007 ), 9008 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), 9009 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( 9010 '_' 9011 ), 9012 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), 9013 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), 9014 longDateFormat: { 9015 LT: 'HH:mm', 9016 LTS: 'HH:mm:ss', 9017 L: 'DD/MM/YYYY', 9018 LL: 'D MMMM YYYY', 9019 LLL: 'D MMMM YYYY HH:mm', 9020 LLLL: 'dddd, D MMMM YYYY HH:mm', 9021 }, 9022 calendar: { 9023 sameDay: '[Today at] LT', 9024 nextDay: '[Tomorrow at] LT', 9025 nextWeek: 'dddd [at] LT', 9026 lastDay: '[Yesterday at] LT', 9027 lastWeek: '[Last] dddd [at] LT', 9028 sameElse: 'L', 9029 }, 9030 relativeTime: { 9031 future: 'in %s', 9032 past: '%s ago', 9033 s: 'a few seconds', 9034 ss: '%d seconds', 9035 m: 'a minute', 9036 mm: '%d minutes', 9037 h: 'an hour', 9038 hh: '%d hours', 9039 d: 'a day', 9040 dd: '%d days', 9041 M: 'a month', 9042 MM: '%d months', 9043 y: 'a year', 9044 yy: '%d years', 9045 }, 9046 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, 9047 ordinal: function (number) { 9048 var b = number % 10, 9049 output = 9050 ~~((number % 100) / 10) === 1 9051 ? 'th' 9052 : b === 1 9053 ? 'st' 9054 : b === 2 9055 ? 'nd' 9056 : b === 3 9057 ? 'rd' 9058 : 'th'; 9059 return number + output; 9060 }, 9061 week: { 9062 dow: 1, // Monday is the first day of the week. 9063 doy: 4, // The week that contains Jan 4th is the first week of the year. 9064 }, 9065 }); 9066 9067 //! moment.js locale configuration 9068 9069 hooks.defineLocale('eo', { 9070 months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split( 9071 '_' 9072 ), 9073 monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'), 9074 weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'), 9075 weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'), 9076 weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'), 9077 longDateFormat: { 9078 LT: 'HH:mm', 9079 LTS: 'HH:mm:ss', 9080 L: 'YYYY-MM-DD', 9081 LL: '[la] D[-an de] MMMM, YYYY', 9082 LLL: '[la] D[-an de] MMMM, YYYY HH:mm', 9083 LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm', 9084 llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm', 9085 }, 9086 meridiemParse: /[ap]\.t\.m/i, 9087 isPM: function (input) { 9088 return input.charAt(0).toLowerCase() === 'p'; 9089 }, 9090 meridiem: function (hours, minutes, isLower) { 9091 if (hours > 11) { 9092 return isLower ? 'p.t.m.' : 'P.T.M.'; 9093 } else { 9094 return isLower ? 'a.t.m.' : 'A.T.M.'; 9095 } 9096 }, 9097 calendar: { 9098 sameDay: '[Hodiaŭ je] LT', 9099 nextDay: '[Morgaŭ je] LT', 9100 nextWeek: 'dddd[n je] LT', 9101 lastDay: '[Hieraŭ je] LT', 9102 lastWeek: '[pasintan] dddd[n je] LT', 9103 sameElse: 'L', 9104 }, 9105 relativeTime: { 9106 future: 'post %s', 9107 past: 'antaŭ %s', 9108 s: 'kelkaj sekundoj', 9109 ss: '%d sekundoj', 9110 m: 'unu minuto', 9111 mm: '%d minutoj', 9112 h: 'unu horo', 9113 hh: '%d horoj', 9114 d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo 9115 dd: '%d tagoj', 9116 M: 'unu monato', 9117 MM: '%d monatoj', 9118 y: 'unu jaro', 9119 yy: '%d jaroj', 9120 }, 9121 dayOfMonthOrdinalParse: /\d{1,2}a/, 9122 ordinal: '%da', 9123 week: { 9124 dow: 1, // Monday is the first day of the week. 9125 doy: 7, // The week that contains Jan 7th is the first week of the year. 9126 }, 9127 }); 9128 9129 //! moment.js locale configuration 9130 9131 var monthsShortDot = 9132 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( 9133 '_' 9134 ), 9135 monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), 9136 monthsParse$2 = [ 9137 /^ene/i, 9138 /^feb/i, 9139 /^mar/i, 9140 /^abr/i, 9141 /^may/i, 9142 /^jun/i, 9143 /^jul/i, 9144 /^ago/i, 9145 /^sep/i, 9146 /^oct/i, 9147 /^nov/i, 9148 /^dic/i, 9149 ], 9150 monthsRegex$3 = 9151 /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; 9152 9153 hooks.defineLocale('es-do', { 9154 months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( 9155 '_' 9156 ), 9157 monthsShort: function (m, format) { 9158 if (!m) { 9159 return monthsShortDot; 9160 } else if (/-MMM-/.test(format)) { 9161 return monthsShort$1[m.month()]; 9162 } else { 9163 return monthsShortDot[m.month()]; 9164 } 9165 }, 9166 monthsRegex: monthsRegex$3, 9167 monthsShortRegex: monthsRegex$3, 9168 monthsStrictRegex: 9169 /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, 9170 monthsShortStrictRegex: 9171 /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, 9172 monthsParse: monthsParse$2, 9173 longMonthsParse: monthsParse$2, 9174 shortMonthsParse: monthsParse$2, 9175 weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), 9176 weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), 9177 weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), 9178 weekdaysParseExact: true, 9179 longDateFormat: { 9180 LT: 'h:mm A', 9181 LTS: 'h:mm:ss A', 9182 L: 'DD/MM/YYYY', 9183 LL: 'D [de] MMMM [de] YYYY', 9184 LLL: 'D [de] MMMM [de] YYYY h:mm A', 9185 LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A', 9186 }, 9187 calendar: { 9188 sameDay: function () { 9189 return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 9190 }, 9191 nextDay: function () { 9192 return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 9193 }, 9194 nextWeek: function () { 9195 return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 9196 }, 9197 lastDay: function () { 9198 return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 9199 }, 9200 lastWeek: function () { 9201 return ( 9202 '[el] dddd [pasado a la' + 9203 (this.hours() !== 1 ? 's' : '') + 9204 '] LT' 9205 ); 9206 }, 9207 sameElse: 'L', 9208 }, 9209 relativeTime: { 9210 future: 'en %s', 9211 past: 'hace %s', 9212 s: 'unos segundos', 9213 ss: '%d segundos', 9214 m: 'un minuto', 9215 mm: '%d minutos', 9216 h: 'una hora', 9217 hh: '%d horas', 9218 d: 'un día', 9219 dd: '%d días', 9220 w: 'una semana', 9221 ww: '%d semanas', 9222 M: 'un mes', 9223 MM: '%d meses', 9224 y: 'un año', 9225 yy: '%d años', 9226 }, 9227 dayOfMonthOrdinalParse: /\d{1,2}º/, 9228 ordinal: '%dº', 9229 week: { 9230 dow: 1, // Monday is the first day of the week. 9231 doy: 4, // The week that contains Jan 4th is the first week of the year. 9232 }, 9233 }); 9234 9235 //! moment.js locale configuration 9236 9237 var monthsShortDot$1 = 9238 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( 9239 '_' 9240 ), 9241 monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), 9242 monthsParse$3 = [ 9243 /^ene/i, 9244 /^feb/i, 9245 /^mar/i, 9246 /^abr/i, 9247 /^may/i, 9248 /^jun/i, 9249 /^jul/i, 9250 /^ago/i, 9251 /^sep/i, 9252 /^oct/i, 9253 /^nov/i, 9254 /^dic/i, 9255 ], 9256 monthsRegex$4 = 9257 /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; 9258 9259 hooks.defineLocale('es-mx', { 9260 months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( 9261 '_' 9262 ), 9263 monthsShort: function (m, format) { 9264 if (!m) { 9265 return monthsShortDot$1; 9266 } else if (/-MMM-/.test(format)) { 9267 return monthsShort$2[m.month()]; 9268 } else { 9269 return monthsShortDot$1[m.month()]; 9270 } 9271 }, 9272 monthsRegex: monthsRegex$4, 9273 monthsShortRegex: monthsRegex$4, 9274 monthsStrictRegex: 9275 /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, 9276 monthsShortStrictRegex: 9277 /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, 9278 monthsParse: monthsParse$3, 9279 longMonthsParse: monthsParse$3, 9280 shortMonthsParse: monthsParse$3, 9281 weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), 9282 weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), 9283 weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), 9284 weekdaysParseExact: true, 9285 longDateFormat: { 9286 LT: 'H:mm', 9287 LTS: 'H:mm:ss', 9288 L: 'DD/MM/YYYY', 9289 LL: 'D [de] MMMM [de] YYYY', 9290 LLL: 'D [de] MMMM [de] YYYY H:mm', 9291 LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', 9292 }, 9293 calendar: { 9294 sameDay: function () { 9295 return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 9296 }, 9297 nextDay: function () { 9298 return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 9299 }, 9300 nextWeek: function () { 9301 return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 9302 }, 9303 lastDay: function () { 9304 return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 9305 }, 9306 lastWeek: function () { 9307 return ( 9308 '[el] dddd [pasado a la' + 9309 (this.hours() !== 1 ? 's' : '') + 9310 '] LT' 9311 ); 9312 }, 9313 sameElse: 'L', 9314 }, 9315 relativeTime: { 9316 future: 'en %s', 9317 past: 'hace %s', 9318 s: 'unos segundos', 9319 ss: '%d segundos', 9320 m: 'un minuto', 9321 mm: '%d minutos', 9322 h: 'una hora', 9323 hh: '%d horas', 9324 d: 'un día', 9325 dd: '%d días', 9326 w: 'una semana', 9327 ww: '%d semanas', 9328 M: 'un mes', 9329 MM: '%d meses', 9330 y: 'un año', 9331 yy: '%d años', 9332 }, 9333 dayOfMonthOrdinalParse: /\d{1,2}º/, 9334 ordinal: '%dº', 9335 week: { 9336 dow: 0, // Sunday is the first day of the week. 9337 doy: 4, // The week that contains Jan 4th is the first week of the year. 9338 }, 9339 invalidDate: 'Fecha inválida', 9340 }); 9341 9342 //! moment.js locale configuration 9343 9344 var monthsShortDot$2 = 9345 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( 9346 '_' 9347 ), 9348 monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), 9349 monthsParse$4 = [ 9350 /^ene/i, 9351 /^feb/i, 9352 /^mar/i, 9353 /^abr/i, 9354 /^may/i, 9355 /^jun/i, 9356 /^jul/i, 9357 /^ago/i, 9358 /^sep/i, 9359 /^oct/i, 9360 /^nov/i, 9361 /^dic/i, 9362 ], 9363 monthsRegex$5 = 9364 /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; 9365 9366 hooks.defineLocale('es-us', { 9367 months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( 9368 '_' 9369 ), 9370 monthsShort: function (m, format) { 9371 if (!m) { 9372 return monthsShortDot$2; 9373 } else if (/-MMM-/.test(format)) { 9374 return monthsShort$3[m.month()]; 9375 } else { 9376 return monthsShortDot$2[m.month()]; 9377 } 9378 }, 9379 monthsRegex: monthsRegex$5, 9380 monthsShortRegex: monthsRegex$5, 9381 monthsStrictRegex: 9382 /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, 9383 monthsShortStrictRegex: 9384 /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, 9385 monthsParse: monthsParse$4, 9386 longMonthsParse: monthsParse$4, 9387 shortMonthsParse: monthsParse$4, 9388 weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), 9389 weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), 9390 weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), 9391 weekdaysParseExact: true, 9392 longDateFormat: { 9393 LT: 'h:mm A', 9394 LTS: 'h:mm:ss A', 9395 L: 'MM/DD/YYYY', 9396 LL: 'D [de] MMMM [de] YYYY', 9397 LLL: 'D [de] MMMM [de] YYYY h:mm A', 9398 LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A', 9399 }, 9400 calendar: { 9401 sameDay: function () { 9402 return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 9403 }, 9404 nextDay: function () { 9405 return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 9406 }, 9407 nextWeek: function () { 9408 return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 9409 }, 9410 lastDay: function () { 9411 return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 9412 }, 9413 lastWeek: function () { 9414 return ( 9415 '[el] dddd [pasado a la' + 9416 (this.hours() !== 1 ? 's' : '') + 9417 '] LT' 9418 ); 9419 }, 9420 sameElse: 'L', 9421 }, 9422 relativeTime: { 9423 future: 'en %s', 9424 past: 'hace %s', 9425 s: 'unos segundos', 9426 ss: '%d segundos', 9427 m: 'un minuto', 9428 mm: '%d minutos', 9429 h: 'una hora', 9430 hh: '%d horas', 9431 d: 'un día', 9432 dd: '%d días', 9433 w: 'una semana', 9434 ww: '%d semanas', 9435 M: 'un mes', 9436 MM: '%d meses', 9437 y: 'un año', 9438 yy: '%d años', 9439 }, 9440 dayOfMonthOrdinalParse: /\d{1,2}º/, 9441 ordinal: '%dº', 9442 week: { 9443 dow: 0, // Sunday is the first day of the week. 9444 doy: 6, // The week that contains Jan 6th is the first week of the year. 9445 }, 9446 }); 9447 9448 //! moment.js locale configuration 9449 9450 var monthsShortDot$3 = 9451 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( 9452 '_' 9453 ), 9454 monthsShort$4 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), 9455 monthsParse$5 = [ 9456 /^ene/i, 9457 /^feb/i, 9458 /^mar/i, 9459 /^abr/i, 9460 /^may/i, 9461 /^jun/i, 9462 /^jul/i, 9463 /^ago/i, 9464 /^sep/i, 9465 /^oct/i, 9466 /^nov/i, 9467 /^dic/i, 9468 ], 9469 monthsRegex$6 = 9470 /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; 9471 9472 hooks.defineLocale('es', { 9473 months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( 9474 '_' 9475 ), 9476 monthsShort: function (m, format) { 9477 if (!m) { 9478 return monthsShortDot$3; 9479 } else if (/-MMM-/.test(format)) { 9480 return monthsShort$4[m.month()]; 9481 } else { 9482 return monthsShortDot$3[m.month()]; 9483 } 9484 }, 9485 monthsRegex: monthsRegex$6, 9486 monthsShortRegex: monthsRegex$6, 9487 monthsStrictRegex: 9488 /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, 9489 monthsShortStrictRegex: 9490 /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, 9491 monthsParse: monthsParse$5, 9492 longMonthsParse: monthsParse$5, 9493 shortMonthsParse: monthsParse$5, 9494 weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), 9495 weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), 9496 weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), 9497 weekdaysParseExact: true, 9498 longDateFormat: { 9499 LT: 'H:mm', 9500 LTS: 'H:mm:ss', 9501 L: 'DD/MM/YYYY', 9502 LL: 'D [de] MMMM [de] YYYY', 9503 LLL: 'D [de] MMMM [de] YYYY H:mm', 9504 LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', 9505 }, 9506 calendar: { 9507 sameDay: function () { 9508 return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 9509 }, 9510 nextDay: function () { 9511 return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 9512 }, 9513 nextWeek: function () { 9514 return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 9515 }, 9516 lastDay: function () { 9517 return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 9518 }, 9519 lastWeek: function () { 9520 return ( 9521 '[el] dddd [pasado a la' + 9522 (this.hours() !== 1 ? 's' : '') + 9523 '] LT' 9524 ); 9525 }, 9526 sameElse: 'L', 9527 }, 9528 relativeTime: { 9529 future: 'en %s', 9530 past: 'hace %s', 9531 s: 'unos segundos', 9532 ss: '%d segundos', 9533 m: 'un minuto', 9534 mm: '%d minutos', 9535 h: 'una hora', 9536 hh: '%d horas', 9537 d: 'un día', 9538 dd: '%d días', 9539 w: 'una semana', 9540 ww: '%d semanas', 9541 M: 'un mes', 9542 MM: '%d meses', 9543 y: 'un año', 9544 yy: '%d años', 9545 }, 9546 dayOfMonthOrdinalParse: /\d{1,2}º/, 9547 ordinal: '%dº', 9548 week: { 9549 dow: 1, // Monday is the first day of the week. 9550 doy: 4, // The week that contains Jan 4th is the first week of the year. 9551 }, 9552 invalidDate: 'Fecha inválida', 9553 }); 9554 9555 //! moment.js locale configuration 9556 9557 function processRelativeTime$4(number, withoutSuffix, key, isFuture) { 9558 var format = { 9559 s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'], 9560 ss: [number + 'sekundi', number + 'sekundit'], 9561 m: ['ühe minuti', 'üks minut'], 9562 mm: [number + ' minuti', number + ' minutit'], 9563 h: ['ühe tunni', 'tund aega', 'üks tund'], 9564 hh: [number + ' tunni', number + ' tundi'], 9565 d: ['ühe päeva', 'üks päev'], 9566 M: ['kuu aja', 'kuu aega', 'üks kuu'], 9567 MM: [number + ' kuu', number + ' kuud'], 9568 y: ['ühe aasta', 'aasta', 'üks aasta'], 9569 yy: [number + ' aasta', number + ' aastat'], 9570 }; 9571 if (withoutSuffix) { 9572 return format[key][2] ? format[key][2] : format[key][1]; 9573 } 9574 return isFuture ? format[key][0] : format[key][1]; 9575 } 9576 9577 hooks.defineLocale('et', { 9578 months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split( 9579 '_' 9580 ), 9581 monthsShort: 9582 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), 9583 weekdays: 9584 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split( 9585 '_' 9586 ), 9587 weekdaysShort: 'P_E_T_K_N_R_L'.split('_'), 9588 weekdaysMin: 'P_E_T_K_N_R_L'.split('_'), 9589 longDateFormat: { 9590 LT: 'H:mm', 9591 LTS: 'H:mm:ss', 9592 L: 'DD.MM.YYYY', 9593 LL: 'D. MMMM YYYY', 9594 LLL: 'D. MMMM YYYY H:mm', 9595 LLLL: 'dddd, D. MMMM YYYY H:mm', 9596 }, 9597 calendar: { 9598 sameDay: '[Täna,] LT', 9599 nextDay: '[Homme,] LT', 9600 nextWeek: '[Järgmine] dddd LT', 9601 lastDay: '[Eile,] LT', 9602 lastWeek: '[Eelmine] dddd LT', 9603 sameElse: 'L', 9604 }, 9605 relativeTime: { 9606 future: '%s pärast', 9607 past: '%s tagasi', 9608 s: processRelativeTime$4, 9609 ss: processRelativeTime$4, 9610 m: processRelativeTime$4, 9611 mm: processRelativeTime$4, 9612 h: processRelativeTime$4, 9613 hh: processRelativeTime$4, 9614 d: processRelativeTime$4, 9615 dd: '%d päeva', 9616 M: processRelativeTime$4, 9617 MM: processRelativeTime$4, 9618 y: processRelativeTime$4, 9619 yy: processRelativeTime$4, 9620 }, 9621 dayOfMonthOrdinalParse: /\d{1,2}\./, 9622 ordinal: '%d.', 9623 week: { 9624 dow: 1, // Monday is the first day of the week. 9625 doy: 4, // The week that contains Jan 4th is the first week of the year. 9626 }, 9627 }); 9628 9629 //! moment.js locale configuration 9630 9631 hooks.defineLocale('eu', { 9632 months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split( 9633 '_' 9634 ), 9635 monthsShort: 9636 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split( 9637 '_' 9638 ), 9639 monthsParseExact: true, 9640 weekdays: 9641 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split( 9642 '_' 9643 ), 9644 weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'), 9645 weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'), 9646 weekdaysParseExact: true, 9647 longDateFormat: { 9648 LT: 'HH:mm', 9649 LTS: 'HH:mm:ss', 9650 L: 'YYYY-MM-DD', 9651 LL: 'YYYY[ko] MMMM[ren] D[a]', 9652 LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm', 9653 LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', 9654 l: 'YYYY-M-D', 9655 ll: 'YYYY[ko] MMM D[a]', 9656 lll: 'YYYY[ko] MMM D[a] HH:mm', 9657 llll: 'ddd, YYYY[ko] MMM D[a] HH:mm', 9658 }, 9659 calendar: { 9660 sameDay: '[gaur] LT[etan]', 9661 nextDay: '[bihar] LT[etan]', 9662 nextWeek: 'dddd LT[etan]', 9663 lastDay: '[atzo] LT[etan]', 9664 lastWeek: '[aurreko] dddd LT[etan]', 9665 sameElse: 'L', 9666 }, 9667 relativeTime: { 9668 future: '%s barru', 9669 past: 'duela %s', 9670 s: 'segundo batzuk', 9671 ss: '%d segundo', 9672 m: 'minutu bat', 9673 mm: '%d minutu', 9674 h: 'ordu bat', 9675 hh: '%d ordu', 9676 d: 'egun bat', 9677 dd: '%d egun', 9678 M: 'hilabete bat', 9679 MM: '%d hilabete', 9680 y: 'urte bat', 9681 yy: '%d urte', 9682 }, 9683 dayOfMonthOrdinalParse: /\d{1,2}\./, 9684 ordinal: '%d.', 9685 week: { 9686 dow: 1, // Monday is the first day of the week. 9687 doy: 7, // The week that contains Jan 7th is the first week of the year. 9688 }, 9689 }); 9690 9691 //! moment.js locale configuration 9692 9693 var symbolMap$7 = { 9694 1: '۱', 9695 2: '۲', 9696 3: '۳', 9697 4: '۴', 9698 5: '۵', 9699 6: '۶', 9700 7: '۷', 9701 8: '۸', 9702 9: '۹', 9703 0: '۰', 9704 }, 9705 numberMap$6 = { 9706 '۱': '1', 9707 '۲': '2', 9708 '۳': '3', 9709 '۴': '4', 9710 '۵': '5', 9711 '۶': '6', 9712 '۷': '7', 9713 '۸': '8', 9714 '۹': '9', 9715 '۰': '0', 9716 }; 9717 9718 hooks.defineLocale('fa', { 9719 months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( 9720 '_' 9721 ), 9722 monthsShort: 9723 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split( 9724 '_' 9725 ), 9726 weekdays: 9727 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split( 9728 '_' 9729 ), 9730 weekdaysShort: 9731 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split( 9732 '_' 9733 ), 9734 weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'), 9735 weekdaysParseExact: true, 9736 longDateFormat: { 9737 LT: 'HH:mm', 9738 LTS: 'HH:mm:ss', 9739 L: 'DD/MM/YYYY', 9740 LL: 'D MMMM YYYY', 9741 LLL: 'D MMMM YYYY HH:mm', 9742 LLLL: 'dddd, D MMMM YYYY HH:mm', 9743 }, 9744 meridiemParse: /قبل از ظهر|بعد از ظهر/, 9745 isPM: function (input) { 9746 return /بعد از ظهر/.test(input); 9747 }, 9748 meridiem: function (hour, minute, isLower) { 9749 if (hour < 12) { 9750 return 'قبل از ظهر'; 9751 } else { 9752 return 'بعد از ظهر'; 9753 } 9754 }, 9755 calendar: { 9756 sameDay: '[امروز ساعت] LT', 9757 nextDay: '[فردا ساعت] LT', 9758 nextWeek: 'dddd [ساعت] LT', 9759 lastDay: '[دیروز ساعت] LT', 9760 lastWeek: 'dddd [پیش] [ساعت] LT', 9761 sameElse: 'L', 9762 }, 9763 relativeTime: { 9764 future: 'در %s', 9765 past: '%s پیش', 9766 s: 'چند ثانیه', 9767 ss: '%d ثانیه', 9768 m: 'یک دقیقه', 9769 mm: '%d دقیقه', 9770 h: 'یک ساعت', 9771 hh: '%d ساعت', 9772 d: 'یک روز', 9773 dd: '%d روز', 9774 M: 'یک ماه', 9775 MM: '%d ماه', 9776 y: 'یک سال', 9777 yy: '%d سال', 9778 }, 9779 preparse: function (string) { 9780 return string 9781 .replace(/[۰-۹]/g, function (match) { 9782 return numberMap$6[match]; 9783 }) 9784 .replace(/،/g, ','); 9785 }, 9786 postformat: function (string) { 9787 return string 9788 .replace(/\d/g, function (match) { 9789 return symbolMap$7[match]; 9790 }) 9791 .replace(/,/g, '،'); 9792 }, 9793 dayOfMonthOrdinalParse: /\d{1,2}م/, 9794 ordinal: '%dم', 9795 week: { 9796 dow: 6, // Saturday is the first day of the week. 9797 doy: 12, // The week that contains Jan 12th is the first week of the year. 9798 }, 9799 }); 9800 9801 //! moment.js locale configuration 9802 9803 var numbersPast = 9804 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split( 9805 ' ' 9806 ), 9807 numbersFuture = [ 9808 'nolla', 9809 'yhden', 9810 'kahden', 9811 'kolmen', 9812 'neljän', 9813 'viiden', 9814 'kuuden', 9815 numbersPast[7], 9816 numbersPast[8], 9817 numbersPast[9], 9818 ]; 9819 function translate$2(number, withoutSuffix, key, isFuture) { 9820 var result = ''; 9821 switch (key) { 9822 case 's': 9823 return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; 9824 case 'ss': 9825 result = isFuture ? 'sekunnin' : 'sekuntia'; 9826 break; 9827 case 'm': 9828 return isFuture ? 'minuutin' : 'minuutti'; 9829 case 'mm': 9830 result = isFuture ? 'minuutin' : 'minuuttia'; 9831 break; 9832 case 'h': 9833 return isFuture ? 'tunnin' : 'tunti'; 9834 case 'hh': 9835 result = isFuture ? 'tunnin' : 'tuntia'; 9836 break; 9837 case 'd': 9838 return isFuture ? 'päivän' : 'päivä'; 9839 case 'dd': 9840 result = isFuture ? 'päivän' : 'päivää'; 9841 break; 9842 case 'M': 9843 return isFuture ? 'kuukauden' : 'kuukausi'; 9844 case 'MM': 9845 result = isFuture ? 'kuukauden' : 'kuukautta'; 9846 break; 9847 case 'y': 9848 return isFuture ? 'vuoden' : 'vuosi'; 9849 case 'yy': 9850 result = isFuture ? 'vuoden' : 'vuotta'; 9851 break; 9852 } 9853 result = verbalNumber(number, isFuture) + ' ' + result; 9854 return result; 9855 } 9856 function verbalNumber(number, isFuture) { 9857 return number < 10 9858 ? isFuture 9859 ? numbersFuture[number] 9860 : numbersPast[number] 9861 : number; 9862 } 9863 9864 hooks.defineLocale('fi', { 9865 months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split( 9866 '_' 9867 ), 9868 monthsShort: 9869 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split( 9870 '_' 9871 ), 9872 weekdays: 9873 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split( 9874 '_' 9875 ), 9876 weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'), 9877 weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'), 9878 longDateFormat: { 9879 LT: 'HH.mm', 9880 LTS: 'HH.mm.ss', 9881 L: 'DD.MM.YYYY', 9882 LL: 'Do MMMM[ta] YYYY', 9883 LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm', 9884 LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', 9885 l: 'D.M.YYYY', 9886 ll: 'Do MMM YYYY', 9887 lll: 'Do MMM YYYY, [klo] HH.mm', 9888 llll: 'ddd, Do MMM YYYY, [klo] HH.mm', 9889 }, 9890 calendar: { 9891 sameDay: '[tänään] [klo] LT', 9892 nextDay: '[huomenna] [klo] LT', 9893 nextWeek: 'dddd [klo] LT', 9894 lastDay: '[eilen] [klo] LT', 9895 lastWeek: '[viime] dddd[na] [klo] LT', 9896 sameElse: 'L', 9897 }, 9898 relativeTime: { 9899 future: '%s päästä', 9900 past: '%s sitten', 9901 s: translate$2, 9902 ss: translate$2, 9903 m: translate$2, 9904 mm: translate$2, 9905 h: translate$2, 9906 hh: translate$2, 9907 d: translate$2, 9908 dd: translate$2, 9909 M: translate$2, 9910 MM: translate$2, 9911 y: translate$2, 9912 yy: translate$2, 9913 }, 9914 dayOfMonthOrdinalParse: /\d{1,2}\./, 9915 ordinal: '%d.', 9916 week: { 9917 dow: 1, // Monday is the first day of the week. 9918 doy: 4, // The week that contains Jan 4th is the first week of the year. 9919 }, 9920 }); 9921 9922 //! moment.js locale configuration 9923 9924 hooks.defineLocale('fil', { 9925 months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split( 9926 '_' 9927 ), 9928 monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), 9929 weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split( 9930 '_' 9931 ), 9932 weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), 9933 weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), 9934 longDateFormat: { 9935 LT: 'HH:mm', 9936 LTS: 'HH:mm:ss', 9937 L: 'MM/D/YYYY', 9938 LL: 'MMMM D, YYYY', 9939 LLL: 'MMMM D, YYYY HH:mm', 9940 LLLL: 'dddd, MMMM DD, YYYY HH:mm', 9941 }, 9942 calendar: { 9943 sameDay: 'LT [ngayong araw]', 9944 nextDay: '[Bukas ng] LT', 9945 nextWeek: 'LT [sa susunod na] dddd', 9946 lastDay: 'LT [kahapon]', 9947 lastWeek: 'LT [noong nakaraang] dddd', 9948 sameElse: 'L', 9949 }, 9950 relativeTime: { 9951 future: 'sa loob ng %s', 9952 past: '%s ang nakalipas', 9953 s: 'ilang segundo', 9954 ss: '%d segundo', 9955 m: 'isang minuto', 9956 mm: '%d minuto', 9957 h: 'isang oras', 9958 hh: '%d oras', 9959 d: 'isang araw', 9960 dd: '%d araw', 9961 M: 'isang buwan', 9962 MM: '%d buwan', 9963 y: 'isang taon', 9964 yy: '%d taon', 9965 }, 9966 dayOfMonthOrdinalParse: /\d{1,2}/, 9967 ordinal: function (number) { 9968 return number; 9969 }, 9970 week: { 9971 dow: 1, // Monday is the first day of the week. 9972 doy: 4, // The week that contains Jan 4th is the first week of the year. 9973 }, 9974 }); 9975 9976 //! moment.js locale configuration 9977 9978 hooks.defineLocale('fo', { 9979 months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split( 9980 '_' 9981 ), 9982 monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), 9983 weekdays: 9984 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split( 9985 '_' 9986 ), 9987 weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'), 9988 weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'), 9989 longDateFormat: { 9990 LT: 'HH:mm', 9991 LTS: 'HH:mm:ss', 9992 L: 'DD/MM/YYYY', 9993 LL: 'D MMMM YYYY', 9994 LLL: 'D MMMM YYYY HH:mm', 9995 LLLL: 'dddd D. MMMM, YYYY HH:mm', 9996 }, 9997 calendar: { 9998 sameDay: '[Í dag kl.] LT', 9999 nextDay: '[Í morgin kl.] LT', 10000 nextWeek: 'dddd [kl.] LT', 10001 lastDay: '[Í gjár kl.] LT', 10002 lastWeek: '[síðstu] dddd [kl] LT', 10003 sameElse: 'L', 10004 }, 10005 relativeTime: { 10006 future: 'um %s', 10007 past: '%s síðani', 10008 s: 'fá sekund', 10009 ss: '%d sekundir', 10010 m: 'ein minuttur', 10011 mm: '%d minuttir', 10012 h: 'ein tími', 10013 hh: '%d tímar', 10014 d: 'ein dagur', 10015 dd: '%d dagar', 10016 M: 'ein mánaður', 10017 MM: '%d mánaðir', 10018 y: 'eitt ár', 10019 yy: '%d ár', 10020 }, 10021 dayOfMonthOrdinalParse: /\d{1,2}\./, 10022 ordinal: '%d.', 10023 week: { 10024 dow: 1, // Monday is the first day of the week. 10025 doy: 4, // The week that contains Jan 4th is the first week of the year. 10026 }, 10027 }); 10028 10029 //! moment.js locale configuration 10030 10031 hooks.defineLocale('fr-ca', { 10032 months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( 10033 '_' 10034 ), 10035 monthsShort: 10036 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( 10037 '_' 10038 ), 10039 monthsParseExact: true, 10040 weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), 10041 weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), 10042 weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), 10043 weekdaysParseExact: true, 10044 longDateFormat: { 10045 LT: 'HH:mm', 10046 LTS: 'HH:mm:ss', 10047 L: 'YYYY-MM-DD', 10048 LL: 'D MMMM YYYY', 10049 LLL: 'D MMMM YYYY HH:mm', 10050 LLLL: 'dddd D MMMM YYYY HH:mm', 10051 }, 10052 calendar: { 10053 sameDay: '[Aujourd’hui à] LT', 10054 nextDay: '[Demain à] LT', 10055 nextWeek: 'dddd [à] LT', 10056 lastDay: '[Hier à] LT', 10057 lastWeek: 'dddd [dernier à] LT', 10058 sameElse: 'L', 10059 }, 10060 relativeTime: { 10061 future: 'dans %s', 10062 past: 'il y a %s', 10063 s: 'quelques secondes', 10064 ss: '%d secondes', 10065 m: 'une minute', 10066 mm: '%d minutes', 10067 h: 'une heure', 10068 hh: '%d heures', 10069 d: 'un jour', 10070 dd: '%d jours', 10071 M: 'un mois', 10072 MM: '%d mois', 10073 y: 'un an', 10074 yy: '%d ans', 10075 }, 10076 dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, 10077 ordinal: function (number, period) { 10078 switch (period) { 10079 // Words with masculine grammatical gender: mois, trimestre, jour 10080 default: 10081 case 'M': 10082 case 'Q': 10083 case 'D': 10084 case 'DDD': 10085 case 'd': 10086 return number + (number === 1 ? 'er' : 'e'); 10087 10088 // Words with feminine grammatical gender: semaine 10089 case 'w': 10090 case 'W': 10091 return number + (number === 1 ? 're' : 'e'); 10092 } 10093 }, 10094 }); 10095 10096 //! moment.js locale configuration 10097 10098 hooks.defineLocale('fr-ch', { 10099 months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( 10100 '_' 10101 ), 10102 monthsShort: 10103 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( 10104 '_' 10105 ), 10106 monthsParseExact: true, 10107 weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), 10108 weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), 10109 weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), 10110 weekdaysParseExact: true, 10111 longDateFormat: { 10112 LT: 'HH:mm', 10113 LTS: 'HH:mm:ss', 10114 L: 'DD.MM.YYYY', 10115 LL: 'D MMMM YYYY', 10116 LLL: 'D MMMM YYYY HH:mm', 10117 LLLL: 'dddd D MMMM YYYY HH:mm', 10118 }, 10119 calendar: { 10120 sameDay: '[Aujourd’hui à] LT', 10121 nextDay: '[Demain à] LT', 10122 nextWeek: 'dddd [à] LT', 10123 lastDay: '[Hier à] LT', 10124 lastWeek: 'dddd [dernier à] LT', 10125 sameElse: 'L', 10126 }, 10127 relativeTime: { 10128 future: 'dans %s', 10129 past: 'il y a %s', 10130 s: 'quelques secondes', 10131 ss: '%d secondes', 10132 m: 'une minute', 10133 mm: '%d minutes', 10134 h: 'une heure', 10135 hh: '%d heures', 10136 d: 'un jour', 10137 dd: '%d jours', 10138 M: 'un mois', 10139 MM: '%d mois', 10140 y: 'un an', 10141 yy: '%d ans', 10142 }, 10143 dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, 10144 ordinal: function (number, period) { 10145 switch (period) { 10146 // Words with masculine grammatical gender: mois, trimestre, jour 10147 default: 10148 case 'M': 10149 case 'Q': 10150 case 'D': 10151 case 'DDD': 10152 case 'd': 10153 return number + (number === 1 ? 'er' : 'e'); 10154 10155 // Words with feminine grammatical gender: semaine 10156 case 'w': 10157 case 'W': 10158 return number + (number === 1 ? 're' : 'e'); 10159 } 10160 }, 10161 week: { 10162 dow: 1, // Monday is the first day of the week. 10163 doy: 4, // The week that contains Jan 4th is the first week of the year. 10164 }, 10165 }); 10166 10167 //! moment.js locale configuration 10168 10169 var monthsStrictRegex$1 = 10170 /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i, 10171 monthsShortStrictRegex$1 = 10172 /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i, 10173 monthsRegex$7 = 10174 /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i, 10175 monthsParse$6 = [ 10176 /^janv/i, 10177 /^févr/i, 10178 /^mars/i, 10179 /^avr/i, 10180 /^mai/i, 10181 /^juin/i, 10182 /^juil/i, 10183 /^août/i, 10184 /^sept/i, 10185 /^oct/i, 10186 /^nov/i, 10187 /^déc/i, 10188 ]; 10189 10190 hooks.defineLocale('fr', { 10191 months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( 10192 '_' 10193 ), 10194 monthsShort: 10195 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( 10196 '_' 10197 ), 10198 monthsRegex: monthsRegex$7, 10199 monthsShortRegex: monthsRegex$7, 10200 monthsStrictRegex: monthsStrictRegex$1, 10201 monthsShortStrictRegex: monthsShortStrictRegex$1, 10202 monthsParse: monthsParse$6, 10203 longMonthsParse: monthsParse$6, 10204 shortMonthsParse: monthsParse$6, 10205 weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), 10206 weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), 10207 weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), 10208 weekdaysParseExact: true, 10209 longDateFormat: { 10210 LT: 'HH:mm', 10211 LTS: 'HH:mm:ss', 10212 L: 'DD/MM/YYYY', 10213 LL: 'D MMMM YYYY', 10214 LLL: 'D MMMM YYYY HH:mm', 10215 LLLL: 'dddd D MMMM YYYY HH:mm', 10216 }, 10217 calendar: { 10218 sameDay: '[Aujourd’hui à] LT', 10219 nextDay: '[Demain à] LT', 10220 nextWeek: 'dddd [à] LT', 10221 lastDay: '[Hier à] LT', 10222 lastWeek: 'dddd [dernier à] LT', 10223 sameElse: 'L', 10224 }, 10225 relativeTime: { 10226 future: 'dans %s', 10227 past: 'il y a %s', 10228 s: 'quelques secondes', 10229 ss: '%d secondes', 10230 m: 'une minute', 10231 mm: '%d minutes', 10232 h: 'une heure', 10233 hh: '%d heures', 10234 d: 'un jour', 10235 dd: '%d jours', 10236 w: 'une semaine', 10237 ww: '%d semaines', 10238 M: 'un mois', 10239 MM: '%d mois', 10240 y: 'un an', 10241 yy: '%d ans', 10242 }, 10243 dayOfMonthOrdinalParse: /\d{1,2}(er|)/, 10244 ordinal: function (number, period) { 10245 switch (period) { 10246 // TODO: Return 'e' when day of month > 1. Move this case inside 10247 // block for masculine words below. 10248 // See https://github.com/moment/moment/issues/3375 10249 case 'D': 10250 return number + (number === 1 ? 'er' : ''); 10251 10252 // Words with masculine grammatical gender: mois, trimestre, jour 10253 default: 10254 case 'M': 10255 case 'Q': 10256 case 'DDD': 10257 case 'd': 10258 return number + (number === 1 ? 'er' : 'e'); 10259 10260 // Words with feminine grammatical gender: semaine 10261 case 'w': 10262 case 'W': 10263 return number + (number === 1 ? 're' : 'e'); 10264 } 10265 }, 10266 week: { 10267 dow: 1, // Monday is the first day of the week. 10268 doy: 4, // The week that contains Jan 4th is the first week of the year. 10269 }, 10270 }); 10271 10272 //! moment.js locale configuration 10273 10274 var monthsShortWithDots = 10275 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'), 10276 monthsShortWithoutDots = 10277 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'); 10278 10279 hooks.defineLocale('fy', { 10280 months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split( 10281 '_' 10282 ), 10283 monthsShort: function (m, format) { 10284 if (!m) { 10285 return monthsShortWithDots; 10286 } else if (/-MMM-/.test(format)) { 10287 return monthsShortWithoutDots[m.month()]; 10288 } else { 10289 return monthsShortWithDots[m.month()]; 10290 } 10291 }, 10292 monthsParseExact: true, 10293 weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split( 10294 '_' 10295 ), 10296 weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'), 10297 weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), 10298 weekdaysParseExact: true, 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: '[hjoed om] LT', 10309 nextDay: '[moarn om] LT', 10310 nextWeek: 'dddd [om] LT', 10311 lastDay: '[juster om] LT', 10312 lastWeek: '[ôfrûne] dddd [om] LT', 10313 sameElse: 'L', 10314 }, 10315 relativeTime: { 10316 future: 'oer %s', 10317 past: '%s lyn', 10318 s: 'in pear sekonden', 10319 ss: '%d sekonden', 10320 m: 'ien minút', 10321 mm: '%d minuten', 10322 h: 'ien oere', 10323 hh: '%d oeren', 10324 d: 'ien dei', 10325 dd: '%d dagen', 10326 M: 'ien moanne', 10327 MM: '%d moannen', 10328 y: 'ien jier', 10329 yy: '%d jierren', 10330 }, 10331 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, 10332 ordinal: function (number) { 10333 return ( 10334 number + 10335 (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') 10336 ); 10337 }, 10338 week: { 10339 dow: 1, // Monday is the first day of the week. 10340 doy: 4, // The week that contains Jan 4th is the first week of the year. 10341 }, 10342 }); 10343 10344 //! moment.js locale configuration 10345 10346 var months$6 = [ 10347 'Eanáir', 10348 'Feabhra', 10349 'Márta', 10350 'Aibreán', 10351 'Bealtaine', 10352 'Meitheamh', 10353 'Iúil', 10354 'Lúnasa', 10355 'Meán Fómhair', 10356 'Deireadh Fómhair', 10357 'Samhain', 10358 'Nollaig', 10359 ], 10360 monthsShort$5 = [ 10361 'Ean', 10362 'Feabh', 10363 'Márt', 10364 'Aib', 10365 'Beal', 10366 'Meith', 10367 'Iúil', 10368 'Lún', 10369 'M.F.', 10370 'D.F.', 10371 'Samh', 10372 'Noll', 10373 ], 10374 weekdays$1 = [ 10375 'Dé Domhnaigh', 10376 'Dé Luain', 10377 'Dé Máirt', 10378 'Dé Céadaoin', 10379 'Déardaoin', 10380 'Dé hAoine', 10381 'Dé Sathairn', 10382 ], 10383 weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'], 10384 weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa']; 10385 10386 hooks.defineLocale('ga', { 10387 months: months$6, 10388 monthsShort: monthsShort$5, 10389 monthsParseExact: true, 10390 weekdays: weekdays$1, 10391 weekdaysShort: weekdaysShort, 10392 weekdaysMin: weekdaysMin, 10393 longDateFormat: { 10394 LT: 'HH:mm', 10395 LTS: 'HH:mm:ss', 10396 L: 'DD/MM/YYYY', 10397 LL: 'D MMMM YYYY', 10398 LLL: 'D MMMM YYYY HH:mm', 10399 LLLL: 'dddd, D MMMM YYYY HH:mm', 10400 }, 10401 calendar: { 10402 sameDay: '[Inniu ag] LT', 10403 nextDay: '[Amárach ag] LT', 10404 nextWeek: 'dddd [ag] LT', 10405 lastDay: '[Inné ag] LT', 10406 lastWeek: 'dddd [seo caite] [ag] LT', 10407 sameElse: 'L', 10408 }, 10409 relativeTime: { 10410 future: 'i %s', 10411 past: '%s ó shin', 10412 s: 'cúpla soicind', 10413 ss: '%d soicind', 10414 m: 'nóiméad', 10415 mm: '%d nóiméad', 10416 h: 'uair an chloig', 10417 hh: '%d uair an chloig', 10418 d: 'lá', 10419 dd: '%d lá', 10420 M: 'mí', 10421 MM: '%d míonna', 10422 y: 'bliain', 10423 yy: '%d bliain', 10424 }, 10425 dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, 10426 ordinal: function (number) { 10427 var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; 10428 return number + output; 10429 }, 10430 week: { 10431 dow: 1, // Monday is the first day of the week. 10432 doy: 4, // The week that contains Jan 4th is the first week of the year. 10433 }, 10434 }); 10435 10436 //! moment.js locale configuration 10437 10438 var months$7 = [ 10439 'Am Faoilleach', 10440 'An Gearran', 10441 'Am Màrt', 10442 'An Giblean', 10443 'An Cèitean', 10444 'An t-Ògmhios', 10445 'An t-Iuchar', 10446 'An Lùnastal', 10447 'An t-Sultain', 10448 'An Dàmhair', 10449 'An t-Samhain', 10450 'An Dùbhlachd', 10451 ], 10452 monthsShort$6 = [ 10453 'Faoi', 10454 'Gear', 10455 'Màrt', 10456 'Gibl', 10457 'Cèit', 10458 'Ògmh', 10459 'Iuch', 10460 'Lùn', 10461 'Sult', 10462 'Dàmh', 10463 'Samh', 10464 'Dùbh', 10465 ], 10466 weekdays$2 = [ 10467 'Didòmhnaich', 10468 'Diluain', 10469 'Dimàirt', 10470 'Diciadain', 10471 'Diardaoin', 10472 'Dihaoine', 10473 'Disathairne', 10474 ], 10475 weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'], 10476 weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa']; 10477 10478 hooks.defineLocale('gd', { 10479 months: months$7, 10480 monthsShort: monthsShort$6, 10481 monthsParseExact: true, 10482 weekdays: weekdays$2, 10483 weekdaysShort: weekdaysShort$1, 10484 weekdaysMin: weekdaysMin$1, 10485 longDateFormat: { 10486 LT: 'HH:mm', 10487 LTS: 'HH:mm:ss', 10488 L: 'DD/MM/YYYY', 10489 LL: 'D MMMM YYYY', 10490 LLL: 'D MMMM YYYY HH:mm', 10491 LLLL: 'dddd, D MMMM YYYY HH:mm', 10492 }, 10493 calendar: { 10494 sameDay: '[An-diugh aig] LT', 10495 nextDay: '[A-màireach aig] LT', 10496 nextWeek: 'dddd [aig] LT', 10497 lastDay: '[An-dè aig] LT', 10498 lastWeek: 'dddd [seo chaidh] [aig] LT', 10499 sameElse: 'L', 10500 }, 10501 relativeTime: { 10502 future: 'ann an %s', 10503 past: 'bho chionn %s', 10504 s: 'beagan diogan', 10505 ss: '%d diogan', 10506 m: 'mionaid', 10507 mm: '%d mionaidean', 10508 h: 'uair', 10509 hh: '%d uairean', 10510 d: 'latha', 10511 dd: '%d latha', 10512 M: 'mìos', 10513 MM: '%d mìosan', 10514 y: 'bliadhna', 10515 yy: '%d bliadhna', 10516 }, 10517 dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, 10518 ordinal: function (number) { 10519 var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; 10520 return number + output; 10521 }, 10522 week: { 10523 dow: 1, // Monday is the first day of the week. 10524 doy: 4, // The week that contains Jan 4th is the first week of the year. 10525 }, 10526 }); 10527 10528 //! moment.js locale configuration 10529 10530 hooks.defineLocale('gl', { 10531 months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split( 10532 '_' 10533 ), 10534 monthsShort: 10535 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split( 10536 '_' 10537 ), 10538 monthsParseExact: true, 10539 weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'), 10540 weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'), 10541 weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'), 10542 weekdaysParseExact: true, 10543 longDateFormat: { 10544 LT: 'H:mm', 10545 LTS: 'H:mm:ss', 10546 L: 'DD/MM/YYYY', 10547 LL: 'D [de] MMMM [de] YYYY', 10548 LLL: 'D [de] MMMM [de] YYYY H:mm', 10549 LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', 10550 }, 10551 calendar: { 10552 sameDay: function () { 10553 return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT'; 10554 }, 10555 nextDay: function () { 10556 return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT'; 10557 }, 10558 nextWeek: function () { 10559 return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'; 10560 }, 10561 lastDay: function () { 10562 return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT'; 10563 }, 10564 lastWeek: function () { 10565 return ( 10566 '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT' 10567 ); 10568 }, 10569 sameElse: 'L', 10570 }, 10571 relativeTime: { 10572 future: function (str) { 10573 if (str.indexOf('un') === 0) { 10574 return 'n' + str; 10575 } 10576 return 'en ' + str; 10577 }, 10578 past: 'hai %s', 10579 s: 'uns segundos', 10580 ss: '%d segundos', 10581 m: 'un minuto', 10582 mm: '%d minutos', 10583 h: 'unha hora', 10584 hh: '%d horas', 10585 d: 'un día', 10586 dd: '%d días', 10587 M: 'un mes', 10588 MM: '%d meses', 10589 y: 'un ano', 10590 yy: '%d anos', 10591 }, 10592 dayOfMonthOrdinalParse: /\d{1,2}º/, 10593 ordinal: '%dº', 10594 week: { 10595 dow: 1, // Monday is the first day of the week. 10596 doy: 4, // The week that contains Jan 4th is the first week of the year. 10597 }, 10598 }); 10599 10600 //! moment.js locale configuration 10601 10602 function processRelativeTime$5(number, withoutSuffix, key, isFuture) { 10603 var format = { 10604 s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'], 10605 ss: [number + ' सॅकंडांनी', number + ' सॅकंड'], 10606 m: ['एका मिणटान', 'एक मिनूट'], 10607 mm: [number + ' मिणटांनी', number + ' मिणटां'], 10608 h: ['एका वरान', 'एक वर'], 10609 hh: [number + ' वरांनी', number + ' वरां'], 10610 d: ['एका दिसान', 'एक दीस'], 10611 dd: [number + ' दिसांनी', number + ' दीस'], 10612 M: ['एका म्हयन्यान', 'एक म्हयनो'], 10613 MM: [number + ' म्हयन्यानी', number + ' म्हयने'], 10614 y: ['एका वर्सान', 'एक वर्स'], 10615 yy: [number + ' वर्सांनी', number + ' वर्सां'], 10616 }; 10617 return isFuture ? format[key][0] : format[key][1]; 10618 } 10619 10620 hooks.defineLocale('gom-deva', { 10621 months: { 10622 standalone: 10623 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split( 10624 '_' 10625 ), 10626 format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split( 10627 '_' 10628 ), 10629 isFormat: /MMMM(\s)+D[oD]?/, 10630 }, 10631 monthsShort: 10632 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split( 10633 '_' 10634 ), 10635 monthsParseExact: true, 10636 weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'), 10637 weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'), 10638 weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'), 10639 weekdaysParseExact: true, 10640 longDateFormat: { 10641 LT: 'A h:mm [वाजतां]', 10642 LTS: 'A h:mm:ss [वाजतां]', 10643 L: 'DD-MM-YYYY', 10644 LL: 'D MMMM YYYY', 10645 LLL: 'D MMMM YYYY A h:mm [वाजतां]', 10646 LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]', 10647 llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]', 10648 }, 10649 calendar: { 10650 sameDay: '[आयज] LT', 10651 nextDay: '[फाल्यां] LT', 10652 nextWeek: '[फुडलो] dddd[,] LT', 10653 lastDay: '[काल] LT', 10654 lastWeek: '[फाटलो] dddd[,] LT', 10655 sameElse: 'L', 10656 }, 10657 relativeTime: { 10658 future: '%s', 10659 past: '%s आदीं', 10660 s: processRelativeTime$5, 10661 ss: processRelativeTime$5, 10662 m: processRelativeTime$5, 10663 mm: processRelativeTime$5, 10664 h: processRelativeTime$5, 10665 hh: processRelativeTime$5, 10666 d: processRelativeTime$5, 10667 dd: processRelativeTime$5, 10668 M: processRelativeTime$5, 10669 MM: processRelativeTime$5, 10670 y: processRelativeTime$5, 10671 yy: processRelativeTime$5, 10672 }, 10673 dayOfMonthOrdinalParse: /\d{1,2}(वेर)/, 10674 ordinal: function (number, period) { 10675 switch (period) { 10676 // the ordinal 'वेर' only applies to day of the month 10677 case 'D': 10678 return number + 'वेर'; 10679 default: 10680 case 'M': 10681 case 'Q': 10682 case 'DDD': 10683 case 'd': 10684 case 'w': 10685 case 'W': 10686 return number; 10687 } 10688 }, 10689 week: { 10690 dow: 0, // Sunday is the first day of the week 10691 doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4) 10692 }, 10693 meridiemParse: /राती|सकाळीं|दनपारां|सांजे/, 10694 meridiemHour: function (hour, meridiem) { 10695 if (hour === 12) { 10696 hour = 0; 10697 } 10698 if (meridiem === 'राती') { 10699 return hour < 4 ? hour : hour + 12; 10700 } else if (meridiem === 'सकाळीं') { 10701 return hour; 10702 } else if (meridiem === 'दनपारां') { 10703 return hour > 12 ? hour : hour + 12; 10704 } else if (meridiem === 'सांजे') { 10705 return hour + 12; 10706 } 10707 }, 10708 meridiem: function (hour, minute, isLower) { 10709 if (hour < 4) { 10710 return 'राती'; 10711 } else if (hour < 12) { 10712 return 'सकाळीं'; 10713 } else if (hour < 16) { 10714 return 'दनपारां'; 10715 } else if (hour < 20) { 10716 return 'सांजे'; 10717 } else { 10718 return 'राती'; 10719 } 10720 }, 10721 }); 10722 10723 //! moment.js locale configuration 10724 10725 function processRelativeTime$6(number, withoutSuffix, key, isFuture) { 10726 var format = { 10727 s: ['thoddea sekondamni', 'thodde sekond'], 10728 ss: [number + ' sekondamni', number + ' sekond'], 10729 m: ['eka mintan', 'ek minut'], 10730 mm: [number + ' mintamni', number + ' mintam'], 10731 h: ['eka voran', 'ek vor'], 10732 hh: [number + ' voramni', number + ' voram'], 10733 d: ['eka disan', 'ek dis'], 10734 dd: [number + ' disamni', number + ' dis'], 10735 M: ['eka mhoinean', 'ek mhoino'], 10736 MM: [number + ' mhoineamni', number + ' mhoine'], 10737 y: ['eka vorsan', 'ek voros'], 10738 yy: [number + ' vorsamni', number + ' vorsam'], 10739 }; 10740 return isFuture ? format[key][0] : format[key][1]; 10741 } 10742 10743 hooks.defineLocale('gom-latn', { 10744 months: { 10745 standalone: 10746 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split( 10747 '_' 10748 ), 10749 format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split( 10750 '_' 10751 ), 10752 isFormat: /MMMM(\s)+D[oD]?/, 10753 }, 10754 monthsShort: 10755 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'), 10756 monthsParseExact: true, 10757 weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'), 10758 weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'), 10759 weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'), 10760 weekdaysParseExact: true, 10761 longDateFormat: { 10762 LT: 'A h:mm [vazta]', 10763 LTS: 'A h:mm:ss [vazta]', 10764 L: 'DD-MM-YYYY', 10765 LL: 'D MMMM YYYY', 10766 LLL: 'D MMMM YYYY A h:mm [vazta]', 10767 LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]', 10768 llll: 'ddd, D MMM YYYY, A h:mm [vazta]', 10769 }, 10770 calendar: { 10771 sameDay: '[Aiz] LT', 10772 nextDay: '[Faleam] LT', 10773 nextWeek: '[Fuddlo] dddd[,] LT', 10774 lastDay: '[Kal] LT', 10775 lastWeek: '[Fattlo] dddd[,] LT', 10776 sameElse: 'L', 10777 }, 10778 relativeTime: { 10779 future: '%s', 10780 past: '%s adim', 10781 s: processRelativeTime$6, 10782 ss: processRelativeTime$6, 10783 m: processRelativeTime$6, 10784 mm: processRelativeTime$6, 10785 h: processRelativeTime$6, 10786 hh: processRelativeTime$6, 10787 d: processRelativeTime$6, 10788 dd: processRelativeTime$6, 10789 M: processRelativeTime$6, 10790 MM: processRelativeTime$6, 10791 y: processRelativeTime$6, 10792 yy: processRelativeTime$6, 10793 }, 10794 dayOfMonthOrdinalParse: /\d{1,2}(er)/, 10795 ordinal: function (number, period) { 10796 switch (period) { 10797 // the ordinal 'er' only applies to day of the month 10798 case 'D': 10799 return number + 'er'; 10800 default: 10801 case 'M': 10802 case 'Q': 10803 case 'DDD': 10804 case 'd': 10805 case 'w': 10806 case 'W': 10807 return number; 10808 } 10809 }, 10810 week: { 10811 dow: 0, // Sunday is the first day of the week 10812 doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4) 10813 }, 10814 meridiemParse: /rati|sokallim|donparam|sanje/, 10815 meridiemHour: function (hour, meridiem) { 10816 if (hour === 12) { 10817 hour = 0; 10818 } 10819 if (meridiem === 'rati') { 10820 return hour < 4 ? hour : hour + 12; 10821 } else if (meridiem === 'sokallim') { 10822 return hour; 10823 } else if (meridiem === 'donparam') { 10824 return hour > 12 ? hour : hour + 12; 10825 } else if (meridiem === 'sanje') { 10826 return hour + 12; 10827 } 10828 }, 10829 meridiem: function (hour, minute, isLower) { 10830 if (hour < 4) { 10831 return 'rati'; 10832 } else if (hour < 12) { 10833 return 'sokallim'; 10834 } else if (hour < 16) { 10835 return 'donparam'; 10836 } else if (hour < 20) { 10837 return 'sanje'; 10838 } else { 10839 return 'rati'; 10840 } 10841 }, 10842 }); 10843 10844 //! moment.js locale configuration 10845 10846 var symbolMap$8 = { 10847 1: '૧', 10848 2: '૨', 10849 3: '૩', 10850 4: '૪', 10851 5: '૫', 10852 6: '૬', 10853 7: '૭', 10854 8: '૮', 10855 9: '૯', 10856 0: '૦', 10857 }, 10858 numberMap$7 = { 10859 '૧': '1', 10860 '૨': '2', 10861 '૩': '3', 10862 '૪': '4', 10863 '૫': '5', 10864 '૬': '6', 10865 '૭': '7', 10866 '૮': '8', 10867 '૯': '9', 10868 '૦': '0', 10869 }; 10870 10871 hooks.defineLocale('gu', { 10872 months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split( 10873 '_' 10874 ), 10875 monthsShort: 10876 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split( 10877 '_' 10878 ), 10879 monthsParseExact: true, 10880 weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split( 10881 '_' 10882 ), 10883 weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'), 10884 weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'), 10885 longDateFormat: { 10886 LT: 'A h:mm વાગ્યે', 10887 LTS: 'A h:mm:ss વાગ્યે', 10888 L: 'DD/MM/YYYY', 10889 LL: 'D MMMM YYYY', 10890 LLL: 'D MMMM YYYY, A h:mm વાગ્યે', 10891 LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે', 10892 }, 10893 calendar: { 10894 sameDay: '[આજ] LT', 10895 nextDay: '[કાલે] LT', 10896 nextWeek: 'dddd, LT', 10897 lastDay: '[ગઇકાલે] LT', 10898 lastWeek: '[પાછલા] dddd, LT', 10899 sameElse: 'L', 10900 }, 10901 relativeTime: { 10902 future: '%s મા', 10903 past: '%s પહેલા', 10904 s: 'અમુક પળો', 10905 ss: '%d સેકંડ', 10906 m: 'એક મિનિટ', 10907 mm: '%d મિનિટ', 10908 h: 'એક કલાક', 10909 hh: '%d કલાક', 10910 d: 'એક દિવસ', 10911 dd: '%d દિવસ', 10912 M: 'એક મહિનો', 10913 MM: '%d મહિનો', 10914 y: 'એક વર્ષ', 10915 yy: '%d વર્ષ', 10916 }, 10917 preparse: function (string) { 10918 return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) { 10919 return numberMap$7[match]; 10920 }); 10921 }, 10922 postformat: function (string) { 10923 return string.replace(/\d/g, function (match) { 10924 return symbolMap$8[match]; 10925 }); 10926 }, 10927 // Gujarati notation for meridiems are quite fuzzy in practice. While there exists 10928 // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati. 10929 meridiemParse: /રાત|બપોર|સવાર|સાંજ/, 10930 meridiemHour: function (hour, meridiem) { 10931 if (hour === 12) { 10932 hour = 0; 10933 } 10934 if (meridiem === 'રાત') { 10935 return hour < 4 ? hour : hour + 12; 10936 } else if (meridiem === 'સવાર') { 10937 return hour; 10938 } else if (meridiem === 'બપોર') { 10939 return hour >= 10 ? hour : hour + 12; 10940 } else if (meridiem === 'સાંજ') { 10941 return hour + 12; 10942 } 10943 }, 10944 meridiem: function (hour, minute, isLower) { 10945 if (hour < 4) { 10946 return 'રાત'; 10947 } else if (hour < 10) { 10948 return 'સવાર'; 10949 } else if (hour < 17) { 10950 return 'બપોર'; 10951 } else if (hour < 20) { 10952 return 'સાંજ'; 10953 } else { 10954 return 'રાત'; 10955 } 10956 }, 10957 week: { 10958 dow: 0, // Sunday is the first day of the week. 10959 doy: 6, // The week that contains Jan 6th is the first week of the year. 10960 }, 10961 }); 10962 10963 //! moment.js locale configuration 10964 10965 hooks.defineLocale('he', { 10966 months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split( 10967 '_' 10968 ), 10969 monthsShort: 10970 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'), 10971 weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), 10972 weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), 10973 weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'), 10974 longDateFormat: { 10975 LT: 'HH:mm', 10976 LTS: 'HH:mm:ss', 10977 L: 'DD/MM/YYYY', 10978 LL: 'D [ב]MMMM YYYY', 10979 LLL: 'D [ב]MMMM YYYY HH:mm', 10980 LLLL: 'dddd, D [ב]MMMM YYYY HH:mm', 10981 l: 'D/M/YYYY', 10982 ll: 'D MMM YYYY', 10983 lll: 'D MMM YYYY HH:mm', 10984 llll: 'ddd, D MMM YYYY HH:mm', 10985 }, 10986 calendar: { 10987 sameDay: '[היום ב־]LT', 10988 nextDay: '[מחר ב־]LT', 10989 nextWeek: 'dddd [בשעה] LT', 10990 lastDay: '[אתמול ב־]LT', 10991 lastWeek: '[ביום] dddd [האחרון בשעה] LT', 10992 sameElse: 'L', 10993 }, 10994 relativeTime: { 10995 future: 'בעוד %s', 10996 past: 'לפני %s', 10997 s: 'מספר שניות', 10998 ss: '%d שניות', 10999 m: 'דקה', 11000 mm: '%d דקות', 11001 h: 'שעה', 11002 hh: function (number) { 11003 if (number === 2) { 11004 return 'שעתיים'; 11005 } 11006 return number + ' שעות'; 11007 }, 11008 d: 'יום', 11009 dd: function (number) { 11010 if (number === 2) { 11011 return 'יומיים'; 11012 } 11013 return number + ' ימים'; 11014 }, 11015 M: 'חודש', 11016 MM: function (number) { 11017 if (number === 2) { 11018 return 'חודשיים'; 11019 } 11020 return number + ' חודשים'; 11021 }, 11022 y: 'שנה', 11023 yy: function (number) { 11024 if (number === 2) { 11025 return 'שנתיים'; 11026 } else if (number % 10 === 0 && number !== 10) { 11027 return number + ' שנה'; 11028 } 11029 return number + ' שנים'; 11030 }, 11031 }, 11032 meridiemParse: 11033 /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i, 11034 isPM: function (input) { 11035 return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input); 11036 }, 11037 meridiem: function (hour, minute, isLower) { 11038 if (hour < 5) { 11039 return 'לפנות בוקר'; 11040 } else if (hour < 10) { 11041 return 'בבוקר'; 11042 } else if (hour < 12) { 11043 return isLower ? 'לפנה"צ' : 'לפני הצהריים'; 11044 } else if (hour < 18) { 11045 return isLower ? 'אחה"צ' : 'אחרי הצהריים'; 11046 } else { 11047 return 'בערב'; 11048 } 11049 }, 11050 }); 11051 11052 //! moment.js locale configuration 11053 11054 var symbolMap$9 = { 11055 1: '१', 11056 2: '२', 11057 3: '३', 11058 4: '४', 11059 5: '५', 11060 6: '६', 11061 7: '७', 11062 8: '८', 11063 9: '९', 11064 0: '०', 11065 }, 11066 numberMap$8 = { 11067 '१': '1', 11068 '२': '2', 11069 '३': '3', 11070 '४': '4', 11071 '५': '5', 11072 '६': '6', 11073 '७': '7', 11074 '८': '8', 11075 '९': '9', 11076 '०': '0', 11077 }, 11078 monthsParse$7 = [ 11079 /^जन/i, 11080 /^फ़र|फर/i, 11081 /^मार्च/i, 11082 /^अप्रै/i, 11083 /^मई/i, 11084 /^जून/i, 11085 /^जुल/i, 11086 /^अग/i, 11087 /^सितं|सित/i, 11088 /^अक्टू/i, 11089 /^नव|नवं/i, 11090 /^दिसं|दिस/i, 11091 ], 11092 shortMonthsParse = [ 11093 /^जन/i, 11094 /^फ़र/i, 11095 /^मार्च/i, 11096 /^अप्रै/i, 11097 /^मई/i, 11098 /^जून/i, 11099 /^जुल/i, 11100 /^अग/i, 11101 /^सित/i, 11102 /^अक्टू/i, 11103 /^नव/i, 11104 /^दिस/i, 11105 ]; 11106 11107 hooks.defineLocale('hi', { 11108 months: { 11109 format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split( 11110 '_' 11111 ), 11112 standalone: 11113 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split( 11114 '_' 11115 ), 11116 }, 11117 monthsShort: 11118 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), 11119 weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), 11120 weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), 11121 weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'), 11122 longDateFormat: { 11123 LT: 'A h:mm बजे', 11124 LTS: 'A h:mm:ss बजे', 11125 L: 'DD/MM/YYYY', 11126 LL: 'D MMMM YYYY', 11127 LLL: 'D MMMM YYYY, A h:mm बजे', 11128 LLLL: 'dddd, D MMMM YYYY, A h:mm बजे', 11129 }, 11130 11131 monthsParse: monthsParse$7, 11132 longMonthsParse: monthsParse$7, 11133 shortMonthsParse: shortMonthsParse, 11134 11135 monthsRegex: 11136 /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i, 11137 11138 monthsShortRegex: 11139 /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i, 11140 11141 monthsStrictRegex: 11142 /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i, 11143 11144 monthsShortStrictRegex: 11145 /^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i, 11146 11147 calendar: { 11148 sameDay: '[आज] LT', 11149 nextDay: '[कल] LT', 11150 nextWeek: 'dddd, LT', 11151 lastDay: '[कल] LT', 11152 lastWeek: '[पिछले] dddd, LT', 11153 sameElse: 'L', 11154 }, 11155 relativeTime: { 11156 future: '%s में', 11157 past: '%s पहले', 11158 s: 'कुछ ही क्षण', 11159 ss: '%d सेकंड', 11160 m: 'एक मिनट', 11161 mm: '%d मिनट', 11162 h: 'एक घंटा', 11163 hh: '%d घंटे', 11164 d: 'एक दिन', 11165 dd: '%d दिन', 11166 M: 'एक महीने', 11167 MM: '%d महीने', 11168 y: 'एक वर्ष', 11169 yy: '%d वर्ष', 11170 }, 11171 preparse: function (string) { 11172 return string.replace(/[१२३४५६७८९०]/g, function (match) { 11173 return numberMap$8[match]; 11174 }); 11175 }, 11176 postformat: function (string) { 11177 return string.replace(/\d/g, function (match) { 11178 return symbolMap$9[match]; 11179 }); 11180 }, 11181 // Hindi notation for meridiems are quite fuzzy in practice. While there exists 11182 // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. 11183 meridiemParse: /रात|सुबह|दोपहर|शाम/, 11184 meridiemHour: function (hour, meridiem) { 11185 if (hour === 12) { 11186 hour = 0; 11187 } 11188 if (meridiem === 'रात') { 11189 return hour < 4 ? hour : hour + 12; 11190 } else if (meridiem === 'सुबह') { 11191 return hour; 11192 } else if (meridiem === 'दोपहर') { 11193 return hour >= 10 ? hour : hour + 12; 11194 } else if (meridiem === 'शाम') { 11195 return hour + 12; 11196 } 11197 }, 11198 meridiem: function (hour, minute, isLower) { 11199 if (hour < 4) { 11200 return 'रात'; 11201 } else if (hour < 10) { 11202 return 'सुबह'; 11203 } else if (hour < 17) { 11204 return 'दोपहर'; 11205 } else if (hour < 20) { 11206 return 'शाम'; 11207 } else { 11208 return 'रात'; 11209 } 11210 }, 11211 week: { 11212 dow: 0, // Sunday is the first day of the week. 11213 doy: 6, // The week that contains Jan 6th is the first week of the year. 11214 }, 11215 }); 11216 11217 //! moment.js locale configuration 11218 11219 function translate$3(number, withoutSuffix, key) { 11220 var result = number + ' '; 11221 switch (key) { 11222 case 'ss': 11223 if (number === 1) { 11224 result += 'sekunda'; 11225 } else if (number === 2 || number === 3 || number === 4) { 11226 result += 'sekunde'; 11227 } else { 11228 result += 'sekundi'; 11229 } 11230 return result; 11231 case 'm': 11232 return withoutSuffix ? 'jedna minuta' : 'jedne minute'; 11233 case 'mm': 11234 if (number === 1) { 11235 result += 'minuta'; 11236 } else if (number === 2 || number === 3 || number === 4) { 11237 result += 'minute'; 11238 } else { 11239 result += 'minuta'; 11240 } 11241 return result; 11242 case 'h': 11243 return withoutSuffix ? 'jedan sat' : 'jednog sata'; 11244 case 'hh': 11245 if (number === 1) { 11246 result += 'sat'; 11247 } else if (number === 2 || number === 3 || number === 4) { 11248 result += 'sata'; 11249 } else { 11250 result += 'sati'; 11251 } 11252 return result; 11253 case 'dd': 11254 if (number === 1) { 11255 result += 'dan'; 11256 } else { 11257 result += 'dana'; 11258 } 11259 return result; 11260 case 'MM': 11261 if (number === 1) { 11262 result += 'mjesec'; 11263 } else if (number === 2 || number === 3 || number === 4) { 11264 result += 'mjeseca'; 11265 } else { 11266 result += 'mjeseci'; 11267 } 11268 return result; 11269 case 'yy': 11270 if (number === 1) { 11271 result += 'godina'; 11272 } else if (number === 2 || number === 3 || number === 4) { 11273 result += 'godine'; 11274 } else { 11275 result += 'godina'; 11276 } 11277 return result; 11278 } 11279 } 11280 11281 hooks.defineLocale('hr', { 11282 months: { 11283 format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split( 11284 '_' 11285 ), 11286 standalone: 11287 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split( 11288 '_' 11289 ), 11290 }, 11291 monthsShort: 11292 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split( 11293 '_' 11294 ), 11295 monthsParseExact: true, 11296 weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( 11297 '_' 11298 ), 11299 weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), 11300 weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), 11301 weekdaysParseExact: true, 11302 longDateFormat: { 11303 LT: 'H:mm', 11304 LTS: 'H:mm:ss', 11305 L: 'DD.MM.YYYY', 11306 LL: 'Do MMMM YYYY', 11307 LLL: 'Do MMMM YYYY H:mm', 11308 LLLL: 'dddd, Do MMMM YYYY H:mm', 11309 }, 11310 calendar: { 11311 sameDay: '[danas u] LT', 11312 nextDay: '[sutra u] LT', 11313 nextWeek: function () { 11314 switch (this.day()) { 11315 case 0: 11316 return '[u] [nedjelju] [u] LT'; 11317 case 3: 11318 return '[u] [srijedu] [u] LT'; 11319 case 6: 11320 return '[u] [subotu] [u] LT'; 11321 case 1: 11322 case 2: 11323 case 4: 11324 case 5: 11325 return '[u] dddd [u] LT'; 11326 } 11327 }, 11328 lastDay: '[jučer u] LT', 11329 lastWeek: function () { 11330 switch (this.day()) { 11331 case 0: 11332 return '[prošlu] [nedjelju] [u] LT'; 11333 case 3: 11334 return '[prošlu] [srijedu] [u] LT'; 11335 case 6: 11336 return '[prošle] [subote] [u] LT'; 11337 case 1: 11338 case 2: 11339 case 4: 11340 case 5: 11341 return '[prošli] dddd [u] LT'; 11342 } 11343 }, 11344 sameElse: 'L', 11345 }, 11346 relativeTime: { 11347 future: 'za %s', 11348 past: 'prije %s', 11349 s: 'par sekundi', 11350 ss: translate$3, 11351 m: translate$3, 11352 mm: translate$3, 11353 h: translate$3, 11354 hh: translate$3, 11355 d: 'dan', 11356 dd: translate$3, 11357 M: 'mjesec', 11358 MM: translate$3, 11359 y: 'godinu', 11360 yy: translate$3, 11361 }, 11362 dayOfMonthOrdinalParse: /\d{1,2}\./, 11363 ordinal: '%d.', 11364 week: { 11365 dow: 1, // Monday is the first day of the week. 11366 doy: 7, // The week that contains Jan 7th is the first week of the year. 11367 }, 11368 }); 11369 11370 //! moment.js locale configuration 11371 11372 var weekEndings = 11373 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); 11374 function translate$4(number, withoutSuffix, key, isFuture) { 11375 var num = number; 11376 switch (key) { 11377 case 's': 11378 return isFuture || withoutSuffix 11379 ? 'néhány másodperc' 11380 : 'néhány másodperce'; 11381 case 'ss': 11382 return num + (isFuture || withoutSuffix) 11383 ? ' másodperc' 11384 : ' másodperce'; 11385 case 'm': 11386 return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); 11387 case 'mm': 11388 return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); 11389 case 'h': 11390 return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); 11391 case 'hh': 11392 return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); 11393 case 'd': 11394 return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); 11395 case 'dd': 11396 return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); 11397 case 'M': 11398 return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); 11399 case 'MM': 11400 return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); 11401 case 'y': 11402 return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); 11403 case 'yy': 11404 return num + (isFuture || withoutSuffix ? ' év' : ' éve'); 11405 } 11406 return ''; 11407 } 11408 function week(isFuture) { 11409 return ( 11410 (isFuture ? '' : '[múlt] ') + 11411 '[' + 11412 weekEndings[this.day()] + 11413 '] LT[-kor]' 11414 ); 11415 } 11416 11417 hooks.defineLocale('hu', { 11418 months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split( 11419 '_' 11420 ), 11421 monthsShort: 11422 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split( 11423 '_' 11424 ), 11425 monthsParseExact: true, 11426 weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), 11427 weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), 11428 weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'), 11429 longDateFormat: { 11430 LT: 'H:mm', 11431 LTS: 'H:mm:ss', 11432 L: 'YYYY.MM.DD.', 11433 LL: 'YYYY. MMMM D.', 11434 LLL: 'YYYY. MMMM D. H:mm', 11435 LLLL: 'YYYY. MMMM D., dddd H:mm', 11436 }, 11437 meridiemParse: /de|du/i, 11438 isPM: function (input) { 11439 return input.charAt(1).toLowerCase() === 'u'; 11440 }, 11441 meridiem: function (hours, minutes, isLower) { 11442 if (hours < 12) { 11443 return isLower === true ? 'de' : 'DE'; 11444 } else { 11445 return isLower === true ? 'du' : 'DU'; 11446 } 11447 }, 11448 calendar: { 11449 sameDay: '[ma] LT[-kor]', 11450 nextDay: '[holnap] LT[-kor]', 11451 nextWeek: function () { 11452 return week.call(this, true); 11453 }, 11454 lastDay: '[tegnap] LT[-kor]', 11455 lastWeek: function () { 11456 return week.call(this, false); 11457 }, 11458 sameElse: 'L', 11459 }, 11460 relativeTime: { 11461 future: '%s múlva', 11462 past: '%s', 11463 s: translate$4, 11464 ss: translate$4, 11465 m: translate$4, 11466 mm: translate$4, 11467 h: translate$4, 11468 hh: translate$4, 11469 d: translate$4, 11470 dd: translate$4, 11471 M: translate$4, 11472 MM: translate$4, 11473 y: translate$4, 11474 yy: translate$4, 11475 }, 11476 dayOfMonthOrdinalParse: /\d{1,2}\./, 11477 ordinal: '%d.', 11478 week: { 11479 dow: 1, // Monday is the first day of the week. 11480 doy: 4, // The week that contains Jan 4th is the first week of the year. 11481 }, 11482 }); 11483 11484 //! moment.js locale configuration 11485 11486 hooks.defineLocale('hy-am', { 11487 months: { 11488 format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split( 11489 '_' 11490 ), 11491 standalone: 11492 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split( 11493 '_' 11494 ), 11495 }, 11496 monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), 11497 weekdays: 11498 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split( 11499 '_' 11500 ), 11501 weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), 11502 weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), 11503 longDateFormat: { 11504 LT: 'HH:mm', 11505 LTS: 'HH:mm:ss', 11506 L: 'DD.MM.YYYY', 11507 LL: 'D MMMM YYYY թ.', 11508 LLL: 'D MMMM YYYY թ., HH:mm', 11509 LLLL: 'dddd, D MMMM YYYY թ., HH:mm', 11510 }, 11511 calendar: { 11512 sameDay: '[այսօր] LT', 11513 nextDay: '[վաղը] LT', 11514 lastDay: '[երեկ] LT', 11515 nextWeek: function () { 11516 return 'dddd [օրը ժամը] LT'; 11517 }, 11518 lastWeek: function () { 11519 return '[անցած] dddd [օրը ժամը] LT'; 11520 }, 11521 sameElse: 'L', 11522 }, 11523 relativeTime: { 11524 future: '%s հետո', 11525 past: '%s առաջ', 11526 s: 'մի քանի վայրկյան', 11527 ss: '%d վայրկյան', 11528 m: 'րոպե', 11529 mm: '%d րոպե', 11530 h: 'ժամ', 11531 hh: '%d ժամ', 11532 d: 'օր', 11533 dd: '%d օր', 11534 M: 'ամիս', 11535 MM: '%d ամիս', 11536 y: 'տարի', 11537 yy: '%d տարի', 11538 }, 11539 meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, 11540 isPM: function (input) { 11541 return /^(ցերեկվա|երեկոյան)$/.test(input); 11542 }, 11543 meridiem: function (hour) { 11544 if (hour < 4) { 11545 return 'գիշերվա'; 11546 } else if (hour < 12) { 11547 return 'առավոտվա'; 11548 } else if (hour < 17) { 11549 return 'ցերեկվա'; 11550 } else { 11551 return 'երեկոյան'; 11552 } 11553 }, 11554 dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/, 11555 ordinal: function (number, period) { 11556 switch (period) { 11557 case 'DDD': 11558 case 'w': 11559 case 'W': 11560 case 'DDDo': 11561 if (number === 1) { 11562 return number + '-ին'; 11563 } 11564 return number + '-րդ'; 11565 default: 11566 return number; 11567 } 11568 }, 11569 week: { 11570 dow: 1, // Monday is the first day of the week. 11571 doy: 7, // The week that contains Jan 7th is the first week of the year. 11572 }, 11573 }); 11574 11575 //! moment.js locale configuration 11576 11577 hooks.defineLocale('id', { 11578 months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split( 11579 '_' 11580 ), 11581 monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'), 11582 weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), 11583 weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), 11584 weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), 11585 longDateFormat: { 11586 LT: 'HH.mm', 11587 LTS: 'HH.mm.ss', 11588 L: 'DD/MM/YYYY', 11589 LL: 'D MMMM YYYY', 11590 LLL: 'D MMMM YYYY [pukul] HH.mm', 11591 LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', 11592 }, 11593 meridiemParse: /pagi|siang|sore|malam/, 11594 meridiemHour: function (hour, meridiem) { 11595 if (hour === 12) { 11596 hour = 0; 11597 } 11598 if (meridiem === 'pagi') { 11599 return hour; 11600 } else if (meridiem === 'siang') { 11601 return hour >= 11 ? hour : hour + 12; 11602 } else if (meridiem === 'sore' || meridiem === 'malam') { 11603 return hour + 12; 11604 } 11605 }, 11606 meridiem: function (hours, minutes, isLower) { 11607 if (hours < 11) { 11608 return 'pagi'; 11609 } else if (hours < 15) { 11610 return 'siang'; 11611 } else if (hours < 19) { 11612 return 'sore'; 11613 } else { 11614 return 'malam'; 11615 } 11616 }, 11617 calendar: { 11618 sameDay: '[Hari ini pukul] LT', 11619 nextDay: '[Besok pukul] LT', 11620 nextWeek: 'dddd [pukul] LT', 11621 lastDay: '[Kemarin pukul] LT', 11622 lastWeek: 'dddd [lalu pukul] LT', 11623 sameElse: 'L', 11624 }, 11625 relativeTime: { 11626 future: 'dalam %s', 11627 past: '%s yang lalu', 11628 s: 'beberapa detik', 11629 ss: '%d detik', 11630 m: 'semenit', 11631 mm: '%d menit', 11632 h: 'sejam', 11633 hh: '%d jam', 11634 d: 'sehari', 11635 dd: '%d hari', 11636 M: 'sebulan', 11637 MM: '%d bulan', 11638 y: 'setahun', 11639 yy: '%d tahun', 11640 }, 11641 week: { 11642 dow: 0, // Sunday is the first day of the week. 11643 doy: 6, // The week that contains Jan 6th is the first week of the year. 11644 }, 11645 }); 11646 11647 //! moment.js locale configuration 11648 11649 function plural$2(n) { 11650 if (n % 100 === 11) { 11651 return true; 11652 } else if (n % 10 === 1) { 11653 return false; 11654 } 11655 return true; 11656 } 11657 function translate$5(number, withoutSuffix, key, isFuture) { 11658 var result = number + ' '; 11659 switch (key) { 11660 case 's': 11661 return withoutSuffix || isFuture 11662 ? 'nokkrar sekúndur' 11663 : 'nokkrum sekúndum'; 11664 case 'ss': 11665 if (plural$2(number)) { 11666 return ( 11667 result + 11668 (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum') 11669 ); 11670 } 11671 return result + 'sekúnda'; 11672 case 'm': 11673 return withoutSuffix ? 'mínúta' : 'mínútu'; 11674 case 'mm': 11675 if (plural$2(number)) { 11676 return ( 11677 result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum') 11678 ); 11679 } else if (withoutSuffix) { 11680 return result + 'mínúta'; 11681 } 11682 return result + 'mínútu'; 11683 case 'hh': 11684 if (plural$2(number)) { 11685 return ( 11686 result + 11687 (withoutSuffix || isFuture 11688 ? 'klukkustundir' 11689 : 'klukkustundum') 11690 ); 11691 } 11692 return result + 'klukkustund'; 11693 case 'd': 11694 if (withoutSuffix) { 11695 return 'dagur'; 11696 } 11697 return isFuture ? 'dag' : 'degi'; 11698 case 'dd': 11699 if (plural$2(number)) { 11700 if (withoutSuffix) { 11701 return result + 'dagar'; 11702 } 11703 return result + (isFuture ? 'daga' : 'dögum'); 11704 } else if (withoutSuffix) { 11705 return result + 'dagur'; 11706 } 11707 return result + (isFuture ? 'dag' : 'degi'); 11708 case 'M': 11709 if (withoutSuffix) { 11710 return 'mánuður'; 11711 } 11712 return isFuture ? 'mánuð' : 'mánuði'; 11713 case 'MM': 11714 if (plural$2(number)) { 11715 if (withoutSuffix) { 11716 return result + 'mánuðir'; 11717 } 11718 return result + (isFuture ? 'mánuði' : 'mánuðum'); 11719 } else if (withoutSuffix) { 11720 return result + 'mánuður'; 11721 } 11722 return result + (isFuture ? 'mánuð' : 'mánuði'); 11723 case 'y': 11724 return withoutSuffix || isFuture ? 'ár' : 'ári'; 11725 case 'yy': 11726 if (plural$2(number)) { 11727 return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); 11728 } 11729 return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); 11730 } 11731 } 11732 11733 hooks.defineLocale('is', { 11734 months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split( 11735 '_' 11736 ), 11737 monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), 11738 weekdays: 11739 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split( 11740 '_' 11741 ), 11742 weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'), 11743 weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), 11744 longDateFormat: { 11745 LT: 'H:mm', 11746 LTS: 'H:mm:ss', 11747 L: 'DD.MM.YYYY', 11748 LL: 'D. MMMM YYYY', 11749 LLL: 'D. MMMM YYYY [kl.] H:mm', 11750 LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm', 11751 }, 11752 calendar: { 11753 sameDay: '[í dag kl.] LT', 11754 nextDay: '[á morgun kl.] LT', 11755 nextWeek: 'dddd [kl.] LT', 11756 lastDay: '[í gær kl.] LT', 11757 lastWeek: '[síðasta] dddd [kl.] LT', 11758 sameElse: 'L', 11759 }, 11760 relativeTime: { 11761 future: 'eftir %s', 11762 past: 'fyrir %s síðan', 11763 s: translate$5, 11764 ss: translate$5, 11765 m: translate$5, 11766 mm: translate$5, 11767 h: 'klukkustund', 11768 hh: translate$5, 11769 d: translate$5, 11770 dd: translate$5, 11771 M: translate$5, 11772 MM: translate$5, 11773 y: translate$5, 11774 yy: translate$5, 11775 }, 11776 dayOfMonthOrdinalParse: /\d{1,2}\./, 11777 ordinal: '%d.', 11778 week: { 11779 dow: 1, // Monday is the first day of the week. 11780 doy: 4, // The week that contains Jan 4th is the first week of the year. 11781 }, 11782 }); 11783 11784 //! moment.js locale configuration 11785 11786 hooks.defineLocale('it-ch', { 11787 months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split( 11788 '_' 11789 ), 11790 monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), 11791 weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split( 11792 '_' 11793 ), 11794 weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), 11795 weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), 11796 longDateFormat: { 11797 LT: 'HH:mm', 11798 LTS: 'HH:mm:ss', 11799 L: 'DD.MM.YYYY', 11800 LL: 'D MMMM YYYY', 11801 LLL: 'D MMMM YYYY HH:mm', 11802 LLLL: 'dddd D MMMM YYYY HH:mm', 11803 }, 11804 calendar: { 11805 sameDay: '[Oggi alle] LT', 11806 nextDay: '[Domani alle] LT', 11807 nextWeek: 'dddd [alle] LT', 11808 lastDay: '[Ieri alle] LT', 11809 lastWeek: function () { 11810 switch (this.day()) { 11811 case 0: 11812 return '[la scorsa] dddd [alle] LT'; 11813 default: 11814 return '[lo scorso] dddd [alle] LT'; 11815 } 11816 }, 11817 sameElse: 'L', 11818 }, 11819 relativeTime: { 11820 future: function (s) { 11821 return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s; 11822 }, 11823 past: '%s fa', 11824 s: 'alcuni secondi', 11825 ss: '%d secondi', 11826 m: 'un minuto', 11827 mm: '%d minuti', 11828 h: "un'ora", 11829 hh: '%d ore', 11830 d: 'un giorno', 11831 dd: '%d giorni', 11832 M: 'un mese', 11833 MM: '%d mesi', 11834 y: 'un anno', 11835 yy: '%d anni', 11836 }, 11837 dayOfMonthOrdinalParse: /\d{1,2}º/, 11838 ordinal: '%dº', 11839 week: { 11840 dow: 1, // Monday is the first day of the week. 11841 doy: 4, // The week that contains Jan 4th is the first week of the year. 11842 }, 11843 }); 11844 11845 //! moment.js locale configuration 11846 11847 hooks.defineLocale('it', { 11848 months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split( 11849 '_' 11850 ), 11851 monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), 11852 weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split( 11853 '_' 11854 ), 11855 weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), 11856 weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), 11857 longDateFormat: { 11858 LT: 'HH:mm', 11859 LTS: 'HH:mm:ss', 11860 L: 'DD/MM/YYYY', 11861 LL: 'D MMMM YYYY', 11862 LLL: 'D MMMM YYYY HH:mm', 11863 LLLL: 'dddd D MMMM YYYY HH:mm', 11864 }, 11865 calendar: { 11866 sameDay: function () { 11867 return ( 11868 '[Oggi a' + 11869 (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + 11870 ']LT' 11871 ); 11872 }, 11873 nextDay: function () { 11874 return ( 11875 '[Domani a' + 11876 (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + 11877 ']LT' 11878 ); 11879 }, 11880 nextWeek: function () { 11881 return ( 11882 'dddd [a' + 11883 (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + 11884 ']LT' 11885 ); 11886 }, 11887 lastDay: function () { 11888 return ( 11889 '[Ieri a' + 11890 (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + 11891 ']LT' 11892 ); 11893 }, 11894 lastWeek: function () { 11895 switch (this.day()) { 11896 case 0: 11897 return ( 11898 '[La scorsa] dddd [a' + 11899 (this.hours() > 1 11900 ? 'lle ' 11901 : this.hours() === 0 11902 ? ' ' 11903 : "ll'") + 11904 ']LT' 11905 ); 11906 default: 11907 return ( 11908 '[Lo scorso] dddd [a' + 11909 (this.hours() > 1 11910 ? 'lle ' 11911 : this.hours() === 0 11912 ? ' ' 11913 : "ll'") + 11914 ']LT' 11915 ); 11916 } 11917 }, 11918 sameElse: 'L', 11919 }, 11920 relativeTime: { 11921 future: 'tra %s', 11922 past: '%s fa', 11923 s: 'alcuni secondi', 11924 ss: '%d secondi', 11925 m: 'un minuto', 11926 mm: '%d minuti', 11927 h: "un'ora", 11928 hh: '%d ore', 11929 d: 'un giorno', 11930 dd: '%d giorni', 11931 w: 'una settimana', 11932 ww: '%d settimane', 11933 M: 'un mese', 11934 MM: '%d mesi', 11935 y: 'un anno', 11936 yy: '%d anni', 11937 }, 11938 dayOfMonthOrdinalParse: /\d{1,2}º/, 11939 ordinal: '%dº', 11940 week: { 11941 dow: 1, // Monday is the first day of the week. 11942 doy: 4, // The week that contains Jan 4th is the first week of the year. 11943 }, 11944 }); 11945 11946 //! moment.js locale configuration 11947 11948 hooks.defineLocale('ja', { 11949 eras: [ 11950 { 11951 since: '2019-05-01', 11952 offset: 1, 11953 name: '令和', 11954 narrow: '㋿', 11955 abbr: 'R', 11956 }, 11957 { 11958 since: '1989-01-08', 11959 until: '2019-04-30', 11960 offset: 1, 11961 name: '平成', 11962 narrow: '㍻', 11963 abbr: 'H', 11964 }, 11965 { 11966 since: '1926-12-25', 11967 until: '1989-01-07', 11968 offset: 1, 11969 name: '昭和', 11970 narrow: '㍼', 11971 abbr: 'S', 11972 }, 11973 { 11974 since: '1912-07-30', 11975 until: '1926-12-24', 11976 offset: 1, 11977 name: '大正', 11978 narrow: '㍽', 11979 abbr: 'T', 11980 }, 11981 { 11982 since: '1873-01-01', 11983 until: '1912-07-29', 11984 offset: 6, 11985 name: '明治', 11986 narrow: '㍾', 11987 abbr: 'M', 11988 }, 11989 { 11990 since: '0001-01-01', 11991 until: '1873-12-31', 11992 offset: 1, 11993 name: '西暦', 11994 narrow: 'AD', 11995 abbr: 'AD', 11996 }, 11997 { 11998 since: '0000-12-31', 11999 until: -Infinity, 12000 offset: 1, 12001 name: '紀元前', 12002 narrow: 'BC', 12003 abbr: 'BC', 12004 }, 12005 ], 12006 eraYearOrdinalRegex: /(元|\d+)年/, 12007 eraYearOrdinalParse: function (input, match) { 12008 return match[1] === '元' ? 1 : parseInt(match[1] || input, 10); 12009 }, 12010 months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), 12011 monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( 12012 '_' 12013 ), 12014 weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), 12015 weekdaysShort: '日_月_火_水_木_金_土'.split('_'), 12016 weekdaysMin: '日_月_火_水_木_金_土'.split('_'), 12017 longDateFormat: { 12018 LT: 'HH:mm', 12019 LTS: 'HH:mm:ss', 12020 L: 'YYYY/MM/DD', 12021 LL: 'YYYY年M月D日', 12022 LLL: 'YYYY年M月D日 HH:mm', 12023 LLLL: 'YYYY年M月D日 dddd HH:mm', 12024 l: 'YYYY/MM/DD', 12025 ll: 'YYYY年M月D日', 12026 lll: 'YYYY年M月D日 HH:mm', 12027 llll: 'YYYY年M月D日(ddd) HH:mm', 12028 }, 12029 meridiemParse: /午前|午後/i, 12030 isPM: function (input) { 12031 return input === '午後'; 12032 }, 12033 meridiem: function (hour, minute, isLower) { 12034 if (hour < 12) { 12035 return '午前'; 12036 } else { 12037 return '午後'; 12038 } 12039 }, 12040 calendar: { 12041 sameDay: '[今日] LT', 12042 nextDay: '[明日] LT', 12043 nextWeek: function (now) { 12044 if (now.week() !== this.week()) { 12045 return '[来週]dddd LT'; 12046 } else { 12047 return 'dddd LT'; 12048 } 12049 }, 12050 lastDay: '[昨日] LT', 12051 lastWeek: function (now) { 12052 if (this.week() !== now.week()) { 12053 return '[先週]dddd LT'; 12054 } else { 12055 return 'dddd LT'; 12056 } 12057 }, 12058 sameElse: 'L', 12059 }, 12060 dayOfMonthOrdinalParse: /\d{1,2}日/, 12061 ordinal: function (number, period) { 12062 switch (period) { 12063 case 'y': 12064 return number === 1 ? '元年' : number + '年'; 12065 case 'd': 12066 case 'D': 12067 case 'DDD': 12068 return number + '日'; 12069 default: 12070 return number; 12071 } 12072 }, 12073 relativeTime: { 12074 future: '%s後', 12075 past: '%s前', 12076 s: '数秒', 12077 ss: '%d秒', 12078 m: '1分', 12079 mm: '%d分', 12080 h: '1時間', 12081 hh: '%d時間', 12082 d: '1日', 12083 dd: '%d日', 12084 M: '1ヶ月', 12085 MM: '%dヶ月', 12086 y: '1年', 12087 yy: '%d年', 12088 }, 12089 }); 12090 12091 //! moment.js locale configuration 12092 12093 hooks.defineLocale('jv', { 12094 months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split( 12095 '_' 12096 ), 12097 monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), 12098 weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), 12099 weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), 12100 weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), 12101 longDateFormat: { 12102 LT: 'HH.mm', 12103 LTS: 'HH.mm.ss', 12104 L: 'DD/MM/YYYY', 12105 LL: 'D MMMM YYYY', 12106 LLL: 'D MMMM YYYY [pukul] HH.mm', 12107 LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', 12108 }, 12109 meridiemParse: /enjing|siyang|sonten|ndalu/, 12110 meridiemHour: function (hour, meridiem) { 12111 if (hour === 12) { 12112 hour = 0; 12113 } 12114 if (meridiem === 'enjing') { 12115 return hour; 12116 } else if (meridiem === 'siyang') { 12117 return hour >= 11 ? hour : hour + 12; 12118 } else if (meridiem === 'sonten' || meridiem === 'ndalu') { 12119 return hour + 12; 12120 } 12121 }, 12122 meridiem: function (hours, minutes, isLower) { 12123 if (hours < 11) { 12124 return 'enjing'; 12125 } else if (hours < 15) { 12126 return 'siyang'; 12127 } else if (hours < 19) { 12128 return 'sonten'; 12129 } else { 12130 return 'ndalu'; 12131 } 12132 }, 12133 calendar: { 12134 sameDay: '[Dinten puniko pukul] LT', 12135 nextDay: '[Mbenjang pukul] LT', 12136 nextWeek: 'dddd [pukul] LT', 12137 lastDay: '[Kala wingi pukul] LT', 12138 lastWeek: 'dddd [kepengker pukul] LT', 12139 sameElse: 'L', 12140 }, 12141 relativeTime: { 12142 future: 'wonten ing %s', 12143 past: '%s ingkang kepengker', 12144 s: 'sawetawis detik', 12145 ss: '%d detik', 12146 m: 'setunggal menit', 12147 mm: '%d menit', 12148 h: 'setunggal jam', 12149 hh: '%d jam', 12150 d: 'sedinten', 12151 dd: '%d dinten', 12152 M: 'sewulan', 12153 MM: '%d wulan', 12154 y: 'setaun', 12155 yy: '%d taun', 12156 }, 12157 week: { 12158 dow: 1, // Monday is the first day of the week. 12159 doy: 7, // The week that contains Jan 7th is the first week of the year. 12160 }, 12161 }); 12162 12163 //! moment.js locale configuration 12164 12165 hooks.defineLocale('ka', { 12166 months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split( 12167 '_' 12168 ), 12169 monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), 12170 weekdays: { 12171 standalone: 12172 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split( 12173 '_' 12174 ), 12175 format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split( 12176 '_' 12177 ), 12178 isFormat: /(წინა|შემდეგ)/, 12179 }, 12180 weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), 12181 weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), 12182 longDateFormat: { 12183 LT: 'HH:mm', 12184 LTS: 'HH:mm:ss', 12185 L: 'DD/MM/YYYY', 12186 LL: 'D MMMM YYYY', 12187 LLL: 'D MMMM YYYY HH:mm', 12188 LLLL: 'dddd, D MMMM YYYY HH:mm', 12189 }, 12190 calendar: { 12191 sameDay: '[დღეს] LT[-ზე]', 12192 nextDay: '[ხვალ] LT[-ზე]', 12193 lastDay: '[გუშინ] LT[-ზე]', 12194 nextWeek: '[შემდეგ] dddd LT[-ზე]', 12195 lastWeek: '[წინა] dddd LT-ზე', 12196 sameElse: 'L', 12197 }, 12198 relativeTime: { 12199 future: function (s) { 12200 return s.replace( 12201 /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, 12202 function ($0, $1, $2) { 12203 return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში'; 12204 } 12205 ); 12206 }, 12207 past: function (s) { 12208 if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) { 12209 return s.replace(/(ი|ე)$/, 'ის წინ'); 12210 } 12211 if (/წელი/.test(s)) { 12212 return s.replace(/წელი$/, 'წლის წინ'); 12213 } 12214 return s; 12215 }, 12216 s: 'რამდენიმე წამი', 12217 ss: '%d წამი', 12218 m: 'წუთი', 12219 mm: '%d წუთი', 12220 h: 'საათი', 12221 hh: '%d საათი', 12222 d: 'დღე', 12223 dd: '%d დღე', 12224 M: 'თვე', 12225 MM: '%d თვე', 12226 y: 'წელი', 12227 yy: '%d წელი', 12228 }, 12229 dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, 12230 ordinal: function (number) { 12231 if (number === 0) { 12232 return number; 12233 } 12234 if (number === 1) { 12235 return number + '-ლი'; 12236 } 12237 if ( 12238 number < 20 || 12239 (number <= 100 && number % 20 === 0) || 12240 number % 100 === 0 12241 ) { 12242 return 'მე-' + number; 12243 } 12244 return number + '-ე'; 12245 }, 12246 week: { 12247 dow: 1, 12248 doy: 7, 12249 }, 12250 }); 12251 12252 //! moment.js locale configuration 12253 12254 var suffixes$1 = { 12255 0: '-ші', 12256 1: '-ші', 12257 2: '-ші', 12258 3: '-ші', 12259 4: '-ші', 12260 5: '-ші', 12261 6: '-шы', 12262 7: '-ші', 12263 8: '-ші', 12264 9: '-шы', 12265 10: '-шы', 12266 20: '-шы', 12267 30: '-шы', 12268 40: '-шы', 12269 50: '-ші', 12270 60: '-шы', 12271 70: '-ші', 12272 80: '-ші', 12273 90: '-шы', 12274 100: '-ші', 12275 }; 12276 12277 hooks.defineLocale('kk', { 12278 months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split( 12279 '_' 12280 ), 12281 monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'), 12282 weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split( 12283 '_' 12284 ), 12285 weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'), 12286 weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'), 12287 longDateFormat: { 12288 LT: 'HH:mm', 12289 LTS: 'HH:mm:ss', 12290 L: 'DD.MM.YYYY', 12291 LL: 'D MMMM YYYY', 12292 LLL: 'D MMMM YYYY HH:mm', 12293 LLLL: 'dddd, D MMMM YYYY HH:mm', 12294 }, 12295 calendar: { 12296 sameDay: '[Бүгін сағат] LT', 12297 nextDay: '[Ертең сағат] LT', 12298 nextWeek: 'dddd [сағат] LT', 12299 lastDay: '[Кеше сағат] LT', 12300 lastWeek: '[Өткен аптаның] dddd [сағат] LT', 12301 sameElse: 'L', 12302 }, 12303 relativeTime: { 12304 future: '%s ішінде', 12305 past: '%s бұрын', 12306 s: 'бірнеше секунд', 12307 ss: '%d секунд', 12308 m: 'бір минут', 12309 mm: '%d минут', 12310 h: 'бір сағат', 12311 hh: '%d сағат', 12312 d: 'бір күн', 12313 dd: '%d күн', 12314 M: 'бір ай', 12315 MM: '%d ай', 12316 y: 'бір жыл', 12317 yy: '%d жыл', 12318 }, 12319 dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/, 12320 ordinal: function (number) { 12321 var a = number % 10, 12322 b = number >= 100 ? 100 : null; 12323 return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]); 12324 }, 12325 week: { 12326 dow: 1, // Monday is the first day of the week. 12327 doy: 7, // The week that contains Jan 7th is the first week of the year. 12328 }, 12329 }); 12330 12331 //! moment.js locale configuration 12332 12333 var symbolMap$a = { 12334 1: '១', 12335 2: '២', 12336 3: '៣', 12337 4: '៤', 12338 5: '៥', 12339 6: '៦', 12340 7: '៧', 12341 8: '៨', 12342 9: '៩', 12343 0: '០', 12344 }, 12345 numberMap$9 = { 12346 '១': '1', 12347 '២': '2', 12348 '៣': '3', 12349 '៤': '4', 12350 '៥': '5', 12351 '៦': '6', 12352 '៧': '7', 12353 '៨': '8', 12354 '៩': '9', 12355 '០': '0', 12356 }; 12357 12358 hooks.defineLocale('km', { 12359 months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split( 12360 '_' 12361 ), 12362 monthsShort: 12363 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split( 12364 '_' 12365 ), 12366 weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), 12367 weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'), 12368 weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'), 12369 weekdaysParseExact: true, 12370 longDateFormat: { 12371 LT: 'HH:mm', 12372 LTS: 'HH:mm:ss', 12373 L: 'DD/MM/YYYY', 12374 LL: 'D MMMM YYYY', 12375 LLL: 'D MMMM YYYY HH:mm', 12376 LLLL: 'dddd, D MMMM YYYY HH:mm', 12377 }, 12378 meridiemParse: /ព្រឹក|ល្ងាច/, 12379 isPM: function (input) { 12380 return input === 'ល្ងាច'; 12381 }, 12382 meridiem: function (hour, minute, isLower) { 12383 if (hour < 12) { 12384 return 'ព្រឹក'; 12385 } else { 12386 return 'ល្ងាច'; 12387 } 12388 }, 12389 calendar: { 12390 sameDay: '[ថ្ងៃនេះ ម៉ោង] LT', 12391 nextDay: '[ស្អែក ម៉ោង] LT', 12392 nextWeek: 'dddd [ម៉ោង] LT', 12393 lastDay: '[ម្សិលមិញ ម៉ោង] LT', 12394 lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', 12395 sameElse: 'L', 12396 }, 12397 relativeTime: { 12398 future: '%sទៀត', 12399 past: '%sមុន', 12400 s: 'ប៉ុន្មានវិនាទី', 12401 ss: '%d វិនាទី', 12402 m: 'មួយនាទី', 12403 mm: '%d នាទី', 12404 h: 'មួយម៉ោង', 12405 hh: '%d ម៉ោង', 12406 d: 'មួយថ្ងៃ', 12407 dd: '%d ថ្ងៃ', 12408 M: 'មួយខែ', 12409 MM: '%d ខែ', 12410 y: 'មួយឆ្នាំ', 12411 yy: '%d ឆ្នាំ', 12412 }, 12413 dayOfMonthOrdinalParse: /ទី\d{1,2}/, 12414 ordinal: 'ទី%d', 12415 preparse: function (string) { 12416 return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) { 12417 return numberMap$9[match]; 12418 }); 12419 }, 12420 postformat: function (string) { 12421 return string.replace(/\d/g, function (match) { 12422 return symbolMap$a[match]; 12423 }); 12424 }, 12425 week: { 12426 dow: 1, // Monday is the first day of the week. 12427 doy: 4, // The week that contains Jan 4th is the first week of the year. 12428 }, 12429 }); 12430 12431 //! moment.js locale configuration 12432 12433 var symbolMap$b = { 12434 1: '೧', 12435 2: '೨', 12436 3: '೩', 12437 4: '೪', 12438 5: '೫', 12439 6: '೬', 12440 7: '೭', 12441 8: '೮', 12442 9: '೯', 12443 0: '೦', 12444 }, 12445 numberMap$a = { 12446 '೧': '1', 12447 '೨': '2', 12448 '೩': '3', 12449 '೪': '4', 12450 '೫': '5', 12451 '೬': '6', 12452 '೭': '7', 12453 '೮': '8', 12454 '೯': '9', 12455 '೦': '0', 12456 }; 12457 12458 hooks.defineLocale('kn', { 12459 months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split( 12460 '_' 12461 ), 12462 monthsShort: 12463 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split( 12464 '_' 12465 ), 12466 monthsParseExact: true, 12467 weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split( 12468 '_' 12469 ), 12470 weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'), 12471 weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'), 12472 longDateFormat: { 12473 LT: 'A h:mm', 12474 LTS: 'A h:mm:ss', 12475 L: 'DD/MM/YYYY', 12476 LL: 'D MMMM YYYY', 12477 LLL: 'D MMMM YYYY, A h:mm', 12478 LLLL: 'dddd, D MMMM YYYY, A h:mm', 12479 }, 12480 calendar: { 12481 sameDay: '[ಇಂದು] LT', 12482 nextDay: '[ನಾಳೆ] LT', 12483 nextWeek: 'dddd, LT', 12484 lastDay: '[ನಿನ್ನೆ] LT', 12485 lastWeek: '[ಕೊನೆಯ] dddd, LT', 12486 sameElse: 'L', 12487 }, 12488 relativeTime: { 12489 future: '%s ನಂತರ', 12490 past: '%s ಹಿಂದೆ', 12491 s: 'ಕೆಲವು ಕ್ಷಣಗಳು', 12492 ss: '%d ಸೆಕೆಂಡುಗಳು', 12493 m: 'ಒಂದು ನಿಮಿಷ', 12494 mm: '%d ನಿಮಿಷ', 12495 h: 'ಒಂದು ಗಂಟೆ', 12496 hh: '%d ಗಂಟೆ', 12497 d: 'ಒಂದು ದಿನ', 12498 dd: '%d ದಿನ', 12499 M: 'ಒಂದು ತಿಂಗಳು', 12500 MM: '%d ತಿಂಗಳು', 12501 y: 'ಒಂದು ವರ್ಷ', 12502 yy: '%d ವರ್ಷ', 12503 }, 12504 preparse: function (string) { 12505 return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) { 12506 return numberMap$a[match]; 12507 }); 12508 }, 12509 postformat: function (string) { 12510 return string.replace(/\d/g, function (match) { 12511 return symbolMap$b[match]; 12512 }); 12513 }, 12514 meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/, 12515 meridiemHour: function (hour, meridiem) { 12516 if (hour === 12) { 12517 hour = 0; 12518 } 12519 if (meridiem === 'ರಾತ್ರಿ') { 12520 return hour < 4 ? hour : hour + 12; 12521 } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') { 12522 return hour; 12523 } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') { 12524 return hour >= 10 ? hour : hour + 12; 12525 } else if (meridiem === 'ಸಂಜೆ') { 12526 return hour + 12; 12527 } 12528 }, 12529 meridiem: function (hour, minute, isLower) { 12530 if (hour < 4) { 12531 return 'ರಾತ್ರಿ'; 12532 } else if (hour < 10) { 12533 return 'ಬೆಳಿಗ್ಗೆ'; 12534 } else if (hour < 17) { 12535 return 'ಮಧ್ಯಾಹ್ನ'; 12536 } else if (hour < 20) { 12537 return 'ಸಂಜೆ'; 12538 } else { 12539 return 'ರಾತ್ರಿ'; 12540 } 12541 }, 12542 dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/, 12543 ordinal: function (number) { 12544 return number + 'ನೇ'; 12545 }, 12546 week: { 12547 dow: 0, // Sunday is the first day of the week. 12548 doy: 6, // The week that contains Jan 6th is the first week of the year. 12549 }, 12550 }); 12551 12552 //! moment.js locale configuration 12553 12554 hooks.defineLocale('ko', { 12555 months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), 12556 monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split( 12557 '_' 12558 ), 12559 weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), 12560 weekdaysShort: '일_월_화_수_목_금_토'.split('_'), 12561 weekdaysMin: '일_월_화_수_목_금_토'.split('_'), 12562 longDateFormat: { 12563 LT: 'A h:mm', 12564 LTS: 'A h:mm:ss', 12565 L: 'YYYY.MM.DD.', 12566 LL: 'YYYY년 MMMM D일', 12567 LLL: 'YYYY년 MMMM D일 A h:mm', 12568 LLLL: 'YYYY년 MMMM D일 dddd A h:mm', 12569 l: 'YYYY.MM.DD.', 12570 ll: 'YYYY년 MMMM D일', 12571 lll: 'YYYY년 MMMM D일 A h:mm', 12572 llll: 'YYYY년 MMMM D일 dddd A h:mm', 12573 }, 12574 calendar: { 12575 sameDay: '오늘 LT', 12576 nextDay: '내일 LT', 12577 nextWeek: 'dddd LT', 12578 lastDay: '어제 LT', 12579 lastWeek: '지난주 dddd LT', 12580 sameElse: 'L', 12581 }, 12582 relativeTime: { 12583 future: '%s 후', 12584 past: '%s 전', 12585 s: '몇 초', 12586 ss: '%d초', 12587 m: '1분', 12588 mm: '%d분', 12589 h: '한 시간', 12590 hh: '%d시간', 12591 d: '하루', 12592 dd: '%d일', 12593 M: '한 달', 12594 MM: '%d달', 12595 y: '일 년', 12596 yy: '%d년', 12597 }, 12598 dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/, 12599 ordinal: function (number, period) { 12600 switch (period) { 12601 case 'd': 12602 case 'D': 12603 case 'DDD': 12604 return number + '일'; 12605 case 'M': 12606 return number + '월'; 12607 case 'w': 12608 case 'W': 12609 return number + '주'; 12610 default: 12611 return number; 12612 } 12613 }, 12614 meridiemParse: /오전|오후/, 12615 isPM: function (token) { 12616 return token === '오후'; 12617 }, 12618 meridiem: function (hour, minute, isUpper) { 12619 return hour < 12 ? '오전' : '오후'; 12620 }, 12621 }); 12622 12623 //! moment.js locale configuration 12624 12625 function processRelativeTime$7(num, withoutSuffix, key, isFuture) { 12626 var format = { 12627 s: ['çend sanîye', 'çend sanîyeyan'], 12628 ss: [num + ' sanîye', num + ' sanîyeyan'], 12629 m: ['deqîqeyek', 'deqîqeyekê'], 12630 mm: [num + ' deqîqe', num + ' deqîqeyan'], 12631 h: ['saetek', 'saetekê'], 12632 hh: [num + ' saet', num + ' saetan'], 12633 d: ['rojek', 'rojekê'], 12634 dd: [num + ' roj', num + ' rojan'], 12635 w: ['hefteyek', 'hefteyekê'], 12636 ww: [num + ' hefte', num + ' hefteyan'], 12637 M: ['mehek', 'mehekê'], 12638 MM: [num + ' meh', num + ' mehan'], 12639 y: ['salek', 'salekê'], 12640 yy: [num + ' sal', num + ' salan'], 12641 }; 12642 return withoutSuffix ? format[key][0] : format[key][1]; 12643 } 12644 // function obliqueNumSuffix(num) { 12645 // if(num.includes(':')) 12646 // num = parseInt(num.split(':')[0]); 12647 // else 12648 // num = parseInt(num); 12649 // return num == 0 || num % 10 == 1 ? 'ê' 12650 // : (num > 10 && num % 10 == 0 ? 'î' : 'an'); 12651 // } 12652 function ezafeNumSuffix(num) { 12653 num = '' + num; 12654 var l = num.substring(num.length - 1), 12655 ll = num.length > 1 ? num.substring(num.length - 2) : ''; 12656 if ( 12657 !(ll == 12 || ll == 13) && 12658 (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80') 12659 ) 12660 return 'yê'; 12661 return 'ê'; 12662 } 12663 12664 hooks.defineLocale('ku-kmr', { 12665 // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation) 12666 // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn' 12667 // But the names below are more well known and handy 12668 months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split( 12669 '_' 12670 ), 12671 monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'), 12672 monthsParseExact: true, 12673 weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'), 12674 weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'), 12675 weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'), 12676 meridiem: function (hours, minutes, isLower) { 12677 if (hours < 12) { 12678 return isLower ? 'bn' : 'BN'; 12679 } else { 12680 return isLower ? 'pn' : 'PN'; 12681 } 12682 }, 12683 meridiemParse: /bn|BN|pn|PN/, 12684 longDateFormat: { 12685 LT: 'HH:mm', 12686 LTS: 'HH:mm:ss', 12687 L: 'DD.MM.YYYY', 12688 LL: 'Do MMMM[a] YYYY[an]', 12689 LLL: 'Do MMMM[a] YYYY[an] HH:mm', 12690 LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm', 12691 ll: 'Do MMM[.] YYYY[an]', 12692 lll: 'Do MMM[.] YYYY[an] HH:mm', 12693 llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm', 12694 }, 12695 calendar: { 12696 sameDay: '[Îro di saet] LT [de]', 12697 nextDay: '[Sibê di saet] LT [de]', 12698 nextWeek: 'dddd [di saet] LT [de]', 12699 lastDay: '[Duh di saet] LT [de]', 12700 lastWeek: 'dddd[a borî di saet] LT [de]', 12701 sameElse: 'L', 12702 }, 12703 relativeTime: { 12704 future: 'di %s de', 12705 past: 'berî %s', 12706 s: processRelativeTime$7, 12707 ss: processRelativeTime$7, 12708 m: processRelativeTime$7, 12709 mm: processRelativeTime$7, 12710 h: processRelativeTime$7, 12711 hh: processRelativeTime$7, 12712 d: processRelativeTime$7, 12713 dd: processRelativeTime$7, 12714 w: processRelativeTime$7, 12715 ww: processRelativeTime$7, 12716 M: processRelativeTime$7, 12717 MM: processRelativeTime$7, 12718 y: processRelativeTime$7, 12719 yy: processRelativeTime$7, 12720 }, 12721 dayOfMonthOrdinalParse: /\d{1,2}(?:yê|ê|\.)/, 12722 ordinal: function (num, period) { 12723 var p = period.toLowerCase(); 12724 if (p.includes('w') || p.includes('m')) return num + '.'; 12725 12726 return num + ezafeNumSuffix(num); 12727 }, 12728 week: { 12729 dow: 1, // Monday is the first day of the week. 12730 doy: 4, // The week that contains Jan 4th is the first week of the year. 12731 }, 12732 }); 12733 12734 //! moment.js locale configuration 12735 12736 var symbolMap$c = { 12737 1: '١', 12738 2: '٢', 12739 3: '٣', 12740 4: '٤', 12741 5: '٥', 12742 6: '٦', 12743 7: '٧', 12744 8: '٨', 12745 9: '٩', 12746 0: '٠', 12747 }, 12748 numberMap$b = { 12749 '١': '1', 12750 '٢': '2', 12751 '٣': '3', 12752 '٤': '4', 12753 '٥': '5', 12754 '٦': '6', 12755 '٧': '7', 12756 '٨': '8', 12757 '٩': '9', 12758 '٠': '0', 12759 }, 12760 months$8 = [ 12761 'کانونی دووەم', 12762 'شوبات', 12763 'ئازار', 12764 'نیسان', 12765 'ئایار', 12766 'حوزەیران', 12767 'تەمموز', 12768 'ئاب', 12769 'ئەیلوول', 12770 'تشرینی یەكەم', 12771 'تشرینی دووەم', 12772 'كانونی یەکەم', 12773 ]; 12774 12775 hooks.defineLocale('ku', { 12776 months: months$8, 12777 monthsShort: months$8, 12778 weekdays: 12779 'یهكشهممه_دووشهممه_سێشهممه_چوارشهممه_پێنجشهممه_ههینی_شهممه'.split( 12780 '_' 12781 ), 12782 weekdaysShort: 12783 'یهكشهم_دووشهم_سێشهم_چوارشهم_پێنجشهم_ههینی_شهممه'.split('_'), 12784 weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'), 12785 weekdaysParseExact: true, 12786 longDateFormat: { 12787 LT: 'HH:mm', 12788 LTS: 'HH:mm:ss', 12789 L: 'DD/MM/YYYY', 12790 LL: 'D MMMM YYYY', 12791 LLL: 'D MMMM YYYY HH:mm', 12792 LLLL: 'dddd, D MMMM YYYY HH:mm', 12793 }, 12794 meridiemParse: /ئێواره|بهیانی/, 12795 isPM: function (input) { 12796 return /ئێواره/.test(input); 12797 }, 12798 meridiem: function (hour, minute, isLower) { 12799 if (hour < 12) { 12800 return 'بهیانی'; 12801 } else { 12802 return 'ئێواره'; 12803 } 12804 }, 12805 calendar: { 12806 sameDay: '[ئهمرۆ كاتژمێر] LT', 12807 nextDay: '[بهیانی كاتژمێر] LT', 12808 nextWeek: 'dddd [كاتژمێر] LT', 12809 lastDay: '[دوێنێ كاتژمێر] LT', 12810 lastWeek: 'dddd [كاتژمێر] LT', 12811 sameElse: 'L', 12812 }, 12813 relativeTime: { 12814 future: 'له %s', 12815 past: '%s', 12816 s: 'چهند چركهیهك', 12817 ss: 'چركه %d', 12818 m: 'یهك خولهك', 12819 mm: '%d خولهك', 12820 h: 'یهك كاتژمێر', 12821 hh: '%d كاتژمێر', 12822 d: 'یهك ڕۆژ', 12823 dd: '%d ڕۆژ', 12824 M: 'یهك مانگ', 12825 MM: '%d مانگ', 12826 y: 'یهك ساڵ', 12827 yy: '%d ساڵ', 12828 }, 12829 preparse: function (string) { 12830 return string 12831 .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { 12832 return numberMap$b[match]; 12833 }) 12834 .replace(/،/g, ','); 12835 }, 12836 postformat: function (string) { 12837 return string 12838 .replace(/\d/g, function (match) { 12839 return symbolMap$c[match]; 12840 }) 12841 .replace(/,/g, '،'); 12842 }, 12843 week: { 12844 dow: 6, // Saturday is the first day of the week. 12845 doy: 12, // The week that contains Jan 12th is the first week of the year. 12846 }, 12847 }); 12848 12849 //! moment.js locale configuration 12850 12851 var suffixes$2 = { 12852 0: '-чү', 12853 1: '-чи', 12854 2: '-чи', 12855 3: '-чү', 12856 4: '-чү', 12857 5: '-чи', 12858 6: '-чы', 12859 7: '-чи', 12860 8: '-чи', 12861 9: '-чу', 12862 10: '-чу', 12863 20: '-чы', 12864 30: '-чу', 12865 40: '-чы', 12866 50: '-чү', 12867 60: '-чы', 12868 70: '-чи', 12869 80: '-чи', 12870 90: '-чу', 12871 100: '-чү', 12872 }; 12873 12874 hooks.defineLocale('ky', { 12875 months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split( 12876 '_' 12877 ), 12878 monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split( 12879 '_' 12880 ), 12881 weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split( 12882 '_' 12883 ), 12884 weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'), 12885 weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'), 12886 longDateFormat: { 12887 LT: 'HH:mm', 12888 LTS: 'HH:mm:ss', 12889 L: 'DD.MM.YYYY', 12890 LL: 'D MMMM YYYY', 12891 LLL: 'D MMMM YYYY HH:mm', 12892 LLLL: 'dddd, D MMMM YYYY HH:mm', 12893 }, 12894 calendar: { 12895 sameDay: '[Бүгүн саат] LT', 12896 nextDay: '[Эртең саат] LT', 12897 nextWeek: 'dddd [саат] LT', 12898 lastDay: '[Кечээ саат] LT', 12899 lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT', 12900 sameElse: 'L', 12901 }, 12902 relativeTime: { 12903 future: '%s ичинде', 12904 past: '%s мурун', 12905 s: 'бирнече секунд', 12906 ss: '%d секунд', 12907 m: 'бир мүнөт', 12908 mm: '%d мүнөт', 12909 h: 'бир саат', 12910 hh: '%d саат', 12911 d: 'бир күн', 12912 dd: '%d күн', 12913 M: 'бир ай', 12914 MM: '%d ай', 12915 y: 'бир жыл', 12916 yy: '%d жыл', 12917 }, 12918 dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/, 12919 ordinal: function (number) { 12920 var a = number % 10, 12921 b = number >= 100 ? 100 : null; 12922 return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]); 12923 }, 12924 week: { 12925 dow: 1, // Monday is the first day of the week. 12926 doy: 7, // The week that contains Jan 7th is the first week of the year. 12927 }, 12928 }); 12929 12930 //! moment.js locale configuration 12931 12932 function processRelativeTime$8(number, withoutSuffix, key, isFuture) { 12933 var format = { 12934 m: ['eng Minutt', 'enger Minutt'], 12935 h: ['eng Stonn', 'enger Stonn'], 12936 d: ['een Dag', 'engem Dag'], 12937 M: ['ee Mount', 'engem Mount'], 12938 y: ['ee Joer', 'engem Joer'], 12939 }; 12940 return withoutSuffix ? format[key][0] : format[key][1]; 12941 } 12942 function processFutureTime(string) { 12943 var number = string.substr(0, string.indexOf(' ')); 12944 if (eifelerRegelAppliesToNumber(number)) { 12945 return 'a ' + string; 12946 } 12947 return 'an ' + string; 12948 } 12949 function processPastTime(string) { 12950 var number = string.substr(0, string.indexOf(' ')); 12951 if (eifelerRegelAppliesToNumber(number)) { 12952 return 'viru ' + string; 12953 } 12954 return 'virun ' + string; 12955 } 12956 /** 12957 * Returns true if the word before the given number loses the '-n' ending. 12958 * e.g. 'an 10 Deeg' but 'a 5 Deeg' 12959 * 12960 * @param number {integer} 12961 * @returns {boolean} 12962 */ 12963 function eifelerRegelAppliesToNumber(number) { 12964 number = parseInt(number, 10); 12965 if (isNaN(number)) { 12966 return false; 12967 } 12968 if (number < 0) { 12969 // Negative Number --> always true 12970 return true; 12971 } else if (number < 10) { 12972 // Only 1 digit 12973 if (4 <= number && number <= 7) { 12974 return true; 12975 } 12976 return false; 12977 } else if (number < 100) { 12978 // 2 digits 12979 var lastDigit = number % 10, 12980 firstDigit = number / 10; 12981 if (lastDigit === 0) { 12982 return eifelerRegelAppliesToNumber(firstDigit); 12983 } 12984 return eifelerRegelAppliesToNumber(lastDigit); 12985 } else if (number < 10000) { 12986 // 3 or 4 digits --> recursively check first digit 12987 while (number >= 10) { 12988 number = number / 10; 12989 } 12990 return eifelerRegelAppliesToNumber(number); 12991 } else { 12992 // Anything larger than 4 digits: recursively check first n-3 digits 12993 number = number / 1000; 12994 return eifelerRegelAppliesToNumber(number); 12995 } 12996 } 12997 12998 hooks.defineLocale('lb', { 12999 months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split( 13000 '_' 13001 ), 13002 monthsShort: 13003 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split( 13004 '_' 13005 ), 13006 monthsParseExact: true, 13007 weekdays: 13008 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split( 13009 '_' 13010 ), 13011 weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), 13012 weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), 13013 weekdaysParseExact: true, 13014 longDateFormat: { 13015 LT: 'H:mm [Auer]', 13016 LTS: 'H:mm:ss [Auer]', 13017 L: 'DD.MM.YYYY', 13018 LL: 'D. MMMM YYYY', 13019 LLL: 'D. MMMM YYYY H:mm [Auer]', 13020 LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]', 13021 }, 13022 calendar: { 13023 sameDay: '[Haut um] LT', 13024 sameElse: 'L', 13025 nextDay: '[Muer um] LT', 13026 nextWeek: 'dddd [um] LT', 13027 lastDay: '[Gëschter um] LT', 13028 lastWeek: function () { 13029 // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule 13030 switch (this.day()) { 13031 case 2: 13032 case 4: 13033 return '[Leschten] dddd [um] LT'; 13034 default: 13035 return '[Leschte] dddd [um] LT'; 13036 } 13037 }, 13038 }, 13039 relativeTime: { 13040 future: processFutureTime, 13041 past: processPastTime, 13042 s: 'e puer Sekonnen', 13043 ss: '%d Sekonnen', 13044 m: processRelativeTime$8, 13045 mm: '%d Minutten', 13046 h: processRelativeTime$8, 13047 hh: '%d Stonnen', 13048 d: processRelativeTime$8, 13049 dd: '%d Deeg', 13050 M: processRelativeTime$8, 13051 MM: '%d Méint', 13052 y: processRelativeTime$8, 13053 yy: '%d Joer', 13054 }, 13055 dayOfMonthOrdinalParse: /\d{1,2}\./, 13056 ordinal: '%d.', 13057 week: { 13058 dow: 1, // Monday is the first day of the week. 13059 doy: 4, // The week that contains Jan 4th is the first week of the year. 13060 }, 13061 }); 13062 13063 //! moment.js locale configuration 13064 13065 hooks.defineLocale('lo', { 13066 months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split( 13067 '_' 13068 ), 13069 monthsShort: 13070 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split( 13071 '_' 13072 ), 13073 weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), 13074 weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), 13075 weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'), 13076 weekdaysParseExact: true, 13077 longDateFormat: { 13078 LT: 'HH:mm', 13079 LTS: 'HH:mm:ss', 13080 L: 'DD/MM/YYYY', 13081 LL: 'D MMMM YYYY', 13082 LLL: 'D MMMM YYYY HH:mm', 13083 LLLL: 'ວັນdddd D MMMM YYYY HH:mm', 13084 }, 13085 meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/, 13086 isPM: function (input) { 13087 return input === 'ຕອນແລງ'; 13088 }, 13089 meridiem: function (hour, minute, isLower) { 13090 if (hour < 12) { 13091 return 'ຕອນເຊົ້າ'; 13092 } else { 13093 return 'ຕອນແລງ'; 13094 } 13095 }, 13096 calendar: { 13097 sameDay: '[ມື້ນີ້ເວລາ] LT', 13098 nextDay: '[ມື້ອື່ນເວລາ] LT', 13099 nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT', 13100 lastDay: '[ມື້ວານນີ້ເວລາ] LT', 13101 lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT', 13102 sameElse: 'L', 13103 }, 13104 relativeTime: { 13105 future: 'ອີກ %s', 13106 past: '%sຜ່ານມາ', 13107 s: 'ບໍ່ເທົ່າໃດວິນາທີ', 13108 ss: '%d ວິນາທີ', 13109 m: '1 ນາທີ', 13110 mm: '%d ນາທີ', 13111 h: '1 ຊົ່ວໂມງ', 13112 hh: '%d ຊົ່ວໂມງ', 13113 d: '1 ມື້', 13114 dd: '%d ມື້', 13115 M: '1 ເດືອນ', 13116 MM: '%d ເດືອນ', 13117 y: '1 ປີ', 13118 yy: '%d ປີ', 13119 }, 13120 dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/, 13121 ordinal: function (number) { 13122 return 'ທີ່' + number; 13123 }, 13124 }); 13125 13126 //! moment.js locale configuration 13127 13128 var units = { 13129 ss: 'sekundė_sekundžių_sekundes', 13130 m: 'minutė_minutės_minutę', 13131 mm: 'minutės_minučių_minutes', 13132 h: 'valanda_valandos_valandą', 13133 hh: 'valandos_valandų_valandas', 13134 d: 'diena_dienos_dieną', 13135 dd: 'dienos_dienų_dienas', 13136 M: 'mėnuo_mėnesio_mėnesį', 13137 MM: 'mėnesiai_mėnesių_mėnesius', 13138 y: 'metai_metų_metus', 13139 yy: 'metai_metų_metus', 13140 }; 13141 function translateSeconds(number, withoutSuffix, key, isFuture) { 13142 if (withoutSuffix) { 13143 return 'kelios sekundės'; 13144 } else { 13145 return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; 13146 } 13147 } 13148 function translateSingular(number, withoutSuffix, key, isFuture) { 13149 return withoutSuffix 13150 ? forms(key)[0] 13151 : isFuture 13152 ? forms(key)[1] 13153 : forms(key)[2]; 13154 } 13155 function special(number) { 13156 return number % 10 === 0 || (number > 10 && number < 20); 13157 } 13158 function forms(key) { 13159 return units[key].split('_'); 13160 } 13161 function translate$6(number, withoutSuffix, key, isFuture) { 13162 var result = number + ' '; 13163 if (number === 1) { 13164 return ( 13165 result + translateSingular(number, withoutSuffix, key[0], isFuture) 13166 ); 13167 } else if (withoutSuffix) { 13168 return result + (special(number) ? forms(key)[1] : forms(key)[0]); 13169 } else { 13170 if (isFuture) { 13171 return result + forms(key)[1]; 13172 } else { 13173 return result + (special(number) ? forms(key)[1] : forms(key)[2]); 13174 } 13175 } 13176 } 13177 hooks.defineLocale('lt', { 13178 months: { 13179 format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split( 13180 '_' 13181 ), 13182 standalone: 13183 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split( 13184 '_' 13185 ), 13186 isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/, 13187 }, 13188 monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), 13189 weekdays: { 13190 format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split( 13191 '_' 13192 ), 13193 standalone: 13194 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split( 13195 '_' 13196 ), 13197 isFormat: /dddd HH:mm/, 13198 }, 13199 weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), 13200 weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'), 13201 weekdaysParseExact: true, 13202 longDateFormat: { 13203 LT: 'HH:mm', 13204 LTS: 'HH:mm:ss', 13205 L: 'YYYY-MM-DD', 13206 LL: 'YYYY [m.] MMMM D [d.]', 13207 LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', 13208 LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', 13209 l: 'YYYY-MM-DD', 13210 ll: 'YYYY [m.] MMMM D [d.]', 13211 lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', 13212 llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]', 13213 }, 13214 calendar: { 13215 sameDay: '[Šiandien] LT', 13216 nextDay: '[Rytoj] LT', 13217 nextWeek: 'dddd LT', 13218 lastDay: '[Vakar] LT', 13219 lastWeek: '[Praėjusį] dddd LT', 13220 sameElse: 'L', 13221 }, 13222 relativeTime: { 13223 future: 'po %s', 13224 past: 'prieš %s', 13225 s: translateSeconds, 13226 ss: translate$6, 13227 m: translateSingular, 13228 mm: translate$6, 13229 h: translateSingular, 13230 hh: translate$6, 13231 d: translateSingular, 13232 dd: translate$6, 13233 M: translateSingular, 13234 MM: translate$6, 13235 y: translateSingular, 13236 yy: translate$6, 13237 }, 13238 dayOfMonthOrdinalParse: /\d{1,2}-oji/, 13239 ordinal: function (number) { 13240 return number + '-oji'; 13241 }, 13242 week: { 13243 dow: 1, // Monday is the first day of the week. 13244 doy: 4, // The week that contains Jan 4th is the first week of the year. 13245 }, 13246 }); 13247 13248 //! moment.js locale configuration 13249 13250 var units$1 = { 13251 ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'), 13252 m: 'minūtes_minūtēm_minūte_minūtes'.split('_'), 13253 mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'), 13254 h: 'stundas_stundām_stunda_stundas'.split('_'), 13255 hh: 'stundas_stundām_stunda_stundas'.split('_'), 13256 d: 'dienas_dienām_diena_dienas'.split('_'), 13257 dd: 'dienas_dienām_diena_dienas'.split('_'), 13258 M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), 13259 MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), 13260 y: 'gada_gadiem_gads_gadi'.split('_'), 13261 yy: 'gada_gadiem_gads_gadi'.split('_'), 13262 }; 13263 /** 13264 * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. 13265 */ 13266 function format$1(forms, number, withoutSuffix) { 13267 if (withoutSuffix) { 13268 // E.g. "21 minūte", "3 minūtes". 13269 return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3]; 13270 } else { 13271 // E.g. "21 minūtes" as in "pēc 21 minūtes". 13272 // E.g. "3 minūtēm" as in "pēc 3 minūtēm". 13273 return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1]; 13274 } 13275 } 13276 function relativeTimeWithPlural$1(number, withoutSuffix, key) { 13277 return number + ' ' + format$1(units$1[key], number, withoutSuffix); 13278 } 13279 function relativeTimeWithSingular(number, withoutSuffix, key) { 13280 return format$1(units$1[key], number, withoutSuffix); 13281 } 13282 function relativeSeconds(number, withoutSuffix) { 13283 return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm'; 13284 } 13285 13286 hooks.defineLocale('lv', { 13287 months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split( 13288 '_' 13289 ), 13290 monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), 13291 weekdays: 13292 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split( 13293 '_' 13294 ), 13295 weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'), 13296 weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'), 13297 weekdaysParseExact: true, 13298 longDateFormat: { 13299 LT: 'HH:mm', 13300 LTS: 'HH:mm:ss', 13301 L: 'DD.MM.YYYY.', 13302 LL: 'YYYY. [gada] D. MMMM', 13303 LLL: 'YYYY. [gada] D. MMMM, HH:mm', 13304 LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm', 13305 }, 13306 calendar: { 13307 sameDay: '[Šodien pulksten] LT', 13308 nextDay: '[Rīt pulksten] LT', 13309 nextWeek: 'dddd [pulksten] LT', 13310 lastDay: '[Vakar pulksten] LT', 13311 lastWeek: '[Pagājušā] dddd [pulksten] LT', 13312 sameElse: 'L', 13313 }, 13314 relativeTime: { 13315 future: 'pēc %s', 13316 past: 'pirms %s', 13317 s: relativeSeconds, 13318 ss: relativeTimeWithPlural$1, 13319 m: relativeTimeWithSingular, 13320 mm: relativeTimeWithPlural$1, 13321 h: relativeTimeWithSingular, 13322 hh: relativeTimeWithPlural$1, 13323 d: relativeTimeWithSingular, 13324 dd: relativeTimeWithPlural$1, 13325 M: relativeTimeWithSingular, 13326 MM: relativeTimeWithPlural$1, 13327 y: relativeTimeWithSingular, 13328 yy: relativeTimeWithPlural$1, 13329 }, 13330 dayOfMonthOrdinalParse: /\d{1,2}\./, 13331 ordinal: '%d.', 13332 week: { 13333 dow: 1, // Monday is the first day of the week. 13334 doy: 4, // The week that contains Jan 4th is the first week of the year. 13335 }, 13336 }); 13337 13338 //! moment.js locale configuration 13339 13340 var translator = { 13341 words: { 13342 //Different grammatical cases 13343 ss: ['sekund', 'sekunda', 'sekundi'], 13344 m: ['jedan minut', 'jednog minuta'], 13345 mm: ['minut', 'minuta', 'minuta'], 13346 h: ['jedan sat', 'jednog sata'], 13347 hh: ['sat', 'sata', 'sati'], 13348 dd: ['dan', 'dana', 'dana'], 13349 MM: ['mjesec', 'mjeseca', 'mjeseci'], 13350 yy: ['godina', 'godine', 'godina'], 13351 }, 13352 correctGrammaticalCase: function (number, wordKey) { 13353 return number === 1 13354 ? wordKey[0] 13355 : number >= 2 && number <= 4 13356 ? wordKey[1] 13357 : wordKey[2]; 13358 }, 13359 translate: function (number, withoutSuffix, key) { 13360 var wordKey = translator.words[key]; 13361 if (key.length === 1) { 13362 return withoutSuffix ? wordKey[0] : wordKey[1]; 13363 } else { 13364 return ( 13365 number + 13366 ' ' + 13367 translator.correctGrammaticalCase(number, wordKey) 13368 ); 13369 } 13370 }, 13371 }; 13372 13373 hooks.defineLocale('me', { 13374 months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split( 13375 '_' 13376 ), 13377 monthsShort: 13378 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), 13379 monthsParseExact: true, 13380 weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split( 13381 '_' 13382 ), 13383 weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), 13384 weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), 13385 weekdaysParseExact: true, 13386 longDateFormat: { 13387 LT: 'H:mm', 13388 LTS: 'H:mm:ss', 13389 L: 'DD.MM.YYYY', 13390 LL: 'D. MMMM YYYY', 13391 LLL: 'D. MMMM YYYY H:mm', 13392 LLLL: 'dddd, D. MMMM YYYY H:mm', 13393 }, 13394 calendar: { 13395 sameDay: '[danas u] LT', 13396 nextDay: '[sjutra u] LT', 13397 13398 nextWeek: function () { 13399 switch (this.day()) { 13400 case 0: 13401 return '[u] [nedjelju] [u] LT'; 13402 case 3: 13403 return '[u] [srijedu] [u] LT'; 13404 case 6: 13405 return '[u] [subotu] [u] LT'; 13406 case 1: 13407 case 2: 13408 case 4: 13409 case 5: 13410 return '[u] dddd [u] LT'; 13411 } 13412 }, 13413 lastDay: '[juče u] LT', 13414 lastWeek: function () { 13415 var lastWeekDays = [ 13416 '[prošle] [nedjelje] [u] LT', 13417 '[prošlog] [ponedjeljka] [u] LT', 13418 '[prošlog] [utorka] [u] LT', 13419 '[prošle] [srijede] [u] LT', 13420 '[prošlog] [četvrtka] [u] LT', 13421 '[prošlog] [petka] [u] LT', 13422 '[prošle] [subote] [u] LT', 13423 ]; 13424 return lastWeekDays[this.day()]; 13425 }, 13426 sameElse: 'L', 13427 }, 13428 relativeTime: { 13429 future: 'za %s', 13430 past: 'prije %s', 13431 s: 'nekoliko sekundi', 13432 ss: translator.translate, 13433 m: translator.translate, 13434 mm: translator.translate, 13435 h: translator.translate, 13436 hh: translator.translate, 13437 d: 'dan', 13438 dd: translator.translate, 13439 M: 'mjesec', 13440 MM: translator.translate, 13441 y: 'godinu', 13442 yy: translator.translate, 13443 }, 13444 dayOfMonthOrdinalParse: /\d{1,2}\./, 13445 ordinal: '%d.', 13446 week: { 13447 dow: 1, // Monday is the first day of the week. 13448 doy: 7, // The week that contains Jan 7th is the first week of the year. 13449 }, 13450 }); 13451 13452 //! moment.js locale configuration 13453 13454 hooks.defineLocale('mi', { 13455 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( 13456 '_' 13457 ), 13458 monthsShort: 13459 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split( 13460 '_' 13461 ), 13462 monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, 13463 monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, 13464 monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, 13465 monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i, 13466 weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'), 13467 weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), 13468 weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), 13469 longDateFormat: { 13470 LT: 'HH:mm', 13471 LTS: 'HH:mm:ss', 13472 L: 'DD/MM/YYYY', 13473 LL: 'D MMMM YYYY', 13474 LLL: 'D MMMM YYYY [i] HH:mm', 13475 LLLL: 'dddd, D MMMM YYYY [i] HH:mm', 13476 }, 13477 calendar: { 13478 sameDay: '[i teie mahana, i] LT', 13479 nextDay: '[apopo i] LT', 13480 nextWeek: 'dddd [i] LT', 13481 lastDay: '[inanahi i] LT', 13482 lastWeek: 'dddd [whakamutunga i] LT', 13483 sameElse: 'L', 13484 }, 13485 relativeTime: { 13486 future: 'i roto i %s', 13487 past: '%s i mua', 13488 s: 'te hēkona ruarua', 13489 ss: '%d hēkona', 13490 m: 'he meneti', 13491 mm: '%d meneti', 13492 h: 'te haora', 13493 hh: '%d haora', 13494 d: 'he ra', 13495 dd: '%d ra', 13496 M: 'he marama', 13497 MM: '%d marama', 13498 y: 'he tau', 13499 yy: '%d tau', 13500 }, 13501 dayOfMonthOrdinalParse: /\d{1,2}º/, 13502 ordinal: '%dº', 13503 week: { 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 13511 hooks.defineLocale('mk', { 13512 months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split( 13513 '_' 13514 ), 13515 monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), 13516 weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split( 13517 '_' 13518 ), 13519 weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'), 13520 weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'), 13521 longDateFormat: { 13522 LT: 'H:mm', 13523 LTS: 'H:mm:ss', 13524 L: 'D.MM.YYYY', 13525 LL: 'D MMMM YYYY', 13526 LLL: 'D MMMM YYYY H:mm', 13527 LLLL: 'dddd, D MMMM YYYY H:mm', 13528 }, 13529 calendar: { 13530 sameDay: '[Денес во] LT', 13531 nextDay: '[Утре во] LT', 13532 nextWeek: '[Во] dddd [во] LT', 13533 lastDay: '[Вчера во] LT', 13534 lastWeek: function () { 13535 switch (this.day()) { 13536 case 0: 13537 case 3: 13538 case 6: 13539 return '[Изминатата] dddd [во] LT'; 13540 case 1: 13541 case 2: 13542 case 4: 13543 case 5: 13544 return '[Изминатиот] dddd [во] LT'; 13545 } 13546 }, 13547 sameElse: 'L', 13548 }, 13549 relativeTime: { 13550 future: 'за %s', 13551 past: 'пред %s', 13552 s: 'неколку секунди', 13553 ss: '%d секунди', 13554 m: 'една минута', 13555 mm: '%d минути', 13556 h: 'еден час', 13557 hh: '%d часа', 13558 d: 'еден ден', 13559 dd: '%d дена', 13560 M: 'еден месец', 13561 MM: '%d месеци', 13562 y: 'една година', 13563 yy: '%d години', 13564 }, 13565 dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, 13566 ordinal: function (number) { 13567 var lastDigit = number % 10, 13568 last2Digits = number % 100; 13569 if (number === 0) { 13570 return number + '-ев'; 13571 } else if (last2Digits === 0) { 13572 return number + '-ен'; 13573 } else if (last2Digits > 10 && last2Digits < 20) { 13574 return number + '-ти'; 13575 } else if (lastDigit === 1) { 13576 return number + '-ви'; 13577 } else if (lastDigit === 2) { 13578 return number + '-ри'; 13579 } else if (lastDigit === 7 || lastDigit === 8) { 13580 return number + '-ми'; 13581 } else { 13582 return number + '-ти'; 13583 } 13584 }, 13585 week: { 13586 dow: 1, // Monday is the first day of the week. 13587 doy: 7, // The week that contains Jan 7th is the first week of the year. 13588 }, 13589 }); 13590 13591 //! moment.js locale configuration 13592 13593 hooks.defineLocale('ml', { 13594 months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split( 13595 '_' 13596 ), 13597 monthsShort: 13598 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split( 13599 '_' 13600 ), 13601 monthsParseExact: true, 13602 weekdays: 13603 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split( 13604 '_' 13605 ), 13606 weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), 13607 weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'), 13608 longDateFormat: { 13609 LT: 'A h:mm -നു', 13610 LTS: 'A h:mm:ss -നു', 13611 L: 'DD/MM/YYYY', 13612 LL: 'D MMMM YYYY', 13613 LLL: 'D MMMM YYYY, A h:mm -നു', 13614 LLLL: 'dddd, D MMMM YYYY, A h:mm -നു', 13615 }, 13616 calendar: { 13617 sameDay: '[ഇന്ന്] LT', 13618 nextDay: '[നാളെ] LT', 13619 nextWeek: 'dddd, LT', 13620 lastDay: '[ഇന്നലെ] LT', 13621 lastWeek: '[കഴിഞ്ഞ] dddd, LT', 13622 sameElse: 'L', 13623 }, 13624 relativeTime: { 13625 future: '%s കഴിഞ്ഞ്', 13626 past: '%s മുൻപ്', 13627 s: 'അൽപ നിമിഷങ്ങൾ', 13628 ss: '%d സെക്കൻഡ്', 13629 m: 'ഒരു മിനിറ്റ്', 13630 mm: '%d മിനിറ്റ്', 13631 h: 'ഒരു മണിക്കൂർ', 13632 hh: '%d മണിക്കൂർ', 13633 d: 'ഒരു ദിവസം', 13634 dd: '%d ദിവസം', 13635 M: 'ഒരു മാസം', 13636 MM: '%d മാസം', 13637 y: 'ഒരു വർഷം', 13638 yy: '%d വർഷം', 13639 }, 13640 meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, 13641 meridiemHour: function (hour, meridiem) { 13642 if (hour === 12) { 13643 hour = 0; 13644 } 13645 if ( 13646 (meridiem === 'രാത്രി' && hour >= 4) || 13647 meridiem === 'ഉച്ച കഴിഞ്ഞ്' || 13648 meridiem === 'വൈകുന്നേരം' 13649 ) { 13650 return hour + 12; 13651 } else { 13652 return hour; 13653 } 13654 }, 13655 meridiem: function (hour, minute, isLower) { 13656 if (hour < 4) { 13657 return 'രാത്രി'; 13658 } else if (hour < 12) { 13659 return 'രാവിലെ'; 13660 } else if (hour < 17) { 13661 return 'ഉച്ച കഴിഞ്ഞ്'; 13662 } else if (hour < 20) { 13663 return 'വൈകുന്നേരം'; 13664 } else { 13665 return 'രാത്രി'; 13666 } 13667 }, 13668 }); 13669 13670 //! moment.js locale configuration 13671 13672 function translate$7(number, withoutSuffix, key, isFuture) { 13673 switch (key) { 13674 case 's': 13675 return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын'; 13676 case 'ss': 13677 return number + (withoutSuffix ? ' секунд' : ' секундын'); 13678 case 'm': 13679 case 'mm': 13680 return number + (withoutSuffix ? ' минут' : ' минутын'); 13681 case 'h': 13682 case 'hh': 13683 return number + (withoutSuffix ? ' цаг' : ' цагийн'); 13684 case 'd': 13685 case 'dd': 13686 return number + (withoutSuffix ? ' өдөр' : ' өдрийн'); 13687 case 'M': 13688 case 'MM': 13689 return number + (withoutSuffix ? ' сар' : ' сарын'); 13690 case 'y': 13691 case 'yy': 13692 return number + (withoutSuffix ? ' жил' : ' жилийн'); 13693 default: 13694 return number; 13695 } 13696 } 13697 13698 hooks.defineLocale('mn', { 13699 months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split( 13700 '_' 13701 ), 13702 monthsShort: 13703 '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split( 13704 '_' 13705 ), 13706 monthsParseExact: true, 13707 weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'), 13708 weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'), 13709 weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'), 13710 weekdaysParseExact: true, 13711 longDateFormat: { 13712 LT: 'HH:mm', 13713 LTS: 'HH:mm:ss', 13714 L: 'YYYY-MM-DD', 13715 LL: 'YYYY оны MMMMын D', 13716 LLL: 'YYYY оны MMMMын D HH:mm', 13717 LLLL: 'dddd, YYYY оны MMMMын D HH:mm', 13718 }, 13719 meridiemParse: /ҮӨ|ҮХ/i, 13720 isPM: function (input) { 13721 return input === 'ҮХ'; 13722 }, 13723 meridiem: function (hour, minute, isLower) { 13724 if (hour < 12) { 13725 return 'ҮӨ'; 13726 } else { 13727 return 'ҮХ'; 13728 } 13729 }, 13730 calendar: { 13731 sameDay: '[Өнөөдөр] LT', 13732 nextDay: '[Маргааш] LT', 13733 nextWeek: '[Ирэх] dddd LT', 13734 lastDay: '[Өчигдөр] LT', 13735 lastWeek: '[Өнгөрсөн] dddd LT', 13736 sameElse: 'L', 13737 }, 13738 relativeTime: { 13739 future: '%s дараа', 13740 past: '%s өмнө', 13741 s: translate$7, 13742 ss: translate$7, 13743 m: translate$7, 13744 mm: translate$7, 13745 h: translate$7, 13746 hh: translate$7, 13747 d: translate$7, 13748 dd: translate$7, 13749 M: translate$7, 13750 MM: translate$7, 13751 y: translate$7, 13752 yy: translate$7, 13753 }, 13754 dayOfMonthOrdinalParse: /\d{1,2} өдөр/, 13755 ordinal: function (number, period) { 13756 switch (period) { 13757 case 'd': 13758 case 'D': 13759 case 'DDD': 13760 return number + ' өдөр'; 13761 default: 13762 return number; 13763 } 13764 }, 13765 }); 13766 13767 //! moment.js locale configuration 13768 13769 var symbolMap$d = { 13770 1: '१', 13771 2: '२', 13772 3: '३', 13773 4: '४', 13774 5: '५', 13775 6: '६', 13776 7: '७', 13777 8: '८', 13778 9: '९', 13779 0: '०', 13780 }, 13781 numberMap$c = { 13782 '१': '1', 13783 '२': '2', 13784 '३': '3', 13785 '४': '4', 13786 '५': '5', 13787 '६': '6', 13788 '७': '7', 13789 '८': '8', 13790 '९': '9', 13791 '०': '0', 13792 }; 13793 13794 function relativeTimeMr(number, withoutSuffix, string, isFuture) { 13795 var output = ''; 13796 if (withoutSuffix) { 13797 switch (string) { 13798 case 's': 13799 output = 'काही सेकंद'; 13800 break; 13801 case 'ss': 13802 output = '%d सेकंद'; 13803 break; 13804 case 'm': 13805 output = 'एक मिनिट'; 13806 break; 13807 case 'mm': 13808 output = '%d मिनिटे'; 13809 break; 13810 case 'h': 13811 output = 'एक तास'; 13812 break; 13813 case 'hh': 13814 output = '%d तास'; 13815 break; 13816 case 'd': 13817 output = 'एक दिवस'; 13818 break; 13819 case 'dd': 13820 output = '%d दिवस'; 13821 break; 13822 case 'M': 13823 output = 'एक महिना'; 13824 break; 13825 case 'MM': 13826 output = '%d महिने'; 13827 break; 13828 case 'y': 13829 output = 'एक वर्ष'; 13830 break; 13831 case 'yy': 13832 output = '%d वर्षे'; 13833 break; 13834 } 13835 } else { 13836 switch (string) { 13837 case 's': 13838 output = 'काही सेकंदां'; 13839 break; 13840 case 'ss': 13841 output = '%d सेकंदां'; 13842 break; 13843 case 'm': 13844 output = 'एका मिनिटा'; 13845 break; 13846 case 'mm': 13847 output = '%d मिनिटां'; 13848 break; 13849 case 'h': 13850 output = 'एका तासा'; 13851 break; 13852 case 'hh': 13853 output = '%d तासां'; 13854 break; 13855 case 'd': 13856 output = 'एका दिवसा'; 13857 break; 13858 case 'dd': 13859 output = '%d दिवसां'; 13860 break; 13861 case 'M': 13862 output = 'एका महिन्या'; 13863 break; 13864 case 'MM': 13865 output = '%d महिन्यां'; 13866 break; 13867 case 'y': 13868 output = 'एका वर्षा'; 13869 break; 13870 case 'yy': 13871 output = '%d वर्षां'; 13872 break; 13873 } 13874 } 13875 return output.replace(/%d/i, number); 13876 } 13877 13878 hooks.defineLocale('mr', { 13879 months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split( 13880 '_' 13881 ), 13882 monthsShort: 13883 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split( 13884 '_' 13885 ), 13886 monthsParseExact: true, 13887 weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), 13888 weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), 13889 weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'), 13890 longDateFormat: { 13891 LT: 'A h:mm वाजता', 13892 LTS: 'A h:mm:ss वाजता', 13893 L: 'DD/MM/YYYY', 13894 LL: 'D MMMM YYYY', 13895 LLL: 'D MMMM YYYY, A h:mm वाजता', 13896 LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता', 13897 }, 13898 calendar: { 13899 sameDay: '[आज] LT', 13900 nextDay: '[उद्या] LT', 13901 nextWeek: 'dddd, LT', 13902 lastDay: '[काल] LT', 13903 lastWeek: '[मागील] dddd, LT', 13904 sameElse: 'L', 13905 }, 13906 relativeTime: { 13907 future: '%sमध्ये', 13908 past: '%sपूर्वी', 13909 s: relativeTimeMr, 13910 ss: relativeTimeMr, 13911 m: relativeTimeMr, 13912 mm: relativeTimeMr, 13913 h: relativeTimeMr, 13914 hh: relativeTimeMr, 13915 d: relativeTimeMr, 13916 dd: relativeTimeMr, 13917 M: relativeTimeMr, 13918 MM: relativeTimeMr, 13919 y: relativeTimeMr, 13920 yy: relativeTimeMr, 13921 }, 13922 preparse: function (string) { 13923 return string.replace(/[१२३४५६७८९०]/g, function (match) { 13924 return numberMap$c[match]; 13925 }); 13926 }, 13927 postformat: function (string) { 13928 return string.replace(/\d/g, function (match) { 13929 return symbolMap$d[match]; 13930 }); 13931 }, 13932 meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/, 13933 meridiemHour: function (hour, meridiem) { 13934 if (hour === 12) { 13935 hour = 0; 13936 } 13937 if (meridiem === 'पहाटे' || meridiem === 'सकाळी') { 13938 return hour; 13939 } else if ( 13940 meridiem === 'दुपारी' || 13941 meridiem === 'सायंकाळी' || 13942 meridiem === 'रात्री' 13943 ) { 13944 return hour >= 12 ? hour : hour + 12; 13945 } 13946 }, 13947 meridiem: function (hour, minute, isLower) { 13948 if (hour >= 0 && hour < 6) { 13949 return 'पहाटे'; 13950 } else if (hour < 12) { 13951 return 'सकाळी'; 13952 } else if (hour < 17) { 13953 return 'दुपारी'; 13954 } else if (hour < 20) { 13955 return 'सायंकाळी'; 13956 } else { 13957 return 'रात्री'; 13958 } 13959 }, 13960 week: { 13961 dow: 0, // Sunday is the first day of the week. 13962 doy: 6, // The week that contains Jan 6th is the first week of the year. 13963 }, 13964 }); 13965 13966 //! moment.js locale configuration 13967 13968 hooks.defineLocale('ms-my', { 13969 months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split( 13970 '_' 13971 ), 13972 monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), 13973 weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), 13974 weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), 13975 weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), 13976 longDateFormat: { 13977 LT: 'HH.mm', 13978 LTS: 'HH.mm.ss', 13979 L: 'DD/MM/YYYY', 13980 LL: 'D MMMM YYYY', 13981 LLL: 'D MMMM YYYY [pukul] HH.mm', 13982 LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', 13983 }, 13984 meridiemParse: /pagi|tengahari|petang|malam/, 13985 meridiemHour: function (hour, meridiem) { 13986 if (hour === 12) { 13987 hour = 0; 13988 } 13989 if (meridiem === 'pagi') { 13990 return hour; 13991 } else if (meridiem === 'tengahari') { 13992 return hour >= 11 ? hour : hour + 12; 13993 } else if (meridiem === 'petang' || meridiem === 'malam') { 13994 return hour + 12; 13995 } 13996 }, 13997 meridiem: function (hours, minutes, isLower) { 13998 if (hours < 11) { 13999 return 'pagi'; 14000 } else if (hours < 15) { 14001 return 'tengahari'; 14002 } else if (hours < 19) { 14003 return 'petang'; 14004 } else { 14005 return 'malam'; 14006 } 14007 }, 14008 calendar: { 14009 sameDay: '[Hari ini pukul] LT', 14010 nextDay: '[Esok pukul] LT', 14011 nextWeek: 'dddd [pukul] LT', 14012 lastDay: '[Kelmarin pukul] LT', 14013 lastWeek: 'dddd [lepas pukul] LT', 14014 sameElse: 'L', 14015 }, 14016 relativeTime: { 14017 future: 'dalam %s', 14018 past: '%s yang lepas', 14019 s: 'beberapa saat', 14020 ss: '%d saat', 14021 m: 'seminit', 14022 mm: '%d minit', 14023 h: 'sejam', 14024 hh: '%d jam', 14025 d: 'sehari', 14026 dd: '%d hari', 14027 M: 'sebulan', 14028 MM: '%d bulan', 14029 y: 'setahun', 14030 yy: '%d tahun', 14031 }, 14032 week: { 14033 dow: 1, // Monday is the first day of the week. 14034 doy: 7, // The week that contains Jan 7th is the first week of the year. 14035 }, 14036 }); 14037 14038 //! moment.js locale configuration 14039 14040 hooks.defineLocale('ms', { 14041 months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split( 14042 '_' 14043 ), 14044 monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), 14045 weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), 14046 weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), 14047 weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), 14048 longDateFormat: { 14049 LT: 'HH.mm', 14050 LTS: 'HH.mm.ss', 14051 L: 'DD/MM/YYYY', 14052 LL: 'D MMMM YYYY', 14053 LLL: 'D MMMM YYYY [pukul] HH.mm', 14054 LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', 14055 }, 14056 meridiemParse: /pagi|tengahari|petang|malam/, 14057 meridiemHour: function (hour, meridiem) { 14058 if (hour === 12) { 14059 hour = 0; 14060 } 14061 if (meridiem === 'pagi') { 14062 return hour; 14063 } else if (meridiem === 'tengahari') { 14064 return hour >= 11 ? hour : hour + 12; 14065 } else if (meridiem === 'petang' || meridiem === 'malam') { 14066 return hour + 12; 14067 } 14068 }, 14069 meridiem: function (hours, minutes, isLower) { 14070 if (hours < 11) { 14071 return 'pagi'; 14072 } else if (hours < 15) { 14073 return 'tengahari'; 14074 } else if (hours < 19) { 14075 return 'petang'; 14076 } else { 14077 return 'malam'; 14078 } 14079 }, 14080 calendar: { 14081 sameDay: '[Hari ini pukul] LT', 14082 nextDay: '[Esok pukul] LT', 14083 nextWeek: 'dddd [pukul] LT', 14084 lastDay: '[Kelmarin pukul] LT', 14085 lastWeek: 'dddd [lepas pukul] LT', 14086 sameElse: 'L', 14087 }, 14088 relativeTime: { 14089 future: 'dalam %s', 14090 past: '%s yang lepas', 14091 s: 'beberapa saat', 14092 ss: '%d saat', 14093 m: 'seminit', 14094 mm: '%d minit', 14095 h: 'sejam', 14096 hh: '%d jam', 14097 d: 'sehari', 14098 dd: '%d hari', 14099 M: 'sebulan', 14100 MM: '%d bulan', 14101 y: 'setahun', 14102 yy: '%d tahun', 14103 }, 14104 week: { 14105 dow: 1, // Monday is the first day of the week. 14106 doy: 7, // The week that contains Jan 7th is the first week of the year. 14107 }, 14108 }); 14109 14110 //! moment.js locale configuration 14111 14112 hooks.defineLocale('mt', { 14113 months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split( 14114 '_' 14115 ), 14116 monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'), 14117 weekdays: 14118 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split( 14119 '_' 14120 ), 14121 weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'), 14122 weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'), 14123 longDateFormat: { 14124 LT: 'HH:mm', 14125 LTS: 'HH:mm:ss', 14126 L: 'DD/MM/YYYY', 14127 LL: 'D MMMM YYYY', 14128 LLL: 'D MMMM YYYY HH:mm', 14129 LLLL: 'dddd, D MMMM YYYY HH:mm', 14130 }, 14131 calendar: { 14132 sameDay: '[Illum fil-]LT', 14133 nextDay: '[Għada fil-]LT', 14134 nextWeek: 'dddd [fil-]LT', 14135 lastDay: '[Il-bieraħ fil-]LT', 14136 lastWeek: 'dddd [li għadda] [fil-]LT', 14137 sameElse: 'L', 14138 }, 14139 relativeTime: { 14140 future: 'f’ %s', 14141 past: '%s ilu', 14142 s: 'ftit sekondi', 14143 ss: '%d sekondi', 14144 m: 'minuta', 14145 mm: '%d minuti', 14146 h: 'siegħa', 14147 hh: '%d siegħat', 14148 d: 'ġurnata', 14149 dd: '%d ġranet', 14150 M: 'xahar', 14151 MM: '%d xhur', 14152 y: 'sena', 14153 yy: '%d sni', 14154 }, 14155 dayOfMonthOrdinalParse: /\d{1,2}º/, 14156 ordinal: '%dº', 14157 week: { 14158 dow: 1, // Monday is the first day of the week. 14159 doy: 4, // The week that contains Jan 4th is the first week of the year. 14160 }, 14161 }); 14162 14163 //! moment.js locale configuration 14164 14165 var symbolMap$e = { 14166 1: '၁', 14167 2: '၂', 14168 3: '၃', 14169 4: '၄', 14170 5: '၅', 14171 6: '၆', 14172 7: '၇', 14173 8: '၈', 14174 9: '၉', 14175 0: '၀', 14176 }, 14177 numberMap$d = { 14178 '၁': '1', 14179 '၂': '2', 14180 '၃': '3', 14181 '၄': '4', 14182 '၅': '5', 14183 '၆': '6', 14184 '၇': '7', 14185 '၈': '8', 14186 '၉': '9', 14187 '၀': '0', 14188 }; 14189 14190 hooks.defineLocale('my', { 14191 months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split( 14192 '_' 14193 ), 14194 monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), 14195 weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split( 14196 '_' 14197 ), 14198 weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), 14199 weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), 14200 14201 longDateFormat: { 14202 LT: 'HH:mm', 14203 LTS: 'HH:mm:ss', 14204 L: 'DD/MM/YYYY', 14205 LL: 'D MMMM YYYY', 14206 LLL: 'D MMMM YYYY HH:mm', 14207 LLLL: 'dddd D MMMM YYYY HH:mm', 14208 }, 14209 calendar: { 14210 sameDay: '[ယနေ.] LT [မှာ]', 14211 nextDay: '[မနက်ဖြန်] LT [မှာ]', 14212 nextWeek: 'dddd LT [မှာ]', 14213 lastDay: '[မနေ.က] LT [မှာ]', 14214 lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', 14215 sameElse: 'L', 14216 }, 14217 relativeTime: { 14218 future: 'လာမည့် %s မှာ', 14219 past: 'လွန်ခဲ့သော %s က', 14220 s: 'စက္ကန်.အနည်းငယ်', 14221 ss: '%d စက္ကန့်', 14222 m: 'တစ်မိနစ်', 14223 mm: '%d မိနစ်', 14224 h: 'တစ်နာရီ', 14225 hh: '%d နာရီ', 14226 d: 'တစ်ရက်', 14227 dd: '%d ရက်', 14228 M: 'တစ်လ', 14229 MM: '%d လ', 14230 y: 'တစ်နှစ်', 14231 yy: '%d နှစ်', 14232 }, 14233 preparse: function (string) { 14234 return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { 14235 return numberMap$d[match]; 14236 }); 14237 }, 14238 postformat: function (string) { 14239 return string.replace(/\d/g, function (match) { 14240 return symbolMap$e[match]; 14241 }); 14242 }, 14243 week: { 14244 dow: 1, // Monday is the first day of the week. 14245 doy: 4, // The week that contains Jan 4th is the first week of the year. 14246 }, 14247 }); 14248 14249 //! moment.js locale configuration 14250 14251 hooks.defineLocale('nb', { 14252 months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split( 14253 '_' 14254 ), 14255 monthsShort: 14256 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'), 14257 monthsParseExact: true, 14258 weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), 14259 weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'), 14260 weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), 14261 weekdaysParseExact: true, 14262 longDateFormat: { 14263 LT: 'HH:mm', 14264 LTS: 'HH:mm:ss', 14265 L: 'DD.MM.YYYY', 14266 LL: 'D. MMMM YYYY', 14267 LLL: 'D. MMMM YYYY [kl.] HH:mm', 14268 LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm', 14269 }, 14270 calendar: { 14271 sameDay: '[i dag kl.] LT', 14272 nextDay: '[i morgen kl.] LT', 14273 nextWeek: 'dddd [kl.] LT', 14274 lastDay: '[i går kl.] LT', 14275 lastWeek: '[forrige] dddd [kl.] LT', 14276 sameElse: 'L', 14277 }, 14278 relativeTime: { 14279 future: 'om %s', 14280 past: '%s siden', 14281 s: 'noen sekunder', 14282 ss: '%d sekunder', 14283 m: 'ett minutt', 14284 mm: '%d minutter', 14285 h: 'én time', 14286 hh: '%d timer', 14287 d: 'én dag', 14288 dd: '%d dager', 14289 w: 'én uke', 14290 ww: '%d uker', 14291 M: 'én måned', 14292 MM: '%d måneder', 14293 y: 'ett år', 14294 yy: '%d år', 14295 }, 14296 dayOfMonthOrdinalParse: /\d{1,2}\./, 14297 ordinal: '%d.', 14298 week: { 14299 dow: 1, // Monday is the first day of the week. 14300 doy: 4, // The week that contains Jan 4th is the first week of the year. 14301 }, 14302 }); 14303 14304 //! moment.js locale configuration 14305 14306 var symbolMap$f = { 14307 1: '१', 14308 2: '२', 14309 3: '३', 14310 4: '४', 14311 5: '५', 14312 6: '६', 14313 7: '७', 14314 8: '८', 14315 9: '९', 14316 0: '०', 14317 }, 14318 numberMap$e = { 14319 '१': '1', 14320 '२': '2', 14321 '३': '3', 14322 '४': '4', 14323 '५': '5', 14324 '६': '6', 14325 '७': '7', 14326 '८': '8', 14327 '९': '9', 14328 '०': '0', 14329 }; 14330 14331 hooks.defineLocale('ne', { 14332 months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split( 14333 '_' 14334 ), 14335 monthsShort: 14336 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split( 14337 '_' 14338 ), 14339 monthsParseExact: true, 14340 weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split( 14341 '_' 14342 ), 14343 weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), 14344 weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'), 14345 weekdaysParseExact: true, 14346 longDateFormat: { 14347 LT: 'Aको h:mm बजे', 14348 LTS: 'Aको h:mm:ss बजे', 14349 L: 'DD/MM/YYYY', 14350 LL: 'D MMMM YYYY', 14351 LLL: 'D MMMM YYYY, Aको h:mm बजे', 14352 LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे', 14353 }, 14354 preparse: function (string) { 14355 return string.replace(/[१२३४५६७८९०]/g, function (match) { 14356 return numberMap$e[match]; 14357 }); 14358 }, 14359 postformat: function (string) { 14360 return string.replace(/\d/g, function (match) { 14361 return symbolMap$f[match]; 14362 }); 14363 }, 14364 meridiemParse: /राति|बिहान|दिउँसो|साँझ/, 14365 meridiemHour: function (hour, meridiem) { 14366 if (hour === 12) { 14367 hour = 0; 14368 } 14369 if (meridiem === 'राति') { 14370 return hour < 4 ? hour : hour + 12; 14371 } else if (meridiem === 'बिहान') { 14372 return hour; 14373 } else if (meridiem === 'दिउँसो') { 14374 return hour >= 10 ? hour : hour + 12; 14375 } else if (meridiem === 'साँझ') { 14376 return hour + 12; 14377 } 14378 }, 14379 meridiem: function (hour, minute, isLower) { 14380 if (hour < 3) { 14381 return 'राति'; 14382 } else if (hour < 12) { 14383 return 'बिहान'; 14384 } else if (hour < 16) { 14385 return 'दिउँसो'; 14386 } else if (hour < 20) { 14387 return 'साँझ'; 14388 } else { 14389 return 'राति'; 14390 } 14391 }, 14392 calendar: { 14393 sameDay: '[आज] LT', 14394 nextDay: '[भोलि] LT', 14395 nextWeek: '[आउँदो] dddd[,] LT', 14396 lastDay: '[हिजो] LT', 14397 lastWeek: '[गएको] dddd[,] LT', 14398 sameElse: 'L', 14399 }, 14400 relativeTime: { 14401 future: '%sमा', 14402 past: '%s अगाडि', 14403 s: 'केही क्षण', 14404 ss: '%d सेकेण्ड', 14405 m: 'एक मिनेट', 14406 mm: '%d मिनेट', 14407 h: 'एक घण्टा', 14408 hh: '%d घण्टा', 14409 d: 'एक दिन', 14410 dd: '%d दिन', 14411 M: 'एक महिना', 14412 MM: '%d महिना', 14413 y: 'एक बर्ष', 14414 yy: '%d बर्ष', 14415 }, 14416 week: { 14417 dow: 0, // Sunday is the first day of the week. 14418 doy: 6, // The week that contains Jan 6th is the first week of the year. 14419 }, 14420 }); 14421 14422 //! moment.js locale configuration 14423 14424 var monthsShortWithDots$1 = 14425 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), 14426 monthsShortWithoutDots$1 = 14427 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'), 14428 monthsParse$8 = [ 14429 /^jan/i, 14430 /^feb/i, 14431 /^(maart|mrt\.?)$/i, 14432 /^apr/i, 14433 /^mei$/i, 14434 /^jun[i.]?$/i, 14435 /^jul[i.]?$/i, 14436 /^aug/i, 14437 /^sep/i, 14438 /^okt/i, 14439 /^nov/i, 14440 /^dec/i, 14441 ], 14442 monthsRegex$8 = 14443 /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; 14444 14445 hooks.defineLocale('nl-be', { 14446 months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split( 14447 '_' 14448 ), 14449 monthsShort: function (m, format) { 14450 if (!m) { 14451 return monthsShortWithDots$1; 14452 } else if (/-MMM-/.test(format)) { 14453 return monthsShortWithoutDots$1[m.month()]; 14454 } else { 14455 return monthsShortWithDots$1[m.month()]; 14456 } 14457 }, 14458 14459 monthsRegex: monthsRegex$8, 14460 monthsShortRegex: monthsRegex$8, 14461 monthsStrictRegex: 14462 /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, 14463 monthsShortStrictRegex: 14464 /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, 14465 14466 monthsParse: monthsParse$8, 14467 longMonthsParse: monthsParse$8, 14468 shortMonthsParse: monthsParse$8, 14469 14470 weekdays: 14471 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), 14472 weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), 14473 weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'), 14474 weekdaysParseExact: true, 14475 longDateFormat: { 14476 LT: 'HH:mm', 14477 LTS: 'HH:mm:ss', 14478 L: 'DD/MM/YYYY', 14479 LL: 'D MMMM YYYY', 14480 LLL: 'D MMMM YYYY HH:mm', 14481 LLLL: 'dddd D MMMM YYYY HH:mm', 14482 }, 14483 calendar: { 14484 sameDay: '[vandaag om] LT', 14485 nextDay: '[morgen om] LT', 14486 nextWeek: 'dddd [om] LT', 14487 lastDay: '[gisteren om] LT', 14488 lastWeek: '[afgelopen] dddd [om] LT', 14489 sameElse: 'L', 14490 }, 14491 relativeTime: { 14492 future: 'over %s', 14493 past: '%s geleden', 14494 s: 'een paar seconden', 14495 ss: '%d seconden', 14496 m: 'één minuut', 14497 mm: '%d minuten', 14498 h: 'één uur', 14499 hh: '%d uur', 14500 d: 'één dag', 14501 dd: '%d dagen', 14502 M: 'één maand', 14503 MM: '%d maanden', 14504 y: 'één jaar', 14505 yy: '%d jaar', 14506 }, 14507 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, 14508 ordinal: function (number) { 14509 return ( 14510 number + 14511 (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') 14512 ); 14513 }, 14514 week: { 14515 dow: 1, // Monday is the first day of the week. 14516 doy: 4, // The week that contains Jan 4th is the first week of the year. 14517 }, 14518 }); 14519 14520 //! moment.js locale configuration 14521 14522 var monthsShortWithDots$2 = 14523 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), 14524 monthsShortWithoutDots$2 = 14525 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'), 14526 monthsParse$9 = [ 14527 /^jan/i, 14528 /^feb/i, 14529 /^(maart|mrt\.?)$/i, 14530 /^apr/i, 14531 /^mei$/i, 14532 /^jun[i.]?$/i, 14533 /^jul[i.]?$/i, 14534 /^aug/i, 14535 /^sep/i, 14536 /^okt/i, 14537 /^nov/i, 14538 /^dec/i, 14539 ], 14540 monthsRegex$9 = 14541 /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; 14542 14543 hooks.defineLocale('nl', { 14544 months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split( 14545 '_' 14546 ), 14547 monthsShort: function (m, format) { 14548 if (!m) { 14549 return monthsShortWithDots$2; 14550 } else if (/-MMM-/.test(format)) { 14551 return monthsShortWithoutDots$2[m.month()]; 14552 } else { 14553 return monthsShortWithDots$2[m.month()]; 14554 } 14555 }, 14556 14557 monthsRegex: monthsRegex$9, 14558 monthsShortRegex: monthsRegex$9, 14559 monthsStrictRegex: 14560 /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, 14561 monthsShortStrictRegex: 14562 /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, 14563 14564 monthsParse: monthsParse$9, 14565 longMonthsParse: monthsParse$9, 14566 shortMonthsParse: monthsParse$9, 14567 14568 weekdays: 14569 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), 14570 weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), 14571 weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'), 14572 weekdaysParseExact: true, 14573 longDateFormat: { 14574 LT: 'HH:mm', 14575 LTS: 'HH:mm:ss', 14576 L: 'DD-MM-YYYY', 14577 LL: 'D MMMM YYYY', 14578 LLL: 'D MMMM YYYY HH:mm', 14579 LLLL: 'dddd D MMMM YYYY HH:mm', 14580 }, 14581 calendar: { 14582 sameDay: '[vandaag om] LT', 14583 nextDay: '[morgen om] LT', 14584 nextWeek: 'dddd [om] LT', 14585 lastDay: '[gisteren om] LT', 14586 lastWeek: '[afgelopen] dddd [om] LT', 14587 sameElse: 'L', 14588 }, 14589 relativeTime: { 14590 future: 'over %s', 14591 past: '%s geleden', 14592 s: 'een paar seconden', 14593 ss: '%d seconden', 14594 m: 'één minuut', 14595 mm: '%d minuten', 14596 h: 'één uur', 14597 hh: '%d uur', 14598 d: 'één dag', 14599 dd: '%d dagen', 14600 w: 'één week', 14601 ww: '%d weken', 14602 M: 'één maand', 14603 MM: '%d maanden', 14604 y: 'één jaar', 14605 yy: '%d jaar', 14606 }, 14607 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, 14608 ordinal: function (number) { 14609 return ( 14610 number + 14611 (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') 14612 ); 14613 }, 14614 week: { 14615 dow: 1, // Monday is the first day of the week. 14616 doy: 4, // The week that contains Jan 4th is the first week of the year. 14617 }, 14618 }); 14619 14620 //! moment.js locale configuration 14621 14622 hooks.defineLocale('nn', { 14623 months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split( 14624 '_' 14625 ), 14626 monthsShort: 14627 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'), 14628 monthsParseExact: true, 14629 weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), 14630 weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'), 14631 weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'), 14632 weekdaysParseExact: true, 14633 longDateFormat: { 14634 LT: 'HH:mm', 14635 LTS: 'HH:mm:ss', 14636 L: 'DD.MM.YYYY', 14637 LL: 'D. MMMM YYYY', 14638 LLL: 'D. MMMM YYYY [kl.] H:mm', 14639 LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm', 14640 }, 14641 calendar: { 14642 sameDay: '[I dag klokka] LT', 14643 nextDay: '[I morgon klokka] LT', 14644 nextWeek: 'dddd [klokka] LT', 14645 lastDay: '[I går klokka] LT', 14646 lastWeek: '[Føregåande] dddd [klokka] LT', 14647 sameElse: 'L', 14648 }, 14649 relativeTime: { 14650 future: 'om %s', 14651 past: '%s sidan', 14652 s: 'nokre sekund', 14653 ss: '%d sekund', 14654 m: 'eit minutt', 14655 mm: '%d minutt', 14656 h: 'ein time', 14657 hh: '%d timar', 14658 d: 'ein dag', 14659 dd: '%d dagar', 14660 w: 'ei veke', 14661 ww: '%d veker', 14662 M: 'ein månad', 14663 MM: '%d månader', 14664 y: 'eit år', 14665 yy: '%d år', 14666 }, 14667 dayOfMonthOrdinalParse: /\d{1,2}\./, 14668 ordinal: '%d.', 14669 week: { 14670 dow: 1, // Monday is the first day of the week. 14671 doy: 4, // The week that contains Jan 4th is the first week of the year. 14672 }, 14673 }); 14674 14675 //! moment.js locale configuration 14676 14677 hooks.defineLocale('oc-lnc', { 14678 months: { 14679 standalone: 14680 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split( 14681 '_' 14682 ), 14683 format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split( 14684 '_' 14685 ), 14686 isFormat: /D[oD]?(\s)+MMMM/, 14687 }, 14688 monthsShort: 14689 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split( 14690 '_' 14691 ), 14692 monthsParseExact: true, 14693 weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split( 14694 '_' 14695 ), 14696 weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'), 14697 weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'), 14698 weekdaysParseExact: true, 14699 longDateFormat: { 14700 LT: 'H:mm', 14701 LTS: 'H:mm:ss', 14702 L: 'DD/MM/YYYY', 14703 LL: 'D MMMM [de] YYYY', 14704 ll: 'D MMM YYYY', 14705 LLL: 'D MMMM [de] YYYY [a] H:mm', 14706 lll: 'D MMM YYYY, H:mm', 14707 LLLL: 'dddd D MMMM [de] YYYY [a] H:mm', 14708 llll: 'ddd D MMM YYYY, H:mm', 14709 }, 14710 calendar: { 14711 sameDay: '[uèi a] LT', 14712 nextDay: '[deman a] LT', 14713 nextWeek: 'dddd [a] LT', 14714 lastDay: '[ièr a] LT', 14715 lastWeek: 'dddd [passat a] LT', 14716 sameElse: 'L', 14717 }, 14718 relativeTime: { 14719 future: "d'aquí %s", 14720 past: 'fa %s', 14721 s: 'unas segondas', 14722 ss: '%d segondas', 14723 m: 'una minuta', 14724 mm: '%d minutas', 14725 h: 'una ora', 14726 hh: '%d oras', 14727 d: 'un jorn', 14728 dd: '%d jorns', 14729 M: 'un mes', 14730 MM: '%d meses', 14731 y: 'un an', 14732 yy: '%d ans', 14733 }, 14734 dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, 14735 ordinal: function (number, period) { 14736 var output = 14737 number === 1 14738 ? 'r' 14739 : number === 2 14740 ? 'n' 14741 : number === 3 14742 ? 'r' 14743 : number === 4 14744 ? 't' 14745 : 'è'; 14746 if (period === 'w' || period === 'W') { 14747 output = 'a'; 14748 } 14749 return number + output; 14750 }, 14751 week: { 14752 dow: 1, // Monday is the first day of the week. 14753 doy: 4, 14754 }, 14755 }); 14756 14757 //! moment.js locale configuration 14758 14759 var symbolMap$g = { 14760 1: '੧', 14761 2: '੨', 14762 3: '੩', 14763 4: '੪', 14764 5: '੫', 14765 6: '੬', 14766 7: '੭', 14767 8: '੮', 14768 9: '੯', 14769 0: '੦', 14770 }, 14771 numberMap$f = { 14772 '੧': '1', 14773 '੨': '2', 14774 '੩': '3', 14775 '੪': '4', 14776 '੫': '5', 14777 '੬': '6', 14778 '੭': '7', 14779 '੮': '8', 14780 '੯': '9', 14781 '੦': '0', 14782 }; 14783 14784 hooks.defineLocale('pa-in', { 14785 // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi. 14786 months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split( 14787 '_' 14788 ), 14789 monthsShort: 14790 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split( 14791 '_' 14792 ), 14793 weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split( 14794 '_' 14795 ), 14796 weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), 14797 weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), 14798 longDateFormat: { 14799 LT: 'A h:mm ਵਜੇ', 14800 LTS: 'A h:mm:ss ਵਜੇ', 14801 L: 'DD/MM/YYYY', 14802 LL: 'D MMMM YYYY', 14803 LLL: 'D MMMM YYYY, A h:mm ਵਜੇ', 14804 LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ', 14805 }, 14806 calendar: { 14807 sameDay: '[ਅਜ] LT', 14808 nextDay: '[ਕਲ] LT', 14809 nextWeek: '[ਅਗਲਾ] dddd, LT', 14810 lastDay: '[ਕਲ] LT', 14811 lastWeek: '[ਪਿਛਲੇ] dddd, LT', 14812 sameElse: 'L', 14813 }, 14814 relativeTime: { 14815 future: '%s ਵਿੱਚ', 14816 past: '%s ਪਿਛਲੇ', 14817 s: 'ਕੁਝ ਸਕਿੰਟ', 14818 ss: '%d ਸਕਿੰਟ', 14819 m: 'ਇਕ ਮਿੰਟ', 14820 mm: '%d ਮਿੰਟ', 14821 h: 'ਇੱਕ ਘੰਟਾ', 14822 hh: '%d ਘੰਟੇ', 14823 d: 'ਇੱਕ ਦਿਨ', 14824 dd: '%d ਦਿਨ', 14825 M: 'ਇੱਕ ਮਹੀਨਾ', 14826 MM: '%d ਮਹੀਨੇ', 14827 y: 'ਇੱਕ ਸਾਲ', 14828 yy: '%d ਸਾਲ', 14829 }, 14830 preparse: function (string) { 14831 return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) { 14832 return numberMap$f[match]; 14833 }); 14834 }, 14835 postformat: function (string) { 14836 return string.replace(/\d/g, function (match) { 14837 return symbolMap$g[match]; 14838 }); 14839 }, 14840 // Punjabi notation for meridiems are quite fuzzy in practice. While there exists 14841 // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi. 14842 meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/, 14843 meridiemHour: function (hour, meridiem) { 14844 if (hour === 12) { 14845 hour = 0; 14846 } 14847 if (meridiem === 'ਰਾਤ') { 14848 return hour < 4 ? hour : hour + 12; 14849 } else if (meridiem === 'ਸਵੇਰ') { 14850 return hour; 14851 } else if (meridiem === 'ਦੁਪਹਿਰ') { 14852 return hour >= 10 ? hour : hour + 12; 14853 } else if (meridiem === 'ਸ਼ਾਮ') { 14854 return hour + 12; 14855 } 14856 }, 14857 meridiem: function (hour, minute, isLower) { 14858 if (hour < 4) { 14859 return 'ਰਾਤ'; 14860 } else if (hour < 10) { 14861 return 'ਸਵੇਰ'; 14862 } else if (hour < 17) { 14863 return 'ਦੁਪਹਿਰ'; 14864 } else if (hour < 20) { 14865 return 'ਸ਼ਾਮ'; 14866 } else { 14867 return 'ਰਾਤ'; 14868 } 14869 }, 14870 week: { 14871 dow: 0, // Sunday is the first day of the week. 14872 doy: 6, // The week that contains Jan 6th is the first week of the year. 14873 }, 14874 }); 14875 14876 //! moment.js locale configuration 14877 14878 var monthsNominative = 14879 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split( 14880 '_' 14881 ), 14882 monthsSubjective = 14883 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split( 14884 '_' 14885 ), 14886 monthsParse$a = [ 14887 /^sty/i, 14888 /^lut/i, 14889 /^mar/i, 14890 /^kwi/i, 14891 /^maj/i, 14892 /^cze/i, 14893 /^lip/i, 14894 /^sie/i, 14895 /^wrz/i, 14896 /^paź/i, 14897 /^lis/i, 14898 /^gru/i, 14899 ]; 14900 function plural$3(n) { 14901 return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1; 14902 } 14903 function translate$8(number, withoutSuffix, key) { 14904 var result = number + ' '; 14905 switch (key) { 14906 case 'ss': 14907 return result + (plural$3(number) ? 'sekundy' : 'sekund'); 14908 case 'm': 14909 return withoutSuffix ? 'minuta' : 'minutę'; 14910 case 'mm': 14911 return result + (plural$3(number) ? 'minuty' : 'minut'); 14912 case 'h': 14913 return withoutSuffix ? 'godzina' : 'godzinę'; 14914 case 'hh': 14915 return result + (plural$3(number) ? 'godziny' : 'godzin'); 14916 case 'ww': 14917 return result + (plural$3(number) ? 'tygodnie' : 'tygodni'); 14918 case 'MM': 14919 return result + (plural$3(number) ? 'miesiące' : 'miesięcy'); 14920 case 'yy': 14921 return result + (plural$3(number) ? 'lata' : 'lat'); 14922 } 14923 } 14924 14925 hooks.defineLocale('pl', { 14926 months: function (momentToFormat, format) { 14927 if (!momentToFormat) { 14928 return monthsNominative; 14929 } else if (/D MMMM/.test(format)) { 14930 return monthsSubjective[momentToFormat.month()]; 14931 } else { 14932 return monthsNominative[momentToFormat.month()]; 14933 } 14934 }, 14935 monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), 14936 monthsParse: monthsParse$a, 14937 longMonthsParse: monthsParse$a, 14938 shortMonthsParse: monthsParse$a, 14939 weekdays: 14940 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'), 14941 weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'), 14942 weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'), 14943 longDateFormat: { 14944 LT: 'HH:mm', 14945 LTS: 'HH:mm:ss', 14946 L: 'DD.MM.YYYY', 14947 LL: 'D MMMM YYYY', 14948 LLL: 'D MMMM YYYY HH:mm', 14949 LLLL: 'dddd, D MMMM YYYY HH:mm', 14950 }, 14951 calendar: { 14952 sameDay: '[Dziś o] LT', 14953 nextDay: '[Jutro o] LT', 14954 nextWeek: function () { 14955 switch (this.day()) { 14956 case 0: 14957 return '[W niedzielę o] LT'; 14958 14959 case 2: 14960 return '[We wtorek o] LT'; 14961 14962 case 3: 14963 return '[W środę o] LT'; 14964 14965 case 6: 14966 return '[W sobotę o] LT'; 14967 14968 default: 14969 return '[W] dddd [o] LT'; 14970 } 14971 }, 14972 lastDay: '[Wczoraj o] LT', 14973 lastWeek: function () { 14974 switch (this.day()) { 14975 case 0: 14976 return '[W zeszłą niedzielę o] LT'; 14977 case 3: 14978 return '[W zeszłą środę o] LT'; 14979 case 6: 14980 return '[W zeszłą sobotę o] LT'; 14981 default: 14982 return '[W zeszły] dddd [o] LT'; 14983 } 14984 }, 14985 sameElse: 'L', 14986 }, 14987 relativeTime: { 14988 future: 'za %s', 14989 past: '%s temu', 14990 s: 'kilka sekund', 14991 ss: translate$8, 14992 m: translate$8, 14993 mm: translate$8, 14994 h: translate$8, 14995 hh: translate$8, 14996 d: '1 dzień', 14997 dd: '%d dni', 14998 w: 'tydzień', 14999 ww: translate$8, 15000 M: 'miesiąc', 15001 MM: translate$8, 15002 y: 'rok', 15003 yy: translate$8, 15004 }, 15005 dayOfMonthOrdinalParse: /\d{1,2}\./, 15006 ordinal: '%d.', 15007 week: { 15008 dow: 1, // Monday is the first day of the week. 15009 doy: 4, // The week that contains Jan 4th is the first week of the year. 15010 }, 15011 }); 15012 15013 //! moment.js locale configuration 15014 15015 hooks.defineLocale('pt-br', { 15016 months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split( 15017 '_' 15018 ), 15019 monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), 15020 weekdays: 15021 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split( 15022 '_' 15023 ), 15024 weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'), 15025 weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'), 15026 weekdaysParseExact: true, 15027 longDateFormat: { 15028 LT: 'HH:mm', 15029 LTS: 'HH:mm:ss', 15030 L: 'DD/MM/YYYY', 15031 LL: 'D [de] MMMM [de] YYYY', 15032 LLL: 'D [de] MMMM [de] YYYY [às] HH:mm', 15033 LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm', 15034 }, 15035 calendar: { 15036 sameDay: '[Hoje às] LT', 15037 nextDay: '[Amanhã às] LT', 15038 nextWeek: 'dddd [às] LT', 15039 lastDay: '[Ontem às] LT', 15040 lastWeek: function () { 15041 return this.day() === 0 || this.day() === 6 15042 ? '[Último] dddd [às] LT' // Saturday + Sunday 15043 : '[Última] dddd [às] LT'; // Monday - Friday 15044 }, 15045 sameElse: 'L', 15046 }, 15047 relativeTime: { 15048 future: 'em %s', 15049 past: 'há %s', 15050 s: 'poucos segundos', 15051 ss: '%d segundos', 15052 m: 'um minuto', 15053 mm: '%d minutos', 15054 h: 'uma hora', 15055 hh: '%d horas', 15056 d: 'um dia', 15057 dd: '%d dias', 15058 M: 'um mês', 15059 MM: '%d meses', 15060 y: 'um ano', 15061 yy: '%d anos', 15062 }, 15063 dayOfMonthOrdinalParse: /\d{1,2}º/, 15064 ordinal: '%dº', 15065 invalidDate: 'Data inválida', 15066 }); 15067 15068 //! moment.js locale configuration 15069 15070 hooks.defineLocale('pt', { 15071 months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split( 15072 '_' 15073 ), 15074 monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), 15075 weekdays: 15076 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split( 15077 '_' 15078 ), 15079 weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), 15080 weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), 15081 weekdaysParseExact: true, 15082 longDateFormat: { 15083 LT: 'HH:mm', 15084 LTS: 'HH:mm:ss', 15085 L: 'DD/MM/YYYY', 15086 LL: 'D [de] MMMM [de] YYYY', 15087 LLL: 'D [de] MMMM [de] YYYY HH:mm', 15088 LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm', 15089 }, 15090 calendar: { 15091 sameDay: '[Hoje às] LT', 15092 nextDay: '[Amanhã às] LT', 15093 nextWeek: 'dddd [às] LT', 15094 lastDay: '[Ontem às] LT', 15095 lastWeek: function () { 15096 return this.day() === 0 || this.day() === 6 15097 ? '[Último] dddd [às] LT' // Saturday + Sunday 15098 : '[Última] dddd [às] LT'; // Monday - Friday 15099 }, 15100 sameElse: 'L', 15101 }, 15102 relativeTime: { 15103 future: 'em %s', 15104 past: 'há %s', 15105 s: 'segundos', 15106 ss: '%d segundos', 15107 m: 'um minuto', 15108 mm: '%d minutos', 15109 h: 'uma hora', 15110 hh: '%d horas', 15111 d: 'um dia', 15112 dd: '%d dias', 15113 w: 'uma semana', 15114 ww: '%d semanas', 15115 M: 'um mês', 15116 MM: '%d meses', 15117 y: 'um ano', 15118 yy: '%d anos', 15119 }, 15120 dayOfMonthOrdinalParse: /\d{1,2}º/, 15121 ordinal: '%dº', 15122 week: { 15123 dow: 1, // Monday is the first day of the week. 15124 doy: 4, // The week that contains Jan 4th is the first week of the year. 15125 }, 15126 }); 15127 15128 //! moment.js locale configuration 15129 15130 function relativeTimeWithPlural$2(number, withoutSuffix, key) { 15131 var format = { 15132 ss: 'secunde', 15133 mm: 'minute', 15134 hh: 'ore', 15135 dd: 'zile', 15136 ww: 'săptămâni', 15137 MM: 'luni', 15138 yy: 'ani', 15139 }, 15140 separator = ' '; 15141 if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { 15142 separator = ' de '; 15143 } 15144 return number + separator + format[key]; 15145 } 15146 15147 hooks.defineLocale('ro', { 15148 months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split( 15149 '_' 15150 ), 15151 monthsShort: 15152 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split( 15153 '_' 15154 ), 15155 monthsParseExact: true, 15156 weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), 15157 weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), 15158 weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), 15159 longDateFormat: { 15160 LT: 'H:mm', 15161 LTS: 'H:mm:ss', 15162 L: 'DD.MM.YYYY', 15163 LL: 'D MMMM YYYY', 15164 LLL: 'D MMMM YYYY H:mm', 15165 LLLL: 'dddd, D MMMM YYYY H:mm', 15166 }, 15167 calendar: { 15168 sameDay: '[azi la] LT', 15169 nextDay: '[mâine la] LT', 15170 nextWeek: 'dddd [la] LT', 15171 lastDay: '[ieri la] LT', 15172 lastWeek: '[fosta] dddd [la] LT', 15173 sameElse: 'L', 15174 }, 15175 relativeTime: { 15176 future: 'peste %s', 15177 past: '%s în urmă', 15178 s: 'câteva secunde', 15179 ss: relativeTimeWithPlural$2, 15180 m: 'un minut', 15181 mm: relativeTimeWithPlural$2, 15182 h: 'o oră', 15183 hh: relativeTimeWithPlural$2, 15184 d: 'o zi', 15185 dd: relativeTimeWithPlural$2, 15186 w: 'o săptămână', 15187 ww: relativeTimeWithPlural$2, 15188 M: 'o lună', 15189 MM: relativeTimeWithPlural$2, 15190 y: 'un an', 15191 yy: relativeTimeWithPlural$2, 15192 }, 15193 week: { 15194 dow: 1, // Monday is the first day of the week. 15195 doy: 7, // The week that contains Jan 7th is the first week of the year. 15196 }, 15197 }); 15198 15199 //! moment.js locale configuration 15200 15201 function plural$4(word, num) { 15202 var forms = word.split('_'); 15203 return num % 10 === 1 && num % 100 !== 11 15204 ? forms[0] 15205 : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) 15206 ? forms[1] 15207 : forms[2]; 15208 } 15209 function relativeTimeWithPlural$3(number, withoutSuffix, key) { 15210 var format = { 15211 ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд', 15212 mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', 15213 hh: 'час_часа_часов', 15214 dd: 'день_дня_дней', 15215 ww: 'неделя_недели_недель', 15216 MM: 'месяц_месяца_месяцев', 15217 yy: 'год_года_лет', 15218 }; 15219 if (key === 'm') { 15220 return withoutSuffix ? 'минута' : 'минуту'; 15221 } else { 15222 return number + ' ' + plural$4(format[key], +number); 15223 } 15224 } 15225 var monthsParse$b = [ 15226 /^янв/i, 15227 /^фев/i, 15228 /^мар/i, 15229 /^апр/i, 15230 /^ма[йя]/i, 15231 /^июн/i, 15232 /^июл/i, 15233 /^авг/i, 15234 /^сен/i, 15235 /^окт/i, 15236 /^ноя/i, 15237 /^дек/i, 15238 ]; 15239 15240 // http://new.gramota.ru/spravka/rules/139-prop : § 103 15241 // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637 15242 // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753 15243 hooks.defineLocale('ru', { 15244 months: { 15245 format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split( 15246 '_' 15247 ), 15248 standalone: 15249 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split( 15250 '_' 15251 ), 15252 }, 15253 monthsShort: { 15254 // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку? 15255 format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split( 15256 '_' 15257 ), 15258 standalone: 15259 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split( 15260 '_' 15261 ), 15262 }, 15263 weekdays: { 15264 standalone: 15265 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split( 15266 '_' 15267 ), 15268 format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split( 15269 '_' 15270 ), 15271 isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/, 15272 }, 15273 weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'), 15274 weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'), 15275 monthsParse: monthsParse$b, 15276 longMonthsParse: monthsParse$b, 15277 shortMonthsParse: monthsParse$b, 15278 15279 // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки 15280 monthsRegex: 15281 /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, 15282 15283 // копия предыдущего 15284 monthsShortRegex: 15285 /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, 15286 15287 // полные названия с падежами 15288 monthsStrictRegex: 15289 /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i, 15290 15291 // Выражение, которое соответствует только сокращённым формам 15292 monthsShortStrictRegex: 15293 /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i, 15294 longDateFormat: { 15295 LT: 'H:mm', 15296 LTS: 'H:mm:ss', 15297 L: 'DD.MM.YYYY', 15298 LL: 'D MMMM YYYY г.', 15299 LLL: 'D MMMM YYYY г., H:mm', 15300 LLLL: 'dddd, D MMMM YYYY г., H:mm', 15301 }, 15302 calendar: { 15303 sameDay: '[Сегодня, в] LT', 15304 nextDay: '[Завтра, в] LT', 15305 lastDay: '[Вчера, в] LT', 15306 nextWeek: function (now) { 15307 if (now.week() !== this.week()) { 15308 switch (this.day()) { 15309 case 0: 15310 return '[В следующее] dddd, [в] LT'; 15311 case 1: 15312 case 2: 15313 case 4: 15314 return '[В следующий] dddd, [в] LT'; 15315 case 3: 15316 case 5: 15317 case 6: 15318 return '[В следующую] dddd, [в] LT'; 15319 } 15320 } else { 15321 if (this.day() === 2) { 15322 return '[Во] dddd, [в] LT'; 15323 } else { 15324 return '[В] dddd, [в] LT'; 15325 } 15326 } 15327 }, 15328 lastWeek: function (now) { 15329 if (now.week() !== this.week()) { 15330 switch (this.day()) { 15331 case 0: 15332 return '[В прошлое] dddd, [в] LT'; 15333 case 1: 15334 case 2: 15335 case 4: 15336 return '[В прошлый] dddd, [в] LT'; 15337 case 3: 15338 case 5: 15339 case 6: 15340 return '[В прошлую] dddd, [в] LT'; 15341 } 15342 } else { 15343 if (this.day() === 2) { 15344 return '[Во] dddd, [в] LT'; 15345 } else { 15346 return '[В] dddd, [в] LT'; 15347 } 15348 } 15349 }, 15350 sameElse: 'L', 15351 }, 15352 relativeTime: { 15353 future: 'через %s', 15354 past: '%s назад', 15355 s: 'несколько секунд', 15356 ss: relativeTimeWithPlural$3, 15357 m: relativeTimeWithPlural$3, 15358 mm: relativeTimeWithPlural$3, 15359 h: 'час', 15360 hh: relativeTimeWithPlural$3, 15361 d: 'день', 15362 dd: relativeTimeWithPlural$3, 15363 w: 'неделя', 15364 ww: relativeTimeWithPlural$3, 15365 M: 'месяц', 15366 MM: relativeTimeWithPlural$3, 15367 y: 'год', 15368 yy: relativeTimeWithPlural$3, 15369 }, 15370 meridiemParse: /ночи|утра|дня|вечера/i, 15371 isPM: function (input) { 15372 return /^(дня|вечера)$/.test(input); 15373 }, 15374 meridiem: function (hour, minute, isLower) { 15375 if (hour < 4) { 15376 return 'ночи'; 15377 } else if (hour < 12) { 15378 return 'утра'; 15379 } else if (hour < 17) { 15380 return 'дня'; 15381 } else { 15382 return 'вечера'; 15383 } 15384 }, 15385 dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/, 15386 ordinal: function (number, period) { 15387 switch (period) { 15388 case 'M': 15389 case 'd': 15390 case 'DDD': 15391 return number + '-й'; 15392 case 'D': 15393 return number + '-го'; 15394 case 'w': 15395 case 'W': 15396 return number + '-я'; 15397 default: 15398 return number; 15399 } 15400 }, 15401 week: { 15402 dow: 1, // Monday is the first day of the week. 15403 doy: 4, // The week that contains Jan 4th is the first week of the year. 15404 }, 15405 }); 15406 15407 //! moment.js locale configuration 15408 15409 var months$9 = [ 15410 'جنوري', 15411 'فيبروري', 15412 'مارچ', 15413 'اپريل', 15414 'مئي', 15415 'جون', 15416 'جولاءِ', 15417 'آگسٽ', 15418 'سيپٽمبر', 15419 'آڪٽوبر', 15420 'نومبر', 15421 'ڊسمبر', 15422 ], 15423 days$1 = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر']; 15424 15425 hooks.defineLocale('sd', { 15426 months: months$9, 15427 monthsShort: months$9, 15428 weekdays: days$1, 15429 weekdaysShort: days$1, 15430 weekdaysMin: days$1, 15431 longDateFormat: { 15432 LT: 'HH:mm', 15433 LTS: 'HH:mm:ss', 15434 L: 'DD/MM/YYYY', 15435 LL: 'D MMMM YYYY', 15436 LLL: 'D MMMM YYYY HH:mm', 15437 LLLL: 'dddd، D MMMM YYYY HH:mm', 15438 }, 15439 meridiemParse: /صبح|شام/, 15440 isPM: function (input) { 15441 return 'شام' === input; 15442 }, 15443 meridiem: function (hour, minute, isLower) { 15444 if (hour < 12) { 15445 return 'صبح'; 15446 } 15447 return 'شام'; 15448 }, 15449 calendar: { 15450 sameDay: '[اڄ] LT', 15451 nextDay: '[سڀاڻي] LT', 15452 nextWeek: 'dddd [اڳين هفتي تي] LT', 15453 lastDay: '[ڪالهه] LT', 15454 lastWeek: '[گزريل هفتي] dddd [تي] LT', 15455 sameElse: 'L', 15456 }, 15457 relativeTime: { 15458 future: '%s پوء', 15459 past: '%s اڳ', 15460 s: 'چند سيڪنڊ', 15461 ss: '%d سيڪنڊ', 15462 m: 'هڪ منٽ', 15463 mm: '%d منٽ', 15464 h: 'هڪ ڪلاڪ', 15465 hh: '%d ڪلاڪ', 15466 d: 'هڪ ڏينهن', 15467 dd: '%d ڏينهن', 15468 M: 'هڪ مهينو', 15469 MM: '%d مهينا', 15470 y: 'هڪ سال', 15471 yy: '%d سال', 15472 }, 15473 preparse: function (string) { 15474 return string.replace(/،/g, ','); 15475 }, 15476 postformat: function (string) { 15477 return string.replace(/,/g, '،'); 15478 }, 15479 week: { 15480 dow: 1, // Monday is the first day of the week. 15481 doy: 4, // The week that contains Jan 4th is the first week of the year. 15482 }, 15483 }); 15484 15485 //! moment.js locale configuration 15486 15487 hooks.defineLocale('se', { 15488 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( 15489 '_' 15490 ), 15491 monthsShort: 15492 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'), 15493 weekdays: 15494 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split( 15495 '_' 15496 ), 15497 weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'), 15498 weekdaysMin: 's_v_m_g_d_b_L'.split('_'), 15499 longDateFormat: { 15500 LT: 'HH:mm', 15501 LTS: 'HH:mm:ss', 15502 L: 'DD.MM.YYYY', 15503 LL: 'MMMM D. [b.] YYYY', 15504 LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm', 15505 LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm', 15506 }, 15507 calendar: { 15508 sameDay: '[otne ti] LT', 15509 nextDay: '[ihttin ti] LT', 15510 nextWeek: 'dddd [ti] LT', 15511 lastDay: '[ikte ti] LT', 15512 lastWeek: '[ovddit] dddd [ti] LT', 15513 sameElse: 'L', 15514 }, 15515 relativeTime: { 15516 future: '%s geažes', 15517 past: 'maŋit %s', 15518 s: 'moadde sekunddat', 15519 ss: '%d sekunddat', 15520 m: 'okta minuhta', 15521 mm: '%d minuhtat', 15522 h: 'okta diimmu', 15523 hh: '%d diimmut', 15524 d: 'okta beaivi', 15525 dd: '%d beaivvit', 15526 M: 'okta mánnu', 15527 MM: '%d mánut', 15528 y: 'okta jahki', 15529 yy: '%d jagit', 15530 }, 15531 dayOfMonthOrdinalParse: /\d{1,2}\./, 15532 ordinal: '%d.', 15533 week: { 15534 dow: 1, // Monday is the first day of the week. 15535 doy: 4, // The week that contains Jan 4th is the first week of the year. 15536 }, 15537 }); 15538 15539 //! moment.js locale configuration 15540 15541 /*jshint -W100*/ 15542 hooks.defineLocale('si', { 15543 months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split( 15544 '_' 15545 ), 15546 monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split( 15547 '_' 15548 ), 15549 weekdays: 15550 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split( 15551 '_' 15552 ), 15553 weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන'.split('_'), 15554 weekdaysMin: 'ඉ_ස_අ_බ_බ්ර_සි_සෙ'.split('_'), 15555 weekdaysParseExact: true, 15556 longDateFormat: { 15557 LT: 'a h:mm', 15558 LTS: 'a h:mm:ss', 15559 L: 'YYYY/MM/DD', 15560 LL: 'YYYY MMMM D', 15561 LLL: 'YYYY MMMM D, a h:mm', 15562 LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss', 15563 }, 15564 calendar: { 15565 sameDay: '[අද] LT[ට]', 15566 nextDay: '[හෙට] LT[ට]', 15567 nextWeek: 'dddd LT[ට]', 15568 lastDay: '[ඊයේ] LT[ට]', 15569 lastWeek: '[පසුගිය] dddd LT[ට]', 15570 sameElse: 'L', 15571 }, 15572 relativeTime: { 15573 future: '%sකින්', 15574 past: '%sකට පෙර', 15575 s: 'තත්පර කිහිපය', 15576 ss: 'තත්පර %d', 15577 m: 'මිනිත්තුව', 15578 mm: 'මිනිත්තු %d', 15579 h: 'පැය', 15580 hh: 'පැය %d', 15581 d: 'දිනය', 15582 dd: 'දින %d', 15583 M: 'මාසය', 15584 MM: 'මාස %d', 15585 y: 'වසර', 15586 yy: 'වසර %d', 15587 }, 15588 dayOfMonthOrdinalParse: /\d{1,2} වැනි/, 15589 ordinal: function (number) { 15590 return number + ' වැනි'; 15591 }, 15592 meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./, 15593 isPM: function (input) { 15594 return input === 'ප.ව.' || input === 'පස් වරු'; 15595 }, 15596 meridiem: function (hours, minutes, isLower) { 15597 if (hours > 11) { 15598 return isLower ? 'ප.ව.' : 'පස් වරු'; 15599 } else { 15600 return isLower ? 'පෙ.ව.' : 'පෙර වරු'; 15601 } 15602 }, 15603 }); 15604 15605 //! moment.js locale configuration 15606 15607 var months$a = 15608 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split( 15609 '_' 15610 ), 15611 monthsShort$7 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); 15612 function plural$5(n) { 15613 return n > 1 && n < 5; 15614 } 15615 function translate$9(number, withoutSuffix, key, isFuture) { 15616 var result = number + ' '; 15617 switch (key) { 15618 case 's': // a few seconds / in a few seconds / a few seconds ago 15619 return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami'; 15620 case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago 15621 if (withoutSuffix || isFuture) { 15622 return result + (plural$5(number) ? 'sekundy' : 'sekúnd'); 15623 } else { 15624 return result + 'sekundami'; 15625 } 15626 case 'm': // a minute / in a minute / a minute ago 15627 return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou'; 15628 case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago 15629 if (withoutSuffix || isFuture) { 15630 return result + (plural$5(number) ? 'minúty' : 'minút'); 15631 } else { 15632 return result + 'minútami'; 15633 } 15634 case 'h': // an hour / in an hour / an hour ago 15635 return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; 15636 case 'hh': // 9 hours / in 9 hours / 9 hours ago 15637 if (withoutSuffix || isFuture) { 15638 return result + (plural$5(number) ? 'hodiny' : 'hodín'); 15639 } else { 15640 return result + 'hodinami'; 15641 } 15642 case 'd': // a day / in a day / a day ago 15643 return withoutSuffix || isFuture ? 'deň' : 'dňom'; 15644 case 'dd': // 9 days / in 9 days / 9 days ago 15645 if (withoutSuffix || isFuture) { 15646 return result + (plural$5(number) ? 'dni' : 'dní'); 15647 } else { 15648 return result + 'dňami'; 15649 } 15650 case 'M': // a month / in a month / a month ago 15651 return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom'; 15652 case 'MM': // 9 months / in 9 months / 9 months ago 15653 if (withoutSuffix || isFuture) { 15654 return result + (plural$5(number) ? 'mesiace' : 'mesiacov'); 15655 } else { 15656 return result + 'mesiacmi'; 15657 } 15658 case 'y': // a year / in a year / a year ago 15659 return withoutSuffix || isFuture ? 'rok' : 'rokom'; 15660 case 'yy': // 9 years / in 9 years / 9 years ago 15661 if (withoutSuffix || isFuture) { 15662 return result + (plural$5(number) ? 'roky' : 'rokov'); 15663 } else { 15664 return result + 'rokmi'; 15665 } 15666 } 15667 } 15668 15669 hooks.defineLocale('sk', { 15670 months: months$a, 15671 monthsShort: monthsShort$7, 15672 weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), 15673 weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'), 15674 weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'), 15675 longDateFormat: { 15676 LT: 'H:mm', 15677 LTS: 'H:mm:ss', 15678 L: 'DD.MM.YYYY', 15679 LL: 'D. MMMM YYYY', 15680 LLL: 'D. MMMM YYYY H:mm', 15681 LLLL: 'dddd D. MMMM YYYY H:mm', 15682 }, 15683 calendar: { 15684 sameDay: '[dnes o] LT', 15685 nextDay: '[zajtra o] LT', 15686 nextWeek: function () { 15687 switch (this.day()) { 15688 case 0: 15689 return '[v nedeľu o] LT'; 15690 case 1: 15691 case 2: 15692 return '[v] dddd [o] LT'; 15693 case 3: 15694 return '[v stredu o] LT'; 15695 case 4: 15696 return '[vo štvrtok o] LT'; 15697 case 5: 15698 return '[v piatok o] LT'; 15699 case 6: 15700 return '[v sobotu o] LT'; 15701 } 15702 }, 15703 lastDay: '[včera o] LT', 15704 lastWeek: function () { 15705 switch (this.day()) { 15706 case 0: 15707 return '[minulú nedeľu o] LT'; 15708 case 1: 15709 case 2: 15710 return '[minulý] dddd [o] LT'; 15711 case 3: 15712 return '[minulú stredu o] LT'; 15713 case 4: 15714 case 5: 15715 return '[minulý] dddd [o] LT'; 15716 case 6: 15717 return '[minulú sobotu o] LT'; 15718 } 15719 }, 15720 sameElse: 'L', 15721 }, 15722 relativeTime: { 15723 future: 'za %s', 15724 past: 'pred %s', 15725 s: translate$9, 15726 ss: translate$9, 15727 m: translate$9, 15728 mm: translate$9, 15729 h: translate$9, 15730 hh: translate$9, 15731 d: translate$9, 15732 dd: translate$9, 15733 M: translate$9, 15734 MM: translate$9, 15735 y: translate$9, 15736 yy: translate$9, 15737 }, 15738 dayOfMonthOrdinalParse: /\d{1,2}\./, 15739 ordinal: '%d.', 15740 week: { 15741 dow: 1, // Monday is the first day of the week. 15742 doy: 4, // The week that contains Jan 4th is the first week of the year. 15743 }, 15744 }); 15745 15746 //! moment.js locale configuration 15747 15748 function processRelativeTime$9(number, withoutSuffix, key, isFuture) { 15749 var result = number + ' '; 15750 switch (key) { 15751 case 's': 15752 return withoutSuffix || isFuture 15753 ? 'nekaj sekund' 15754 : 'nekaj sekundami'; 15755 case 'ss': 15756 if (number === 1) { 15757 result += withoutSuffix ? 'sekundo' : 'sekundi'; 15758 } else if (number === 2) { 15759 result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah'; 15760 } else if (number < 5) { 15761 result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah'; 15762 } else { 15763 result += 'sekund'; 15764 } 15765 return result; 15766 case 'm': 15767 return withoutSuffix ? 'ena minuta' : 'eno minuto'; 15768 case 'mm': 15769 if (number === 1) { 15770 result += withoutSuffix ? 'minuta' : 'minuto'; 15771 } else if (number === 2) { 15772 result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; 15773 } else if (number < 5) { 15774 result += withoutSuffix || isFuture ? 'minute' : 'minutami'; 15775 } else { 15776 result += withoutSuffix || isFuture ? 'minut' : 'minutami'; 15777 } 15778 return result; 15779 case 'h': 15780 return withoutSuffix ? 'ena ura' : 'eno uro'; 15781 case 'hh': 15782 if (number === 1) { 15783 result += withoutSuffix ? 'ura' : 'uro'; 15784 } else if (number === 2) { 15785 result += withoutSuffix || isFuture ? 'uri' : 'urama'; 15786 } else if (number < 5) { 15787 result += withoutSuffix || isFuture ? 'ure' : 'urami'; 15788 } else { 15789 result += withoutSuffix || isFuture ? 'ur' : 'urami'; 15790 } 15791 return result; 15792 case 'd': 15793 return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; 15794 case 'dd': 15795 if (number === 1) { 15796 result += withoutSuffix || isFuture ? 'dan' : 'dnem'; 15797 } else if (number === 2) { 15798 result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; 15799 } else { 15800 result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; 15801 } 15802 return result; 15803 case 'M': 15804 return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; 15805 case 'MM': 15806 if (number === 1) { 15807 result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; 15808 } else if (number === 2) { 15809 result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; 15810 } else if (number < 5) { 15811 result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; 15812 } else { 15813 result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; 15814 } 15815 return result; 15816 case 'y': 15817 return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; 15818 case 'yy': 15819 if (number === 1) { 15820 result += withoutSuffix || isFuture ? 'leto' : 'letom'; 15821 } else if (number === 2) { 15822 result += withoutSuffix || isFuture ? 'leti' : 'letoma'; 15823 } else if (number < 5) { 15824 result += withoutSuffix || isFuture ? 'leta' : 'leti'; 15825 } else { 15826 result += withoutSuffix || isFuture ? 'let' : 'leti'; 15827 } 15828 return result; 15829 } 15830 } 15831 15832 hooks.defineLocale('sl', { 15833 months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split( 15834 '_' 15835 ), 15836 monthsShort: 15837 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split( 15838 '_' 15839 ), 15840 monthsParseExact: true, 15841 weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), 15842 weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), 15843 weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'), 15844 weekdaysParseExact: true, 15845 longDateFormat: { 15846 LT: 'H:mm', 15847 LTS: 'H:mm:ss', 15848 L: 'DD. MM. YYYY', 15849 LL: 'D. MMMM YYYY', 15850 LLL: 'D. MMMM YYYY H:mm', 15851 LLLL: 'dddd, D. MMMM YYYY H:mm', 15852 }, 15853 calendar: { 15854 sameDay: '[danes ob] LT', 15855 nextDay: '[jutri ob] LT', 15856 15857 nextWeek: function () { 15858 switch (this.day()) { 15859 case 0: 15860 return '[v] [nedeljo] [ob] LT'; 15861 case 3: 15862 return '[v] [sredo] [ob] LT'; 15863 case 6: 15864 return '[v] [soboto] [ob] LT'; 15865 case 1: 15866 case 2: 15867 case 4: 15868 case 5: 15869 return '[v] dddd [ob] LT'; 15870 } 15871 }, 15872 lastDay: '[včeraj ob] LT', 15873 lastWeek: function () { 15874 switch (this.day()) { 15875 case 0: 15876 return '[prejšnjo] [nedeljo] [ob] LT'; 15877 case 3: 15878 return '[prejšnjo] [sredo] [ob] LT'; 15879 case 6: 15880 return '[prejšnjo] [soboto] [ob] LT'; 15881 case 1: 15882 case 2: 15883 case 4: 15884 case 5: 15885 return '[prejšnji] dddd [ob] LT'; 15886 } 15887 }, 15888 sameElse: 'L', 15889 }, 15890 relativeTime: { 15891 future: 'čez %s', 15892 past: 'pred %s', 15893 s: processRelativeTime$9, 15894 ss: processRelativeTime$9, 15895 m: processRelativeTime$9, 15896 mm: processRelativeTime$9, 15897 h: processRelativeTime$9, 15898 hh: processRelativeTime$9, 15899 d: processRelativeTime$9, 15900 dd: processRelativeTime$9, 15901 M: processRelativeTime$9, 15902 MM: processRelativeTime$9, 15903 y: processRelativeTime$9, 15904 yy: processRelativeTime$9, 15905 }, 15906 dayOfMonthOrdinalParse: /\d{1,2}\./, 15907 ordinal: '%d.', 15908 week: { 15909 dow: 1, // Monday is the first day of the week. 15910 doy: 7, // The week that contains Jan 7th is the first week of the year. 15911 }, 15912 }); 15913 15914 //! moment.js locale configuration 15915 15916 hooks.defineLocale('sq', { 15917 months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split( 15918 '_' 15919 ), 15920 monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), 15921 weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split( 15922 '_' 15923 ), 15924 weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), 15925 weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'), 15926 weekdaysParseExact: true, 15927 meridiemParse: /PD|MD/, 15928 isPM: function (input) { 15929 return input.charAt(0) === 'M'; 15930 }, 15931 meridiem: function (hours, minutes, isLower) { 15932 return hours < 12 ? 'PD' : 'MD'; 15933 }, 15934 longDateFormat: { 15935 LT: 'HH:mm', 15936 LTS: 'HH:mm:ss', 15937 L: 'DD/MM/YYYY', 15938 LL: 'D MMMM YYYY', 15939 LLL: 'D MMMM YYYY HH:mm', 15940 LLLL: 'dddd, D MMMM YYYY HH:mm', 15941 }, 15942 calendar: { 15943 sameDay: '[Sot në] LT', 15944 nextDay: '[Nesër në] LT', 15945 nextWeek: 'dddd [në] LT', 15946 lastDay: '[Dje në] LT', 15947 lastWeek: 'dddd [e kaluar në] LT', 15948 sameElse: 'L', 15949 }, 15950 relativeTime: { 15951 future: 'në %s', 15952 past: '%s më parë', 15953 s: 'disa sekonda', 15954 ss: '%d sekonda', 15955 m: 'një minutë', 15956 mm: '%d minuta', 15957 h: 'një orë', 15958 hh: '%d orë', 15959 d: 'një ditë', 15960 dd: '%d ditë', 15961 M: 'një muaj', 15962 MM: '%d muaj', 15963 y: 'një vit', 15964 yy: '%d vite', 15965 }, 15966 dayOfMonthOrdinalParse: /\d{1,2}\./, 15967 ordinal: '%d.', 15968 week: { 15969 dow: 1, // Monday is the first day of the week. 15970 doy: 4, // The week that contains Jan 4th is the first week of the year. 15971 }, 15972 }); 15973 15974 //! moment.js locale configuration 15975 15976 var translator$1 = { 15977 words: { 15978 //Different grammatical cases 15979 ss: ['секунда', 'секунде', 'секунди'], 15980 m: ['један минут', 'једног минута'], 15981 mm: ['минут', 'минута', 'минута'], 15982 h: ['један сат', 'једног сата'], 15983 hh: ['сат', 'сата', 'сати'], 15984 d: ['један дан', 'једног дана'], 15985 dd: ['дан', 'дана', 'дана'], 15986 M: ['један месец', 'једног месеца'], 15987 MM: ['месец', 'месеца', 'месеци'], 15988 y: ['једну годину', 'једне године'], 15989 yy: ['годину', 'године', 'година'], 15990 }, 15991 correctGrammaticalCase: function (number, wordKey) { 15992 if ( 15993 number % 10 >= 1 && 15994 number % 10 <= 4 && 15995 (number % 100 < 10 || number % 100 >= 20) 15996 ) { 15997 return number % 10 === 1 ? wordKey[0] : wordKey[1]; 15998 } 15999 return wordKey[2]; 16000 }, 16001 translate: function (number, withoutSuffix, key, isFuture) { 16002 var wordKey = translator$1.words[key], 16003 word; 16004 16005 if (key.length === 1) { 16006 // Nominativ 16007 if (key === 'y' && withoutSuffix) return 'једна година'; 16008 return isFuture || withoutSuffix ? wordKey[0] : wordKey[1]; 16009 } 16010 16011 word = translator$1.correctGrammaticalCase(number, wordKey); 16012 // Nominativ 16013 if (key === 'yy' && withoutSuffix && word === 'годину') { 16014 return number + ' година'; 16015 } 16016 16017 return number + ' ' + word; 16018 }, 16019 }; 16020 16021 hooks.defineLocale('sr-cyrl', { 16022 months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split( 16023 '_' 16024 ), 16025 monthsShort: 16026 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'), 16027 monthsParseExact: true, 16028 weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'), 16029 weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'), 16030 weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'), 16031 weekdaysParseExact: true, 16032 longDateFormat: { 16033 LT: 'H:mm', 16034 LTS: 'H:mm:ss', 16035 L: 'D. M. YYYY.', 16036 LL: 'D. MMMM YYYY.', 16037 LLL: 'D. MMMM YYYY. H:mm', 16038 LLLL: 'dddd, D. MMMM YYYY. H:mm', 16039 }, 16040 calendar: { 16041 sameDay: '[данас у] LT', 16042 nextDay: '[сутра у] LT', 16043 nextWeek: function () { 16044 switch (this.day()) { 16045 case 0: 16046 return '[у] [недељу] [у] LT'; 16047 case 3: 16048 return '[у] [среду] [у] LT'; 16049 case 6: 16050 return '[у] [суботу] [у] LT'; 16051 case 1: 16052 case 2: 16053 case 4: 16054 case 5: 16055 return '[у] dddd [у] LT'; 16056 } 16057 }, 16058 lastDay: '[јуче у] LT', 16059 lastWeek: function () { 16060 var lastWeekDays = [ 16061 '[прошле] [недеље] [у] LT', 16062 '[прошлог] [понедељка] [у] LT', 16063 '[прошлог] [уторка] [у] LT', 16064 '[прошле] [среде] [у] LT', 16065 '[прошлог] [четвртка] [у] LT', 16066 '[прошлог] [петка] [у] LT', 16067 '[прошле] [суботе] [у] LT', 16068 ]; 16069 return lastWeekDays[this.day()]; 16070 }, 16071 sameElse: 'L', 16072 }, 16073 relativeTime: { 16074 future: 'за %s', 16075 past: 'пре %s', 16076 s: 'неколико секунди', 16077 ss: translator$1.translate, 16078 m: translator$1.translate, 16079 mm: translator$1.translate, 16080 h: translator$1.translate, 16081 hh: translator$1.translate, 16082 d: translator$1.translate, 16083 dd: translator$1.translate, 16084 M: translator$1.translate, 16085 MM: translator$1.translate, 16086 y: translator$1.translate, 16087 yy: translator$1.translate, 16088 }, 16089 dayOfMonthOrdinalParse: /\d{1,2}\./, 16090 ordinal: '%d.', 16091 week: { 16092 dow: 1, // Monday is the first day of the week. 16093 doy: 7, // The week that contains Jan 1st is the first week of the year. 16094 }, 16095 }); 16096 16097 //! moment.js locale configuration 16098 16099 var translator$2 = { 16100 words: { 16101 //Different grammatical cases 16102 ss: ['sekunda', 'sekunde', 'sekundi'], 16103 m: ['jedan minut', 'jednog minuta'], 16104 mm: ['minut', 'minuta', 'minuta'], 16105 h: ['jedan sat', 'jednog sata'], 16106 hh: ['sat', 'sata', 'sati'], 16107 d: ['jedan dan', 'jednog dana'], 16108 dd: ['dan', 'dana', 'dana'], 16109 M: ['jedan mesec', 'jednog meseca'], 16110 MM: ['mesec', 'meseca', 'meseci'], 16111 y: ['jednu godinu', 'jedne godine'], 16112 yy: ['godinu', 'godine', 'godina'], 16113 }, 16114 correctGrammaticalCase: function (number, wordKey) { 16115 if ( 16116 number % 10 >= 1 && 16117 number % 10 <= 4 && 16118 (number % 100 < 10 || number % 100 >= 20) 16119 ) { 16120 return number % 10 === 1 ? wordKey[0] : wordKey[1]; 16121 } 16122 return wordKey[2]; 16123 }, 16124 translate: function (number, withoutSuffix, key, isFuture) { 16125 var wordKey = translator$2.words[key], 16126 word; 16127 16128 if (key.length === 1) { 16129 // Nominativ 16130 if (key === 'y' && withoutSuffix) return 'jedna godina'; 16131 return isFuture || withoutSuffix ? wordKey[0] : wordKey[1]; 16132 } 16133 16134 word = translator$2.correctGrammaticalCase(number, wordKey); 16135 // Nominativ 16136 if (key === 'yy' && withoutSuffix && word === 'godinu') { 16137 return number + ' godina'; 16138 } 16139 16140 return number + ' ' + word; 16141 }, 16142 }; 16143 16144 hooks.defineLocale('sr', { 16145 months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split( 16146 '_' 16147 ), 16148 monthsShort: 16149 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), 16150 monthsParseExact: true, 16151 weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split( 16152 '_' 16153 ), 16154 weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'), 16155 weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), 16156 weekdaysParseExact: true, 16157 longDateFormat: { 16158 LT: 'H:mm', 16159 LTS: 'H:mm:ss', 16160 L: 'D. M. YYYY.', 16161 LL: 'D. MMMM YYYY.', 16162 LLL: 'D. MMMM YYYY. H:mm', 16163 LLLL: 'dddd, D. MMMM YYYY. H:mm', 16164 }, 16165 calendar: { 16166 sameDay: '[danas u] LT', 16167 nextDay: '[sutra u] LT', 16168 nextWeek: function () { 16169 switch (this.day()) { 16170 case 0: 16171 return '[u] [nedelju] [u] LT'; 16172 case 3: 16173 return '[u] [sredu] [u] LT'; 16174 case 6: 16175 return '[u] [subotu] [u] LT'; 16176 case 1: 16177 case 2: 16178 case 4: 16179 case 5: 16180 return '[u] dddd [u] LT'; 16181 } 16182 }, 16183 lastDay: '[juče u] LT', 16184 lastWeek: function () { 16185 var lastWeekDays = [ 16186 '[prošle] [nedelje] [u] LT', 16187 '[prošlog] [ponedeljka] [u] LT', 16188 '[prošlog] [utorka] [u] LT', 16189 '[prošle] [srede] [u] LT', 16190 '[prošlog] [četvrtka] [u] LT', 16191 '[prošlog] [petka] [u] LT', 16192 '[prošle] [subote] [u] LT', 16193 ]; 16194 return lastWeekDays[this.day()]; 16195 }, 16196 sameElse: 'L', 16197 }, 16198 relativeTime: { 16199 future: 'za %s', 16200 past: 'pre %s', 16201 s: 'nekoliko sekundi', 16202 ss: translator$2.translate, 16203 m: translator$2.translate, 16204 mm: translator$2.translate, 16205 h: translator$2.translate, 16206 hh: translator$2.translate, 16207 d: translator$2.translate, 16208 dd: translator$2.translate, 16209 M: translator$2.translate, 16210 MM: translator$2.translate, 16211 y: translator$2.translate, 16212 yy: translator$2.translate, 16213 }, 16214 dayOfMonthOrdinalParse: /\d{1,2}\./, 16215 ordinal: '%d.', 16216 week: { 16217 dow: 1, // Monday is the first day of the week. 16218 doy: 7, // The week that contains Jan 7th is the first week of the year. 16219 }, 16220 }); 16221 16222 //! moment.js locale configuration 16223 16224 hooks.defineLocale('ss', { 16225 months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split( 16226 '_' 16227 ), 16228 monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'), 16229 weekdays: 16230 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split( 16231 '_' 16232 ), 16233 weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'), 16234 weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'), 16235 weekdaysParseExact: true, 16236 longDateFormat: { 16237 LT: 'h:mm A', 16238 LTS: 'h:mm:ss A', 16239 L: 'DD/MM/YYYY', 16240 LL: 'D MMMM YYYY', 16241 LLL: 'D MMMM YYYY h:mm A', 16242 LLLL: 'dddd, D MMMM YYYY h:mm A', 16243 }, 16244 calendar: { 16245 sameDay: '[Namuhla nga] LT', 16246 nextDay: '[Kusasa nga] LT', 16247 nextWeek: 'dddd [nga] LT', 16248 lastDay: '[Itolo nga] LT', 16249 lastWeek: 'dddd [leliphelile] [nga] LT', 16250 sameElse: 'L', 16251 }, 16252 relativeTime: { 16253 future: 'nga %s', 16254 past: 'wenteka nga %s', 16255 s: 'emizuzwana lomcane', 16256 ss: '%d mzuzwana', 16257 m: 'umzuzu', 16258 mm: '%d emizuzu', 16259 h: 'lihora', 16260 hh: '%d emahora', 16261 d: 'lilanga', 16262 dd: '%d emalanga', 16263 M: 'inyanga', 16264 MM: '%d tinyanga', 16265 y: 'umnyaka', 16266 yy: '%d iminyaka', 16267 }, 16268 meridiemParse: /ekuseni|emini|entsambama|ebusuku/, 16269 meridiem: function (hours, minutes, isLower) { 16270 if (hours < 11) { 16271 return 'ekuseni'; 16272 } else if (hours < 15) { 16273 return 'emini'; 16274 } else if (hours < 19) { 16275 return 'entsambama'; 16276 } else { 16277 return 'ebusuku'; 16278 } 16279 }, 16280 meridiemHour: function (hour, meridiem) { 16281 if (hour === 12) { 16282 hour = 0; 16283 } 16284 if (meridiem === 'ekuseni') { 16285 return hour; 16286 } else if (meridiem === 'emini') { 16287 return hour >= 11 ? hour : hour + 12; 16288 } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') { 16289 if (hour === 0) { 16290 return 0; 16291 } 16292 return hour + 12; 16293 } 16294 }, 16295 dayOfMonthOrdinalParse: /\d{1,2}/, 16296 ordinal: '%d', 16297 week: { 16298 dow: 1, // Monday is the first day of the week. 16299 doy: 4, // The week that contains Jan 4th is the first week of the year. 16300 }, 16301 }); 16302 16303 //! moment.js locale configuration 16304 16305 hooks.defineLocale('sv', { 16306 months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split( 16307 '_' 16308 ), 16309 monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), 16310 weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), 16311 weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'), 16312 weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'), 16313 longDateFormat: { 16314 LT: 'HH:mm', 16315 LTS: 'HH:mm:ss', 16316 L: 'YYYY-MM-DD', 16317 LL: 'D MMMM YYYY', 16318 LLL: 'D MMMM YYYY [kl.] HH:mm', 16319 LLLL: 'dddd D MMMM YYYY [kl.] HH:mm', 16320 lll: 'D MMM YYYY HH:mm', 16321 llll: 'ddd D MMM YYYY HH:mm', 16322 }, 16323 calendar: { 16324 sameDay: '[Idag] LT', 16325 nextDay: '[Imorgon] LT', 16326 lastDay: '[Igår] LT', 16327 nextWeek: '[På] dddd LT', 16328 lastWeek: '[I] dddd[s] LT', 16329 sameElse: 'L', 16330 }, 16331 relativeTime: { 16332 future: 'om %s', 16333 past: 'för %s sedan', 16334 s: 'några sekunder', 16335 ss: '%d sekunder', 16336 m: 'en minut', 16337 mm: '%d minuter', 16338 h: 'en timme', 16339 hh: '%d timmar', 16340 d: 'en dag', 16341 dd: '%d dagar', 16342 M: 'en månad', 16343 MM: '%d månader', 16344 y: 'ett år', 16345 yy: '%d år', 16346 }, 16347 dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/, 16348 ordinal: function (number) { 16349 var b = number % 10, 16350 output = 16351 ~~((number % 100) / 10) === 1 16352 ? ':e' 16353 : b === 1 16354 ? ':a' 16355 : b === 2 16356 ? ':a' 16357 : b === 3 16358 ? ':e' 16359 : ':e'; 16360 return number + output; 16361 }, 16362 week: { 16363 dow: 1, // Monday is the first day of the week. 16364 doy: 4, // The week that contains Jan 4th is the first week of the year. 16365 }, 16366 }); 16367 16368 //! moment.js locale configuration 16369 16370 hooks.defineLocale('sw', { 16371 months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split( 16372 '_' 16373 ), 16374 monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'), 16375 weekdays: 16376 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split( 16377 '_' 16378 ), 16379 weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'), 16380 weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'), 16381 weekdaysParseExact: true, 16382 longDateFormat: { 16383 LT: 'hh:mm A', 16384 LTS: 'HH:mm:ss', 16385 L: 'DD.MM.YYYY', 16386 LL: 'D MMMM YYYY', 16387 LLL: 'D MMMM YYYY HH:mm', 16388 LLLL: 'dddd, D MMMM YYYY HH:mm', 16389 }, 16390 calendar: { 16391 sameDay: '[leo saa] LT', 16392 nextDay: '[kesho saa] LT', 16393 nextWeek: '[wiki ijayo] dddd [saat] LT', 16394 lastDay: '[jana] LT', 16395 lastWeek: '[wiki iliyopita] dddd [saat] LT', 16396 sameElse: 'L', 16397 }, 16398 relativeTime: { 16399 future: '%s baadaye', 16400 past: 'tokea %s', 16401 s: 'hivi punde', 16402 ss: 'sekunde %d', 16403 m: 'dakika moja', 16404 mm: 'dakika %d', 16405 h: 'saa limoja', 16406 hh: 'masaa %d', 16407 d: 'siku moja', 16408 dd: 'siku %d', 16409 M: 'mwezi mmoja', 16410 MM: 'miezi %d', 16411 y: 'mwaka mmoja', 16412 yy: 'miaka %d', 16413 }, 16414 week: { 16415 dow: 1, // Monday is the first day of the week. 16416 doy: 7, // The week that contains Jan 7th is the first week of the year. 16417 }, 16418 }); 16419 16420 //! moment.js locale configuration 16421 16422 var symbolMap$h = { 16423 1: '௧', 16424 2: '௨', 16425 3: '௩', 16426 4: '௪', 16427 5: '௫', 16428 6: '௬', 16429 7: '௭', 16430 8: '௮', 16431 9: '௯', 16432 0: '௦', 16433 }, 16434 numberMap$g = { 16435 '௧': '1', 16436 '௨': '2', 16437 '௩': '3', 16438 '௪': '4', 16439 '௫': '5', 16440 '௬': '6', 16441 '௭': '7', 16442 '௮': '8', 16443 '௯': '9', 16444 '௦': '0', 16445 }; 16446 16447 hooks.defineLocale('ta', { 16448 months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split( 16449 '_' 16450 ), 16451 monthsShort: 16452 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split( 16453 '_' 16454 ), 16455 weekdays: 16456 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split( 16457 '_' 16458 ), 16459 weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split( 16460 '_' 16461 ), 16462 weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), 16463 longDateFormat: { 16464 LT: 'HH:mm', 16465 LTS: 'HH:mm:ss', 16466 L: 'DD/MM/YYYY', 16467 LL: 'D MMMM YYYY', 16468 LLL: 'D MMMM YYYY, HH:mm', 16469 LLLL: 'dddd, D MMMM YYYY, HH:mm', 16470 }, 16471 calendar: { 16472 sameDay: '[இன்று] LT', 16473 nextDay: '[நாளை] LT', 16474 nextWeek: 'dddd, LT', 16475 lastDay: '[நேற்று] LT', 16476 lastWeek: '[கடந்த வாரம்] dddd, LT', 16477 sameElse: 'L', 16478 }, 16479 relativeTime: { 16480 future: '%s இல்', 16481 past: '%s முன்', 16482 s: 'ஒரு சில விநாடிகள்', 16483 ss: '%d விநாடிகள்', 16484 m: 'ஒரு நிமிடம்', 16485 mm: '%d நிமிடங்கள்', 16486 h: 'ஒரு மணி நேரம்', 16487 hh: '%d மணி நேரம்', 16488 d: 'ஒரு நாள்', 16489 dd: '%d நாட்கள்', 16490 M: 'ஒரு மாதம்', 16491 MM: '%d மாதங்கள்', 16492 y: 'ஒரு வருடம்', 16493 yy: '%d ஆண்டுகள்', 16494 }, 16495 dayOfMonthOrdinalParse: /\d{1,2}வது/, 16496 ordinal: function (number) { 16497 return number + 'வது'; 16498 }, 16499 preparse: function (string) { 16500 return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) { 16501 return numberMap$g[match]; 16502 }); 16503 }, 16504 postformat: function (string) { 16505 return string.replace(/\d/g, function (match) { 16506 return symbolMap$h[match]; 16507 }); 16508 }, 16509 // refer http://ta.wikipedia.org/s/1er1 16510 meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, 16511 meridiem: function (hour, minute, isLower) { 16512 if (hour < 2) { 16513 return ' யாமம்'; 16514 } else if (hour < 6) { 16515 return ' வைகறை'; // வைகறை 16516 } else if (hour < 10) { 16517 return ' காலை'; // காலை 16518 } else if (hour < 14) { 16519 return ' நண்பகல்'; // நண்பகல் 16520 } else if (hour < 18) { 16521 return ' எற்பாடு'; // எற்பாடு 16522 } else if (hour < 22) { 16523 return ' மாலை'; // மாலை 16524 } else { 16525 return ' யாமம்'; 16526 } 16527 }, 16528 meridiemHour: function (hour, meridiem) { 16529 if (hour === 12) { 16530 hour = 0; 16531 } 16532 if (meridiem === 'யாமம்') { 16533 return hour < 2 ? hour : hour + 12; 16534 } else if (meridiem === 'வைகறை' || meridiem === 'காலை') { 16535 return hour; 16536 } else if (meridiem === 'நண்பகல்') { 16537 return hour >= 10 ? hour : hour + 12; 16538 } else { 16539 return hour + 12; 16540 } 16541 }, 16542 week: { 16543 dow: 0, // Sunday is the first day of the week. 16544 doy: 6, // The week that contains Jan 6th is the first week of the year. 16545 }, 16546 }); 16547 16548 //! moment.js locale configuration 16549 16550 hooks.defineLocale('te', { 16551 months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split( 16552 '_' 16553 ), 16554 monthsShort: 16555 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split( 16556 '_' 16557 ), 16558 monthsParseExact: true, 16559 weekdays: 16560 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split( 16561 '_' 16562 ), 16563 weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'), 16564 weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'), 16565 longDateFormat: { 16566 LT: 'A h:mm', 16567 LTS: 'A h:mm:ss', 16568 L: 'DD/MM/YYYY', 16569 LL: 'D MMMM YYYY', 16570 LLL: 'D MMMM YYYY, A h:mm', 16571 LLLL: 'dddd, D MMMM YYYY, A h:mm', 16572 }, 16573 calendar: { 16574 sameDay: '[నేడు] LT', 16575 nextDay: '[రేపు] LT', 16576 nextWeek: 'dddd, LT', 16577 lastDay: '[నిన్న] LT', 16578 lastWeek: '[గత] dddd, LT', 16579 sameElse: 'L', 16580 }, 16581 relativeTime: { 16582 future: '%s లో', 16583 past: '%s క్రితం', 16584 s: 'కొన్ని క్షణాలు', 16585 ss: '%d సెకన్లు', 16586 m: 'ఒక నిమిషం', 16587 mm: '%d నిమిషాలు', 16588 h: 'ఒక గంట', 16589 hh: '%d గంటలు', 16590 d: 'ఒక రోజు', 16591 dd: '%d రోజులు', 16592 M: 'ఒక నెల', 16593 MM: '%d నెలలు', 16594 y: 'ఒక సంవత్సరం', 16595 yy: '%d సంవత్సరాలు', 16596 }, 16597 dayOfMonthOrdinalParse: /\d{1,2}వ/, 16598 ordinal: '%dవ', 16599 meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/, 16600 meridiemHour: function (hour, meridiem) { 16601 if (hour === 12) { 16602 hour = 0; 16603 } 16604 if (meridiem === 'రాత్రి') { 16605 return hour < 4 ? hour : hour + 12; 16606 } else if (meridiem === 'ఉదయం') { 16607 return hour; 16608 } else if (meridiem === 'మధ్యాహ్నం') { 16609 return hour >= 10 ? hour : hour + 12; 16610 } else if (meridiem === 'సాయంత్రం') { 16611 return hour + 12; 16612 } 16613 }, 16614 meridiem: function (hour, minute, isLower) { 16615 if (hour < 4) { 16616 return 'రాత్రి'; 16617 } else if (hour < 10) { 16618 return 'ఉదయం'; 16619 } else if (hour < 17) { 16620 return 'మధ్యాహ్నం'; 16621 } else if (hour < 20) { 16622 return 'సాయంత్రం'; 16623 } else { 16624 return 'రాత్రి'; 16625 } 16626 }, 16627 week: { 16628 dow: 0, // Sunday is the first day of the week. 16629 doy: 6, // The week that contains Jan 6th is the first week of the year. 16630 }, 16631 }); 16632 16633 //! moment.js locale configuration 16634 16635 hooks.defineLocale('tet', { 16636 months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split( 16637 '_' 16638 ), 16639 monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), 16640 weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'), 16641 weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'), 16642 weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'), 16643 longDateFormat: { 16644 LT: 'HH:mm', 16645 LTS: 'HH:mm:ss', 16646 L: 'DD/MM/YYYY', 16647 LL: 'D MMMM YYYY', 16648 LLL: 'D MMMM YYYY HH:mm', 16649 LLLL: 'dddd, D MMMM YYYY HH:mm', 16650 }, 16651 calendar: { 16652 sameDay: '[Ohin iha] LT', 16653 nextDay: '[Aban iha] LT', 16654 nextWeek: 'dddd [iha] LT', 16655 lastDay: '[Horiseik iha] LT', 16656 lastWeek: 'dddd [semana kotuk] [iha] LT', 16657 sameElse: 'L', 16658 }, 16659 relativeTime: { 16660 future: 'iha %s', 16661 past: '%s liuba', 16662 s: 'segundu balun', 16663 ss: 'segundu %d', 16664 m: 'minutu ida', 16665 mm: 'minutu %d', 16666 h: 'oras ida', 16667 hh: 'oras %d', 16668 d: 'loron ida', 16669 dd: 'loron %d', 16670 M: 'fulan ida', 16671 MM: 'fulan %d', 16672 y: 'tinan ida', 16673 yy: 'tinan %d', 16674 }, 16675 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, 16676 ordinal: function (number) { 16677 var b = number % 10, 16678 output = 16679 ~~((number % 100) / 10) === 1 16680 ? 'th' 16681 : b === 1 16682 ? 'st' 16683 : b === 2 16684 ? 'nd' 16685 : b === 3 16686 ? 'rd' 16687 : 'th'; 16688 return number + output; 16689 }, 16690 week: { 16691 dow: 1, // Monday is the first day of the week. 16692 doy: 4, // The week that contains Jan 4th is the first week of the year. 16693 }, 16694 }); 16695 16696 //! moment.js locale configuration 16697 16698 var suffixes$3 = { 16699 0: '-ум', 16700 1: '-ум', 16701 2: '-юм', 16702 3: '-юм', 16703 4: '-ум', 16704 5: '-ум', 16705 6: '-ум', 16706 7: '-ум', 16707 8: '-ум', 16708 9: '-ум', 16709 10: '-ум', 16710 12: '-ум', 16711 13: '-ум', 16712 20: '-ум', 16713 30: '-юм', 16714 40: '-ум', 16715 50: '-ум', 16716 60: '-ум', 16717 70: '-ум', 16718 80: '-ум', 16719 90: '-ум', 16720 100: '-ум', 16721 }; 16722 16723 hooks.defineLocale('tg', { 16724 months: { 16725 format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split( 16726 '_' 16727 ), 16728 standalone: 16729 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split( 16730 '_' 16731 ), 16732 }, 16733 monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), 16734 weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split( 16735 '_' 16736 ), 16737 weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'), 16738 weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'), 16739 longDateFormat: { 16740 LT: 'HH:mm', 16741 LTS: 'HH:mm:ss', 16742 L: 'DD.MM.YYYY', 16743 LL: 'D MMMM YYYY', 16744 LLL: 'D MMMM YYYY HH:mm', 16745 LLLL: 'dddd, D MMMM YYYY HH:mm', 16746 }, 16747 calendar: { 16748 sameDay: '[Имрӯз соати] LT', 16749 nextDay: '[Фардо соати] LT', 16750 lastDay: '[Дирӯз соати] LT', 16751 nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT', 16752 lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT', 16753 sameElse: 'L', 16754 }, 16755 relativeTime: { 16756 future: 'баъди %s', 16757 past: '%s пеш', 16758 s: 'якчанд сония', 16759 m: 'як дақиқа', 16760 mm: '%d дақиқа', 16761 h: 'як соат', 16762 hh: '%d соат', 16763 d: 'як рӯз', 16764 dd: '%d рӯз', 16765 M: 'як моҳ', 16766 MM: '%d моҳ', 16767 y: 'як сол', 16768 yy: '%d сол', 16769 }, 16770 meridiemParse: /шаб|субҳ|рӯз|бегоҳ/, 16771 meridiemHour: function (hour, meridiem) { 16772 if (hour === 12) { 16773 hour = 0; 16774 } 16775 if (meridiem === 'шаб') { 16776 return hour < 4 ? hour : hour + 12; 16777 } else if (meridiem === 'субҳ') { 16778 return hour; 16779 } else if (meridiem === 'рӯз') { 16780 return hour >= 11 ? hour : hour + 12; 16781 } else if (meridiem === 'бегоҳ') { 16782 return hour + 12; 16783 } 16784 }, 16785 meridiem: function (hour, minute, isLower) { 16786 if (hour < 4) { 16787 return 'шаб'; 16788 } else if (hour < 11) { 16789 return 'субҳ'; 16790 } else if (hour < 16) { 16791 return 'рӯз'; 16792 } else if (hour < 19) { 16793 return 'бегоҳ'; 16794 } else { 16795 return 'шаб'; 16796 } 16797 }, 16798 dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/, 16799 ordinal: function (number) { 16800 var a = number % 10, 16801 b = number >= 100 ? 100 : null; 16802 return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]); 16803 }, 16804 week: { 16805 dow: 1, // Monday is the first day of the week. 16806 doy: 7, // The week that contains Jan 1th is the first week of the year. 16807 }, 16808 }); 16809 16810 //! moment.js locale configuration 16811 16812 hooks.defineLocale('th', { 16813 months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split( 16814 '_' 16815 ), 16816 monthsShort: 16817 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split( 16818 '_' 16819 ), 16820 monthsParseExact: true, 16821 weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), 16822 weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference 16823 weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), 16824 weekdaysParseExact: true, 16825 longDateFormat: { 16826 LT: 'H:mm', 16827 LTS: 'H:mm:ss', 16828 L: 'DD/MM/YYYY', 16829 LL: 'D MMMM YYYY', 16830 LLL: 'D MMMM YYYY เวลา H:mm', 16831 LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm', 16832 }, 16833 meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, 16834 isPM: function (input) { 16835 return input === 'หลังเที่ยง'; 16836 }, 16837 meridiem: function (hour, minute, isLower) { 16838 if (hour < 12) { 16839 return 'ก่อนเที่ยง'; 16840 } else { 16841 return 'หลังเที่ยง'; 16842 } 16843 }, 16844 calendar: { 16845 sameDay: '[วันนี้ เวลา] LT', 16846 nextDay: '[พรุ่งนี้ เวลา] LT', 16847 nextWeek: 'dddd[หน้า เวลา] LT', 16848 lastDay: '[เมื่อวานนี้ เวลา] LT', 16849 lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT', 16850 sameElse: 'L', 16851 }, 16852 relativeTime: { 16853 future: 'อีก %s', 16854 past: '%sที่แล้ว', 16855 s: 'ไม่กี่วินาที', 16856 ss: '%d วินาที', 16857 m: '1 นาที', 16858 mm: '%d นาที', 16859 h: '1 ชั่วโมง', 16860 hh: '%d ชั่วโมง', 16861 d: '1 วัน', 16862 dd: '%d วัน', 16863 w: '1 สัปดาห์', 16864 ww: '%d สัปดาห์', 16865 M: '1 เดือน', 16866 MM: '%d เดือน', 16867 y: '1 ปี', 16868 yy: '%d ปี', 16869 }, 16870 }); 16871 16872 //! moment.js locale configuration 16873 16874 var suffixes$4 = { 16875 1: "'inji", 16876 5: "'inji", 16877 8: "'inji", 16878 70: "'inji", 16879 80: "'inji", 16880 2: "'nji", 16881 7: "'nji", 16882 20: "'nji", 16883 50: "'nji", 16884 3: "'ünji", 16885 4: "'ünji", 16886 100: "'ünji", 16887 6: "'njy", 16888 9: "'unjy", 16889 10: "'unjy", 16890 30: "'unjy", 16891 60: "'ynjy", 16892 90: "'ynjy", 16893 }; 16894 16895 hooks.defineLocale('tk', { 16896 months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split( 16897 '_' 16898 ), 16899 monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'), 16900 weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split( 16901 '_' 16902 ), 16903 weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'), 16904 weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'), 16905 longDateFormat: { 16906 LT: 'HH:mm', 16907 LTS: 'HH:mm:ss', 16908 L: 'DD.MM.YYYY', 16909 LL: 'D MMMM YYYY', 16910 LLL: 'D MMMM YYYY HH:mm', 16911 LLLL: 'dddd, D MMMM YYYY HH:mm', 16912 }, 16913 calendar: { 16914 sameDay: '[bugün sagat] LT', 16915 nextDay: '[ertir sagat] LT', 16916 nextWeek: '[indiki] dddd [sagat] LT', 16917 lastDay: '[düýn] LT', 16918 lastWeek: '[geçen] dddd [sagat] LT', 16919 sameElse: 'L', 16920 }, 16921 relativeTime: { 16922 future: '%s soň', 16923 past: '%s öň', 16924 s: 'birnäçe sekunt', 16925 m: 'bir minut', 16926 mm: '%d minut', 16927 h: 'bir sagat', 16928 hh: '%d sagat', 16929 d: 'bir gün', 16930 dd: '%d gün', 16931 M: 'bir aý', 16932 MM: '%d aý', 16933 y: 'bir ýyl', 16934 yy: '%d ýyl', 16935 }, 16936 ordinal: function (number, period) { 16937 switch (period) { 16938 case 'd': 16939 case 'D': 16940 case 'Do': 16941 case 'DD': 16942 return number; 16943 default: 16944 if (number === 0) { 16945 // special case for zero 16946 return number + "'unjy"; 16947 } 16948 var a = number % 10, 16949 b = (number % 100) - a, 16950 c = number >= 100 ? 100 : null; 16951 return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]); 16952 } 16953 }, 16954 week: { 16955 dow: 1, // Monday is the first day of the week. 16956 doy: 7, // The week that contains Jan 7th is the first week of the year. 16957 }, 16958 }); 16959 16960 //! moment.js locale configuration 16961 16962 hooks.defineLocale('tl-ph', { 16963 months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split( 16964 '_' 16965 ), 16966 monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), 16967 weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split( 16968 '_' 16969 ), 16970 weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), 16971 weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), 16972 longDateFormat: { 16973 LT: 'HH:mm', 16974 LTS: 'HH:mm:ss', 16975 L: 'MM/D/YYYY', 16976 LL: 'MMMM D, YYYY', 16977 LLL: 'MMMM D, YYYY HH:mm', 16978 LLLL: 'dddd, MMMM DD, YYYY HH:mm', 16979 }, 16980 calendar: { 16981 sameDay: 'LT [ngayong araw]', 16982 nextDay: '[Bukas ng] LT', 16983 nextWeek: 'LT [sa susunod na] dddd', 16984 lastDay: 'LT [kahapon]', 16985 lastWeek: 'LT [noong nakaraang] dddd', 16986 sameElse: 'L', 16987 }, 16988 relativeTime: { 16989 future: 'sa loob ng %s', 16990 past: '%s ang nakalipas', 16991 s: 'ilang segundo', 16992 ss: '%d segundo', 16993 m: 'isang minuto', 16994 mm: '%d minuto', 16995 h: 'isang oras', 16996 hh: '%d oras', 16997 d: 'isang araw', 16998 dd: '%d araw', 16999 M: 'isang buwan', 17000 MM: '%d buwan', 17001 y: 'isang taon', 17002 yy: '%d taon', 17003 }, 17004 dayOfMonthOrdinalParse: /\d{1,2}/, 17005 ordinal: function (number) { 17006 return number; 17007 }, 17008 week: { 17009 dow: 1, // Monday is the first day of the week. 17010 doy: 4, // The week that contains Jan 4th is the first week of the year. 17011 }, 17012 }); 17013 17014 //! moment.js locale configuration 17015 17016 var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_'); 17017 17018 function translateFuture(output) { 17019 var time = output; 17020 time = 17021 output.indexOf('jaj') !== -1 17022 ? time.slice(0, -3) + 'leS' 17023 : output.indexOf('jar') !== -1 17024 ? time.slice(0, -3) + 'waQ' 17025 : output.indexOf('DIS') !== -1 17026 ? time.slice(0, -3) + 'nem' 17027 : time + ' pIq'; 17028 return time; 17029 } 17030 17031 function translatePast(output) { 17032 var time = output; 17033 time = 17034 output.indexOf('jaj') !== -1 17035 ? time.slice(0, -3) + 'Hu’' 17036 : output.indexOf('jar') !== -1 17037 ? time.slice(0, -3) + 'wen' 17038 : output.indexOf('DIS') !== -1 17039 ? time.slice(0, -3) + 'ben' 17040 : time + ' ret'; 17041 return time; 17042 } 17043 17044 function translate$a(number, withoutSuffix, string, isFuture) { 17045 var numberNoun = numberAsNoun(number); 17046 switch (string) { 17047 case 'ss': 17048 return numberNoun + ' lup'; 17049 case 'mm': 17050 return numberNoun + ' tup'; 17051 case 'hh': 17052 return numberNoun + ' rep'; 17053 case 'dd': 17054 return numberNoun + ' jaj'; 17055 case 'MM': 17056 return numberNoun + ' jar'; 17057 case 'yy': 17058 return numberNoun + ' DIS'; 17059 } 17060 } 17061 17062 function numberAsNoun(number) { 17063 var hundred = Math.floor((number % 1000) / 100), 17064 ten = Math.floor((number % 100) / 10), 17065 one = number % 10, 17066 word = ''; 17067 if (hundred > 0) { 17068 word += numbersNouns[hundred] + 'vatlh'; 17069 } 17070 if (ten > 0) { 17071 word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH'; 17072 } 17073 if (one > 0) { 17074 word += (word !== '' ? ' ' : '') + numbersNouns[one]; 17075 } 17076 return word === '' ? 'pagh' : word; 17077 } 17078 17079 hooks.defineLocale('tlh', { 17080 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( 17081 '_' 17082 ), 17083 monthsShort: 17084 '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( 17085 '_' 17086 ), 17087 monthsParseExact: true, 17088 weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( 17089 '_' 17090 ), 17091 weekdaysShort: 17092 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), 17093 weekdaysMin: 17094 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), 17095 longDateFormat: { 17096 LT: 'HH:mm', 17097 LTS: 'HH:mm:ss', 17098 L: 'DD.MM.YYYY', 17099 LL: 'D MMMM YYYY', 17100 LLL: 'D MMMM YYYY HH:mm', 17101 LLLL: 'dddd, D MMMM YYYY HH:mm', 17102 }, 17103 calendar: { 17104 sameDay: '[DaHjaj] LT', 17105 nextDay: '[wa’leS] LT', 17106 nextWeek: 'LLL', 17107 lastDay: '[wa’Hu’] LT', 17108 lastWeek: 'LLL', 17109 sameElse: 'L', 17110 }, 17111 relativeTime: { 17112 future: translateFuture, 17113 past: translatePast, 17114 s: 'puS lup', 17115 ss: translate$a, 17116 m: 'wa’ tup', 17117 mm: translate$a, 17118 h: 'wa’ rep', 17119 hh: translate$a, 17120 d: 'wa’ jaj', 17121 dd: translate$a, 17122 M: 'wa’ jar', 17123 MM: translate$a, 17124 y: 'wa’ DIS', 17125 yy: translate$a, 17126 }, 17127 dayOfMonthOrdinalParse: /\d{1,2}\./, 17128 ordinal: '%d.', 17129 week: { 17130 dow: 1, // Monday is the first day of the week. 17131 doy: 4, // The week that contains Jan 4th is the first week of the year. 17132 }, 17133 }); 17134 17135 //! moment.js locale configuration 17136 17137 var suffixes$5 = { 17138 1: "'inci", 17139 5: "'inci", 17140 8: "'inci", 17141 70: "'inci", 17142 80: "'inci", 17143 2: "'nci", 17144 7: "'nci", 17145 20: "'nci", 17146 50: "'nci", 17147 3: "'üncü", 17148 4: "'üncü", 17149 100: "'üncü", 17150 6: "'ncı", 17151 9: "'uncu", 17152 10: "'uncu", 17153 30: "'uncu", 17154 60: "'ıncı", 17155 90: "'ıncı", 17156 }; 17157 17158 hooks.defineLocale('tr', { 17159 months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split( 17160 '_' 17161 ), 17162 monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), 17163 weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split( 17164 '_' 17165 ), 17166 weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'), 17167 weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), 17168 meridiem: function (hours, minutes, isLower) { 17169 if (hours < 12) { 17170 return isLower ? 'öö' : 'ÖÖ'; 17171 } else { 17172 return isLower ? 'ös' : 'ÖS'; 17173 } 17174 }, 17175 meridiemParse: /öö|ÖÖ|ös|ÖS/, 17176 isPM: function (input) { 17177 return input === 'ös' || input === 'ÖS'; 17178 }, 17179 longDateFormat: { 17180 LT: 'HH:mm', 17181 LTS: 'HH:mm:ss', 17182 L: 'DD.MM.YYYY', 17183 LL: 'D MMMM YYYY', 17184 LLL: 'D MMMM YYYY HH:mm', 17185 LLLL: 'dddd, D MMMM YYYY HH:mm', 17186 }, 17187 calendar: { 17188 sameDay: '[bugün saat] LT', 17189 nextDay: '[yarın saat] LT', 17190 nextWeek: '[gelecek] dddd [saat] LT', 17191 lastDay: '[dün] LT', 17192 lastWeek: '[geçen] dddd [saat] LT', 17193 sameElse: 'L', 17194 }, 17195 relativeTime: { 17196 future: '%s sonra', 17197 past: '%s önce', 17198 s: 'birkaç saniye', 17199 ss: '%d saniye', 17200 m: 'bir dakika', 17201 mm: '%d dakika', 17202 h: 'bir saat', 17203 hh: '%d saat', 17204 d: 'bir gün', 17205 dd: '%d gün', 17206 w: 'bir hafta', 17207 ww: '%d hafta', 17208 M: 'bir ay', 17209 MM: '%d ay', 17210 y: 'bir yıl', 17211 yy: '%d yıl', 17212 }, 17213 ordinal: function (number, period) { 17214 switch (period) { 17215 case 'd': 17216 case 'D': 17217 case 'Do': 17218 case 'DD': 17219 return number; 17220 default: 17221 if (number === 0) { 17222 // special case for zero 17223 return number + "'ıncı"; 17224 } 17225 var a = number % 10, 17226 b = (number % 100) - a, 17227 c = number >= 100 ? 100 : null; 17228 return number + (suffixes$5[a] || suffixes$5[b] || suffixes$5[c]); 17229 } 17230 }, 17231 week: { 17232 dow: 1, // Monday is the first day of the week. 17233 doy: 7, // The week that contains Jan 7th is the first week of the year. 17234 }, 17235 }); 17236 17237 //! moment.js locale configuration 17238 17239 // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals. 17240 // This is currently too difficult (maybe even impossible) to add. 17241 hooks.defineLocale('tzl', { 17242 months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split( 17243 '_' 17244 ), 17245 monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), 17246 weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), 17247 weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), 17248 weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), 17249 longDateFormat: { 17250 LT: 'HH.mm', 17251 LTS: 'HH.mm.ss', 17252 L: 'DD.MM.YYYY', 17253 LL: 'D. MMMM [dallas] YYYY', 17254 LLL: 'D. MMMM [dallas] YYYY HH.mm', 17255 LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm', 17256 }, 17257 meridiemParse: /d\'o|d\'a/i, 17258 isPM: function (input) { 17259 return "d'o" === input.toLowerCase(); 17260 }, 17261 meridiem: function (hours, minutes, isLower) { 17262 if (hours > 11) { 17263 return isLower ? "d'o" : "D'O"; 17264 } else { 17265 return isLower ? "d'a" : "D'A"; 17266 } 17267 }, 17268 calendar: { 17269 sameDay: '[oxhi à] LT', 17270 nextDay: '[demà à] LT', 17271 nextWeek: 'dddd [à] LT', 17272 lastDay: '[ieiri à] LT', 17273 lastWeek: '[sür el] dddd [lasteu à] LT', 17274 sameElse: 'L', 17275 }, 17276 relativeTime: { 17277 future: 'osprei %s', 17278 past: 'ja%s', 17279 s: processRelativeTime$a, 17280 ss: processRelativeTime$a, 17281 m: processRelativeTime$a, 17282 mm: processRelativeTime$a, 17283 h: processRelativeTime$a, 17284 hh: processRelativeTime$a, 17285 d: processRelativeTime$a, 17286 dd: processRelativeTime$a, 17287 M: processRelativeTime$a, 17288 MM: processRelativeTime$a, 17289 y: processRelativeTime$a, 17290 yy: processRelativeTime$a, 17291 }, 17292 dayOfMonthOrdinalParse: /\d{1,2}\./, 17293 ordinal: '%d.', 17294 week: { 17295 dow: 1, // Monday is the first day of the week. 17296 doy: 4, // The week that contains Jan 4th is the first week of the year. 17297 }, 17298 }); 17299 17300 function processRelativeTime$a(number, withoutSuffix, key, isFuture) { 17301 var format = { 17302 s: ['viensas secunds', "'iensas secunds"], 17303 ss: [number + ' secunds', '' + number + ' secunds'], 17304 m: ["'n míut", "'iens míut"], 17305 mm: [number + ' míuts', '' + number + ' míuts'], 17306 h: ["'n þora", "'iensa þora"], 17307 hh: [number + ' þoras', '' + number + ' þoras'], 17308 d: ["'n ziua", "'iensa ziua"], 17309 dd: [number + ' ziuas', '' + number + ' ziuas'], 17310 M: ["'n mes", "'iens mes"], 17311 MM: [number + ' mesen', '' + number + ' mesen'], 17312 y: ["'n ar", "'iens ar"], 17313 yy: [number + ' ars', '' + number + ' ars'], 17314 }; 17315 return isFuture 17316 ? format[key][0] 17317 : withoutSuffix 17318 ? format[key][0] 17319 : format[key][1]; 17320 } 17321 17322 //! moment.js locale configuration 17323 17324 hooks.defineLocale('tzm-latn', { 17325 months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split( 17326 '_' 17327 ), 17328 monthsShort: 17329 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split( 17330 '_' 17331 ), 17332 weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), 17333 weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), 17334 weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), 17335 longDateFormat: { 17336 LT: 'HH:mm', 17337 LTS: 'HH:mm:ss', 17338 L: 'DD/MM/YYYY', 17339 LL: 'D MMMM YYYY', 17340 LLL: 'D MMMM YYYY HH:mm', 17341 LLLL: 'dddd D MMMM YYYY HH:mm', 17342 }, 17343 calendar: { 17344 sameDay: '[asdkh g] LT', 17345 nextDay: '[aska g] LT', 17346 nextWeek: 'dddd [g] LT', 17347 lastDay: '[assant g] LT', 17348 lastWeek: 'dddd [g] LT', 17349 sameElse: 'L', 17350 }, 17351 relativeTime: { 17352 future: 'dadkh s yan %s', 17353 past: 'yan %s', 17354 s: 'imik', 17355 ss: '%d imik', 17356 m: 'minuḍ', 17357 mm: '%d minuḍ', 17358 h: 'saɛa', 17359 hh: '%d tassaɛin', 17360 d: 'ass', 17361 dd: '%d ossan', 17362 M: 'ayowr', 17363 MM: '%d iyyirn', 17364 y: 'asgas', 17365 yy: '%d isgasn', 17366 }, 17367 week: { 17368 dow: 6, // Saturday is the first day of the week. 17369 doy: 12, // The week that contains Jan 12th is the first week of the year. 17370 }, 17371 }); 17372 17373 //! moment.js locale configuration 17374 17375 hooks.defineLocale('tzm', { 17376 months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split( 17377 '_' 17378 ), 17379 monthsShort: 17380 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split( 17381 '_' 17382 ), 17383 weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), 17384 weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), 17385 weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), 17386 longDateFormat: { 17387 LT: 'HH:mm', 17388 LTS: 'HH:mm:ss', 17389 L: 'DD/MM/YYYY', 17390 LL: 'D MMMM YYYY', 17391 LLL: 'D MMMM YYYY HH:mm', 17392 LLLL: 'dddd D MMMM YYYY HH:mm', 17393 }, 17394 calendar: { 17395 sameDay: '[ⴰⵙⴷⵅ ⴴ] LT', 17396 nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', 17397 nextWeek: 'dddd [ⴴ] LT', 17398 lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', 17399 lastWeek: 'dddd [ⴴ] LT', 17400 sameElse: 'L', 17401 }, 17402 relativeTime: { 17403 future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', 17404 past: 'ⵢⴰⵏ %s', 17405 s: 'ⵉⵎⵉⴽ', 17406 ss: '%d ⵉⵎⵉⴽ', 17407 m: 'ⵎⵉⵏⵓⴺ', 17408 mm: '%d ⵎⵉⵏⵓⴺ', 17409 h: 'ⵙⴰⵄⴰ', 17410 hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', 17411 d: 'ⴰⵙⵙ', 17412 dd: '%d oⵙⵙⴰⵏ', 17413 M: 'ⴰⵢoⵓⵔ', 17414 MM: '%d ⵉⵢⵢⵉⵔⵏ', 17415 y: 'ⴰⵙⴳⴰⵙ', 17416 yy: '%d ⵉⵙⴳⴰⵙⵏ', 17417 }, 17418 week: { 17419 dow: 6, // Saturday is the first day of the week. 17420 doy: 12, // The week that contains Jan 12th is the first week of the year. 17421 }, 17422 }); 17423 17424 //! moment.js locale configuration 17425 17426 hooks.defineLocale('ug-cn', { 17427 months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split( 17428 '_' 17429 ), 17430 monthsShort: 17431 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split( 17432 '_' 17433 ), 17434 weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split( 17435 '_' 17436 ), 17437 weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'), 17438 weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'), 17439 longDateFormat: { 17440 LT: 'HH:mm', 17441 LTS: 'HH:mm:ss', 17442 L: 'YYYY-MM-DD', 17443 LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى', 17444 LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', 17445 LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', 17446 }, 17447 meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/, 17448 meridiemHour: function (hour, meridiem) { 17449 if (hour === 12) { 17450 hour = 0; 17451 } 17452 if ( 17453 meridiem === 'يېرىم كېچە' || 17454 meridiem === 'سەھەر' || 17455 meridiem === 'چۈشتىن بۇرۇن' 17456 ) { 17457 return hour; 17458 } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') { 17459 return hour + 12; 17460 } else { 17461 return hour >= 11 ? hour : hour + 12; 17462 } 17463 }, 17464 meridiem: function (hour, minute, isLower) { 17465 var hm = hour * 100 + minute; 17466 if (hm < 600) { 17467 return 'يېرىم كېچە'; 17468 } else if (hm < 900) { 17469 return 'سەھەر'; 17470 } else if (hm < 1130) { 17471 return 'چۈشتىن بۇرۇن'; 17472 } else if (hm < 1230) { 17473 return 'چۈش'; 17474 } else if (hm < 1800) { 17475 return 'چۈشتىن كېيىن'; 17476 } else { 17477 return 'كەچ'; 17478 } 17479 }, 17480 calendar: { 17481 sameDay: '[بۈگۈن سائەت] LT', 17482 nextDay: '[ئەتە سائەت] LT', 17483 nextWeek: '[كېلەركى] dddd [سائەت] LT', 17484 lastDay: '[تۆنۈگۈن] LT', 17485 lastWeek: '[ئالدىنقى] dddd [سائەت] LT', 17486 sameElse: 'L', 17487 }, 17488 relativeTime: { 17489 future: '%s كېيىن', 17490 past: '%s بۇرۇن', 17491 s: 'نەچچە سېكونت', 17492 ss: '%d سېكونت', 17493 m: 'بىر مىنۇت', 17494 mm: '%d مىنۇت', 17495 h: 'بىر سائەت', 17496 hh: '%d سائەت', 17497 d: 'بىر كۈن', 17498 dd: '%d كۈن', 17499 M: 'بىر ئاي', 17500 MM: '%d ئاي', 17501 y: 'بىر يىل', 17502 yy: '%d يىل', 17503 }, 17504 17505 dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/, 17506 ordinal: function (number, period) { 17507 switch (period) { 17508 case 'd': 17509 case 'D': 17510 case 'DDD': 17511 return number + '-كۈنى'; 17512 case 'w': 17513 case 'W': 17514 return number + '-ھەپتە'; 17515 default: 17516 return number; 17517 } 17518 }, 17519 preparse: function (string) { 17520 return string.replace(/،/g, ','); 17521 }, 17522 postformat: function (string) { 17523 return string.replace(/,/g, '،'); 17524 }, 17525 week: { 17526 // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 17527 dow: 1, // Monday is the first day of the week. 17528 doy: 7, // The week that contains Jan 1st is the first week of the year. 17529 }, 17530 }); 17531 17532 //! moment.js locale configuration 17533 17534 function plural$6(word, num) { 17535 var forms = word.split('_'); 17536 return num % 10 === 1 && num % 100 !== 11 17537 ? forms[0] 17538 : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) 17539 ? forms[1] 17540 : forms[2]; 17541 } 17542 function relativeTimeWithPlural$4(number, withoutSuffix, key) { 17543 var format = { 17544 ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд', 17545 mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', 17546 hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин', 17547 dd: 'день_дні_днів', 17548 MM: 'місяць_місяці_місяців', 17549 yy: 'рік_роки_років', 17550 }; 17551 if (key === 'm') { 17552 return withoutSuffix ? 'хвилина' : 'хвилину'; 17553 } else if (key === 'h') { 17554 return withoutSuffix ? 'година' : 'годину'; 17555 } else { 17556 return number + ' ' + plural$6(format[key], +number); 17557 } 17558 } 17559 function weekdaysCaseReplace(m, format) { 17560 var weekdays = { 17561 nominative: 17562 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split( 17563 '_' 17564 ), 17565 accusative: 17566 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split( 17567 '_' 17568 ), 17569 genitive: 17570 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split( 17571 '_' 17572 ), 17573 }, 17574 nounCase; 17575 17576 if (m === true) { 17577 return weekdays['nominative'] 17578 .slice(1, 7) 17579 .concat(weekdays['nominative'].slice(0, 1)); 17580 } 17581 if (!m) { 17582 return weekdays['nominative']; 17583 } 17584 17585 nounCase = /(\[[ВвУу]\]) ?dddd/.test(format) 17586 ? 'accusative' 17587 : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format) 17588 ? 'genitive' 17589 : 'nominative'; 17590 return weekdays[nounCase][m.day()]; 17591 } 17592 function processHoursFunction(str) { 17593 return function () { 17594 return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; 17595 }; 17596 } 17597 17598 hooks.defineLocale('uk', { 17599 months: { 17600 format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split( 17601 '_' 17602 ), 17603 standalone: 17604 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split( 17605 '_' 17606 ), 17607 }, 17608 monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split( 17609 '_' 17610 ), 17611 weekdays: weekdaysCaseReplace, 17612 weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), 17613 weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'), 17614 longDateFormat: { 17615 LT: 'HH:mm', 17616 LTS: 'HH:mm:ss', 17617 L: 'DD.MM.YYYY', 17618 LL: 'D MMMM YYYY р.', 17619 LLL: 'D MMMM YYYY р., HH:mm', 17620 LLLL: 'dddd, D MMMM YYYY р., HH:mm', 17621 }, 17622 calendar: { 17623 sameDay: processHoursFunction('[Сьогодні '), 17624 nextDay: processHoursFunction('[Завтра '), 17625 lastDay: processHoursFunction('[Вчора '), 17626 nextWeek: processHoursFunction('[У] dddd ['), 17627 lastWeek: function () { 17628 switch (this.day()) { 17629 case 0: 17630 case 3: 17631 case 5: 17632 case 6: 17633 return processHoursFunction('[Минулої] dddd [').call(this); 17634 case 1: 17635 case 2: 17636 case 4: 17637 return processHoursFunction('[Минулого] dddd [').call(this); 17638 } 17639 }, 17640 sameElse: 'L', 17641 }, 17642 relativeTime: { 17643 future: 'за %s', 17644 past: '%s тому', 17645 s: 'декілька секунд', 17646 ss: relativeTimeWithPlural$4, 17647 m: relativeTimeWithPlural$4, 17648 mm: relativeTimeWithPlural$4, 17649 h: 'годину', 17650 hh: relativeTimeWithPlural$4, 17651 d: 'день', 17652 dd: relativeTimeWithPlural$4, 17653 M: 'місяць', 17654 MM: relativeTimeWithPlural$4, 17655 y: 'рік', 17656 yy: relativeTimeWithPlural$4, 17657 }, 17658 // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason 17659 meridiemParse: /ночі|ранку|дня|вечора/, 17660 isPM: function (input) { 17661 return /^(дня|вечора)$/.test(input); 17662 }, 17663 meridiem: function (hour, minute, isLower) { 17664 if (hour < 4) { 17665 return 'ночі'; 17666 } else if (hour < 12) { 17667 return 'ранку'; 17668 } else if (hour < 17) { 17669 return 'дня'; 17670 } else { 17671 return 'вечора'; 17672 } 17673 }, 17674 dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/, 17675 ordinal: function (number, period) { 17676 switch (period) { 17677 case 'M': 17678 case 'd': 17679 case 'DDD': 17680 case 'w': 17681 case 'W': 17682 return number + '-й'; 17683 case 'D': 17684 return number + '-го'; 17685 default: 17686 return number; 17687 } 17688 }, 17689 week: { 17690 dow: 1, // Monday is the first day of the week. 17691 doy: 7, // The week that contains Jan 7th is the first week of the year. 17692 }, 17693 }); 17694 17695 //! moment.js locale configuration 17696 17697 var months$b = [ 17698 'جنوری', 17699 'فروری', 17700 'مارچ', 17701 'اپریل', 17702 'مئی', 17703 'جون', 17704 'جولائی', 17705 'اگست', 17706 'ستمبر', 17707 'اکتوبر', 17708 'نومبر', 17709 'دسمبر', 17710 ], 17711 days$2 = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ']; 17712 17713 hooks.defineLocale('ur', { 17714 months: months$b, 17715 monthsShort: months$b, 17716 weekdays: days$2, 17717 weekdaysShort: days$2, 17718 weekdaysMin: days$2, 17719 longDateFormat: { 17720 LT: 'HH:mm', 17721 LTS: 'HH:mm:ss', 17722 L: 'DD/MM/YYYY', 17723 LL: 'D MMMM YYYY', 17724 LLL: 'D MMMM YYYY HH:mm', 17725 LLLL: 'dddd، D MMMM YYYY HH:mm', 17726 }, 17727 meridiemParse: /صبح|شام/, 17728 isPM: function (input) { 17729 return 'شام' === input; 17730 }, 17731 meridiem: function (hour, minute, isLower) { 17732 if (hour < 12) { 17733 return 'صبح'; 17734 } 17735 return 'شام'; 17736 }, 17737 calendar: { 17738 sameDay: '[آج بوقت] LT', 17739 nextDay: '[کل بوقت] LT', 17740 nextWeek: 'dddd [بوقت] LT', 17741 lastDay: '[گذشتہ روز بوقت] LT', 17742 lastWeek: '[گذشتہ] dddd [بوقت] LT', 17743 sameElse: 'L', 17744 }, 17745 relativeTime: { 17746 future: '%s بعد', 17747 past: '%s قبل', 17748 s: 'چند سیکنڈ', 17749 ss: '%d سیکنڈ', 17750 m: 'ایک منٹ', 17751 mm: '%d منٹ', 17752 h: 'ایک گھنٹہ', 17753 hh: '%d گھنٹے', 17754 d: 'ایک دن', 17755 dd: '%d دن', 17756 M: 'ایک ماہ', 17757 MM: '%d ماہ', 17758 y: 'ایک سال', 17759 yy: '%d سال', 17760 }, 17761 preparse: function (string) { 17762 return string.replace(/،/g, ','); 17763 }, 17764 postformat: function (string) { 17765 return string.replace(/,/g, '،'); 17766 }, 17767 week: { 17768 dow: 1, // Monday is the first day of the week. 17769 doy: 4, // The week that contains Jan 4th is the first week of the year. 17770 }, 17771 }); 17772 17773 //! moment.js locale configuration 17774 17775 hooks.defineLocale('uz-latn', { 17776 months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split( 17777 '_' 17778 ), 17779 monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'), 17780 weekdays: 17781 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split( 17782 '_' 17783 ), 17784 weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'), 17785 weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'), 17786 longDateFormat: { 17787 LT: 'HH:mm', 17788 LTS: 'HH:mm:ss', 17789 L: 'DD/MM/YYYY', 17790 LL: 'D MMMM YYYY', 17791 LLL: 'D MMMM YYYY HH:mm', 17792 LLLL: 'D MMMM YYYY, dddd HH:mm', 17793 }, 17794 calendar: { 17795 sameDay: '[Bugun soat] LT [da]', 17796 nextDay: '[Ertaga] LT [da]', 17797 nextWeek: 'dddd [kuni soat] LT [da]', 17798 lastDay: '[Kecha soat] LT [da]', 17799 lastWeek: "[O'tgan] dddd [kuni soat] LT [da]", 17800 sameElse: 'L', 17801 }, 17802 relativeTime: { 17803 future: 'Yaqin %s ichida', 17804 past: 'Bir necha %s oldin', 17805 s: 'soniya', 17806 ss: '%d soniya', 17807 m: 'bir daqiqa', 17808 mm: '%d daqiqa', 17809 h: 'bir soat', 17810 hh: '%d soat', 17811 d: 'bir kun', 17812 dd: '%d kun', 17813 M: 'bir oy', 17814 MM: '%d oy', 17815 y: 'bir yil', 17816 yy: '%d yil', 17817 }, 17818 week: { 17819 dow: 1, // Monday is the first day of the week. 17820 doy: 7, // The week that contains Jan 7th is the first week of the year. 17821 }, 17822 }); 17823 17824 //! moment.js locale configuration 17825 17826 hooks.defineLocale('uz', { 17827 months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split( 17828 '_' 17829 ), 17830 monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), 17831 weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), 17832 weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), 17833 weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), 17834 longDateFormat: { 17835 LT: 'HH:mm', 17836 LTS: 'HH:mm:ss', 17837 L: 'DD/MM/YYYY', 17838 LL: 'D MMMM YYYY', 17839 LLL: 'D MMMM YYYY HH:mm', 17840 LLLL: 'D MMMM YYYY, dddd HH:mm', 17841 }, 17842 calendar: { 17843 sameDay: '[Бугун соат] LT [да]', 17844 nextDay: '[Эртага] LT [да]', 17845 nextWeek: 'dddd [куни соат] LT [да]', 17846 lastDay: '[Кеча соат] LT [да]', 17847 lastWeek: '[Утган] dddd [куни соат] LT [да]', 17848 sameElse: 'L', 17849 }, 17850 relativeTime: { 17851 future: 'Якин %s ичида', 17852 past: 'Бир неча %s олдин', 17853 s: 'фурсат', 17854 ss: '%d фурсат', 17855 m: 'бир дакика', 17856 mm: '%d дакика', 17857 h: 'бир соат', 17858 hh: '%d соат', 17859 d: 'бир кун', 17860 dd: '%d кун', 17861 M: 'бир ой', 17862 MM: '%d ой', 17863 y: 'бир йил', 17864 yy: '%d йил', 17865 }, 17866 week: { 17867 dow: 1, // Monday is the first day of the week. 17868 doy: 7, // The week that contains Jan 4th is the first week of the year. 17869 }, 17870 }); 17871 17872 //! moment.js locale configuration 17873 17874 hooks.defineLocale('vi', { 17875 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( 17876 '_' 17877 ), 17878 monthsShort: 17879 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split( 17880 '_' 17881 ), 17882 monthsParseExact: true, 17883 weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split( 17884 '_' 17885 ), 17886 weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), 17887 weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), 17888 weekdaysParseExact: true, 17889 meridiemParse: /sa|ch/i, 17890 isPM: function (input) { 17891 return /^ch$/i.test(input); 17892 }, 17893 meridiem: function (hours, minutes, isLower) { 17894 if (hours < 12) { 17895 return isLower ? 'sa' : 'SA'; 17896 } else { 17897 return isLower ? 'ch' : 'CH'; 17898 } 17899 }, 17900 longDateFormat: { 17901 LT: 'HH:mm', 17902 LTS: 'HH:mm:ss', 17903 L: 'DD/MM/YYYY', 17904 LL: 'D MMMM [năm] YYYY', 17905 LLL: 'D MMMM [năm] YYYY HH:mm', 17906 LLLL: 'dddd, D MMMM [năm] YYYY HH:mm', 17907 l: 'DD/M/YYYY', 17908 ll: 'D MMM YYYY', 17909 lll: 'D MMM YYYY HH:mm', 17910 llll: 'ddd, D MMM YYYY HH:mm', 17911 }, 17912 calendar: { 17913 sameDay: '[Hôm nay lúc] LT', 17914 nextDay: '[Ngày mai lúc] LT', 17915 nextWeek: 'dddd [tuần tới lúc] LT', 17916 lastDay: '[Hôm qua lúc] LT', 17917 lastWeek: 'dddd [tuần trước lúc] LT', 17918 sameElse: 'L', 17919 }, 17920 relativeTime: { 17921 future: '%s tới', 17922 past: '%s trước', 17923 s: 'vài giây', 17924 ss: '%d giây', 17925 m: 'một phút', 17926 mm: '%d phút', 17927 h: 'một giờ', 17928 hh: '%d giờ', 17929 d: 'một ngày', 17930 dd: '%d ngày', 17931 w: 'một tuần', 17932 ww: '%d tuần', 17933 M: 'một tháng', 17934 MM: '%d tháng', 17935 y: 'một năm', 17936 yy: '%d năm', 17937 }, 17938 dayOfMonthOrdinalParse: /\d{1,2}/, 17939 ordinal: function (number) { 17940 return number; 17941 }, 17942 week: { 17943 dow: 1, // Monday is the first day of the week. 17944 doy: 4, // The week that contains Jan 4th is the first week of the year. 17945 }, 17946 }); 17947 17948 //! moment.js locale configuration 17949 17950 hooks.defineLocale('x-pseudo', { 17951 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( 17952 '_' 17953 ), 17954 monthsShort: 17955 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split( 17956 '_' 17957 ), 17958 monthsParseExact: true, 17959 weekdays: 17960 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split( 17961 '_' 17962 ), 17963 weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'), 17964 weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), 17965 weekdaysParseExact: true, 17966 longDateFormat: { 17967 LT: 'HH:mm', 17968 L: 'DD/MM/YYYY', 17969 LL: 'D MMMM YYYY', 17970 LLL: 'D MMMM YYYY HH:mm', 17971 LLLL: 'dddd, D MMMM YYYY HH:mm', 17972 }, 17973 calendar: { 17974 sameDay: '[T~ódá~ý át] LT', 17975 nextDay: '[T~ómó~rró~w át] LT', 17976 nextWeek: 'dddd [át] LT', 17977 lastDay: '[Ý~ést~érdá~ý át] LT', 17978 lastWeek: '[L~ást] dddd [át] LT', 17979 sameElse: 'L', 17980 }, 17981 relativeTime: { 17982 future: 'í~ñ %s', 17983 past: '%s á~gó', 17984 s: 'á ~féw ~sécó~ñds', 17985 ss: '%d s~écóñ~ds', 17986 m: 'á ~míñ~úté', 17987 mm: '%d m~íñú~tés', 17988 h: 'á~ñ hó~úr', 17989 hh: '%d h~óúrs', 17990 d: 'á ~dáý', 17991 dd: '%d d~áýs', 17992 M: 'á ~móñ~th', 17993 MM: '%d m~óñt~hs', 17994 y: 'á ~ýéár', 17995 yy: '%d ý~éárs', 17996 }, 17997 dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, 17998 ordinal: function (number) { 17999 var b = number % 10, 18000 output = 18001 ~~((number % 100) / 10) === 1 18002 ? 'th' 18003 : b === 1 18004 ? 'st' 18005 : b === 2 18006 ? 'nd' 18007 : b === 3 18008 ? 'rd' 18009 : 'th'; 18010 return number + output; 18011 }, 18012 week: { 18013 dow: 1, // Monday is the first day of the week. 18014 doy: 4, // The week that contains Jan 4th is the first week of the year. 18015 }, 18016 }); 18017 18018 //! moment.js locale configuration 18019 18020 hooks.defineLocale('yo', { 18021 months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split( 18022 '_' 18023 ), 18024 monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'), 18025 weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'), 18026 weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'), 18027 weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'), 18028 longDateFormat: { 18029 LT: 'h:mm A', 18030 LTS: 'h:mm:ss A', 18031 L: 'DD/MM/YYYY', 18032 LL: 'D MMMM YYYY', 18033 LLL: 'D MMMM YYYY h:mm A', 18034 LLLL: 'dddd, D MMMM YYYY h:mm A', 18035 }, 18036 calendar: { 18037 sameDay: '[Ònì ni] LT', 18038 nextDay: '[Ọ̀la ni] LT', 18039 nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT", 18040 lastDay: '[Àna ni] LT', 18041 lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT', 18042 sameElse: 'L', 18043 }, 18044 relativeTime: { 18045 future: 'ní %s', 18046 past: '%s kọjá', 18047 s: 'ìsẹjú aayá die', 18048 ss: 'aayá %d', 18049 m: 'ìsẹjú kan', 18050 mm: 'ìsẹjú %d', 18051 h: 'wákati kan', 18052 hh: 'wákati %d', 18053 d: 'ọjọ́ kan', 18054 dd: 'ọjọ́ %d', 18055 M: 'osù kan', 18056 MM: 'osù %d', 18057 y: 'ọdún kan', 18058 yy: 'ọdún %d', 18059 }, 18060 dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/, 18061 ordinal: 'ọjọ́ %d', 18062 week: { 18063 dow: 1, // Monday is the first day of the week. 18064 doy: 4, // The week that contains Jan 4th is the first week of the year. 18065 }, 18066 }); 18067 18068 //! moment.js locale configuration 18069 18070 hooks.defineLocale('zh-cn', { 18071 months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( 18072 '_' 18073 ), 18074 monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( 18075 '_' 18076 ), 18077 weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), 18078 weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'), 18079 weekdaysMin: '日_一_二_三_四_五_六'.split('_'), 18080 longDateFormat: { 18081 LT: 'HH:mm', 18082 LTS: 'HH:mm:ss', 18083 L: 'YYYY/MM/DD', 18084 LL: 'YYYY年M月D日', 18085 LLL: 'YYYY年M月D日Ah点mm分', 18086 LLLL: 'YYYY年M月D日ddddAh点mm分', 18087 l: 'YYYY/M/D', 18088 ll: 'YYYY年M月D日', 18089 lll: 'YYYY年M月D日 HH:mm', 18090 llll: 'YYYY年M月D日dddd HH:mm', 18091 }, 18092 meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, 18093 meridiemHour: function (hour, meridiem) { 18094 if (hour === 12) { 18095 hour = 0; 18096 } 18097 if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { 18098 return hour; 18099 } else if (meridiem === '下午' || meridiem === '晚上') { 18100 return hour + 12; 18101 } else { 18102 // '中午' 18103 return hour >= 11 ? hour : hour + 12; 18104 } 18105 }, 18106 meridiem: function (hour, minute, isLower) { 18107 var hm = hour * 100 + minute; 18108 if (hm < 600) { 18109 return '凌晨'; 18110 } else if (hm < 900) { 18111 return '早上'; 18112 } else if (hm < 1130) { 18113 return '上午'; 18114 } else if (hm < 1230) { 18115 return '中午'; 18116 } else if (hm < 1800) { 18117 return '下午'; 18118 } else { 18119 return '晚上'; 18120 } 18121 }, 18122 calendar: { 18123 sameDay: '[今天]LT', 18124 nextDay: '[明天]LT', 18125 nextWeek: function (now) { 18126 if (now.week() !== this.week()) { 18127 return '[下]dddLT'; 18128 } else { 18129 return '[本]dddLT'; 18130 } 18131 }, 18132 lastDay: '[昨天]LT', 18133 lastWeek: function (now) { 18134 if (this.week() !== now.week()) { 18135 return '[上]dddLT'; 18136 } else { 18137 return '[本]dddLT'; 18138 } 18139 }, 18140 sameElse: 'L', 18141 }, 18142 dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/, 18143 ordinal: function (number, period) { 18144 switch (period) { 18145 case 'd': 18146 case 'D': 18147 case 'DDD': 18148 return number + '日'; 18149 case 'M': 18150 return number + '月'; 18151 case 'w': 18152 case 'W': 18153 return number + '周'; 18154 default: 18155 return number; 18156 } 18157 }, 18158 relativeTime: { 18159 future: '%s后', 18160 past: '%s前', 18161 s: '几秒', 18162 ss: '%d 秒', 18163 m: '1 分钟', 18164 mm: '%d 分钟', 18165 h: '1 小时', 18166 hh: '%d 小时', 18167 d: '1 天', 18168 dd: '%d 天', 18169 w: '1 周', 18170 ww: '%d 周', 18171 M: '1 个月', 18172 MM: '%d 个月', 18173 y: '1 年', 18174 yy: '%d 年', 18175 }, 18176 week: { 18177 // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 18178 dow: 1, // Monday is the first day of the week. 18179 doy: 4, // The week that contains Jan 4th is the first week of the year. 18180 }, 18181 }); 18182 18183 //! moment.js locale configuration 18184 18185 hooks.defineLocale('zh-hk', { 18186 months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( 18187 '_' 18188 ), 18189 monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( 18190 '_' 18191 ), 18192 weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), 18193 weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), 18194 weekdaysMin: '日_一_二_三_四_五_六'.split('_'), 18195 longDateFormat: { 18196 LT: 'HH:mm', 18197 LTS: 'HH:mm:ss', 18198 L: 'YYYY/MM/DD', 18199 LL: 'YYYY年M月D日', 18200 LLL: 'YYYY年M月D日 HH:mm', 18201 LLLL: 'YYYY年M月D日dddd HH:mm', 18202 l: 'YYYY/M/D', 18203 ll: 'YYYY年M月D日', 18204 lll: 'YYYY年M月D日 HH:mm', 18205 llll: 'YYYY年M月D日dddd HH:mm', 18206 }, 18207 meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, 18208 meridiemHour: function (hour, meridiem) { 18209 if (hour === 12) { 18210 hour = 0; 18211 } 18212 if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { 18213 return hour; 18214 } else if (meridiem === '中午') { 18215 return hour >= 11 ? hour : hour + 12; 18216 } else if (meridiem === '下午' || meridiem === '晚上') { 18217 return hour + 12; 18218 } 18219 }, 18220 meridiem: function (hour, minute, isLower) { 18221 var hm = hour * 100 + minute; 18222 if (hm < 600) { 18223 return '凌晨'; 18224 } else if (hm < 900) { 18225 return '早上'; 18226 } else if (hm < 1200) { 18227 return '上午'; 18228 } else if (hm === 1200) { 18229 return '中午'; 18230 } else if (hm < 1800) { 18231 return '下午'; 18232 } else { 18233 return '晚上'; 18234 } 18235 }, 18236 calendar: { 18237 sameDay: '[今天]LT', 18238 nextDay: '[明天]LT', 18239 nextWeek: '[下]ddddLT', 18240 lastDay: '[昨天]LT', 18241 lastWeek: '[上]ddddLT', 18242 sameElse: 'L', 18243 }, 18244 dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, 18245 ordinal: function (number, period) { 18246 switch (period) { 18247 case 'd': 18248 case 'D': 18249 case 'DDD': 18250 return number + '日'; 18251 case 'M': 18252 return number + '月'; 18253 case 'w': 18254 case 'W': 18255 return number + '週'; 18256 default: 18257 return number; 18258 } 18259 }, 18260 relativeTime: { 18261 future: '%s後', 18262 past: '%s前', 18263 s: '幾秒', 18264 ss: '%d 秒', 18265 m: '1 分鐘', 18266 mm: '%d 分鐘', 18267 h: '1 小時', 18268 hh: '%d 小時', 18269 d: '1 天', 18270 dd: '%d 天', 18271 M: '1 個月', 18272 MM: '%d 個月', 18273 y: '1 年', 18274 yy: '%d 年', 18275 }, 18276 }); 18277 18278 //! moment.js locale configuration 18279 18280 hooks.defineLocale('zh-mo', { 18281 months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( 18282 '_' 18283 ), 18284 monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( 18285 '_' 18286 ), 18287 weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), 18288 weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), 18289 weekdaysMin: '日_一_二_三_四_五_六'.split('_'), 18290 longDateFormat: { 18291 LT: 'HH:mm', 18292 LTS: 'HH:mm:ss', 18293 L: 'DD/MM/YYYY', 18294 LL: 'YYYY年M月D日', 18295 LLL: 'YYYY年M月D日 HH:mm', 18296 LLLL: 'YYYY年M月D日dddd HH:mm', 18297 l: 'D/M/YYYY', 18298 ll: 'YYYY年M月D日', 18299 lll: 'YYYY年M月D日 HH:mm', 18300 llll: 'YYYY年M月D日dddd HH:mm', 18301 }, 18302 meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, 18303 meridiemHour: function (hour, meridiem) { 18304 if (hour === 12) { 18305 hour = 0; 18306 } 18307 if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { 18308 return hour; 18309 } else if (meridiem === '中午') { 18310 return hour >= 11 ? hour : hour + 12; 18311 } else if (meridiem === '下午' || meridiem === '晚上') { 18312 return hour + 12; 18313 } 18314 }, 18315 meridiem: function (hour, minute, isLower) { 18316 var hm = hour * 100 + minute; 18317 if (hm < 600) { 18318 return '凌晨'; 18319 } else if (hm < 900) { 18320 return '早上'; 18321 } else if (hm < 1130) { 18322 return '上午'; 18323 } else if (hm < 1230) { 18324 return '中午'; 18325 } else if (hm < 1800) { 18326 return '下午'; 18327 } else { 18328 return '晚上'; 18329 } 18330 }, 18331 calendar: { 18332 sameDay: '[今天] LT', 18333 nextDay: '[明天] LT', 18334 nextWeek: '[下]dddd LT', 18335 lastDay: '[昨天] LT', 18336 lastWeek: '[上]dddd LT', 18337 sameElse: 'L', 18338 }, 18339 dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, 18340 ordinal: function (number, period) { 18341 switch (period) { 18342 case 'd': 18343 case 'D': 18344 case 'DDD': 18345 return number + '日'; 18346 case 'M': 18347 return number + '月'; 18348 case 'w': 18349 case 'W': 18350 return number + '週'; 18351 default: 18352 return number; 18353 } 18354 }, 18355 relativeTime: { 18356 future: '%s內', 18357 past: '%s前', 18358 s: '幾秒', 18359 ss: '%d 秒', 18360 m: '1 分鐘', 18361 mm: '%d 分鐘', 18362 h: '1 小時', 18363 hh: '%d 小時', 18364 d: '1 天', 18365 dd: '%d 天', 18366 M: '1 個月', 18367 MM: '%d 個月', 18368 y: '1 年', 18369 yy: '%d 年', 18370 }, 18371 }); 18372 18373 //! moment.js locale configuration 18374 18375 hooks.defineLocale('zh-tw', { 18376 months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split( 18377 '_' 18378 ), 18379 monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split( 18380 '_' 18381 ), 18382 weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), 18383 weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'), 18384 weekdaysMin: '日_一_二_三_四_五_六'.split('_'), 18385 longDateFormat: { 18386 LT: 'HH:mm', 18387 LTS: 'HH:mm:ss', 18388 L: 'YYYY/MM/DD', 18389 LL: 'YYYY年M月D日', 18390 LLL: 'YYYY年M月D日 HH:mm', 18391 LLLL: 'YYYY年M月D日dddd HH:mm', 18392 l: 'YYYY/M/D', 18393 ll: 'YYYY年M月D日', 18394 lll: 'YYYY年M月D日 HH:mm', 18395 llll: 'YYYY年M月D日dddd HH:mm', 18396 }, 18397 meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, 18398 meridiemHour: function (hour, meridiem) { 18399 if (hour === 12) { 18400 hour = 0; 18401 } 18402 if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { 18403 return hour; 18404 } else if (meridiem === '中午') { 18405 return hour >= 11 ? hour : hour + 12; 18406 } else if (meridiem === '下午' || meridiem === '晚上') { 18407 return hour + 12; 18408 } 18409 }, 18410 meridiem: function (hour, minute, isLower) { 18411 var hm = hour * 100 + minute; 18412 if (hm < 600) { 18413 return '凌晨'; 18414 } else if (hm < 900) { 18415 return '早上'; 18416 } else if (hm < 1130) { 18417 return '上午'; 18418 } else if (hm < 1230) { 18419 return '中午'; 18420 } else if (hm < 1800) { 18421 return '下午'; 18422 } else { 18423 return '晚上'; 18424 } 18425 }, 18426 calendar: { 18427 sameDay: '[今天] LT', 18428 nextDay: '[明天] LT', 18429 nextWeek: '[下]dddd LT', 18430 lastDay: '[昨天] LT', 18431 lastWeek: '[上]dddd LT', 18432 sameElse: 'L', 18433 }, 18434 dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, 18435 ordinal: function (number, period) { 18436 switch (period) { 18437 case 'd': 18438 case 'D': 18439 case 'DDD': 18440 return number + '日'; 18441 case 'M': 18442 return number + '月'; 18443 case 'w': 18444 case 'W': 18445 return number + '週'; 18446 default: 18447 return number; 18448 } 18449 }, 18450 relativeTime: { 18451 future: '%s後', 18452 past: '%s前', 18453 s: '幾秒', 18454 ss: '%d 秒', 18455 m: '1 分鐘', 18456 mm: '%d 分鐘', 18457 h: '1 小時', 18458 hh: '%d 小時', 18459 d: '1 天', 18460 dd: '%d 天', 18461 M: '1 個月', 18462 MM: '%d 個月', 18463 y: '1 年', 18464 yy: '%d 年', 18465 }, 18466 }); 18467 18468 hooks.locale('en'); 18469 18470 return hooks; 18471 18472})));