PageSourceSearch

https://pafilamandaukab.org/cdn/boots/dist/js/moment-with-locales.js

js pafilamandaukab.org collected 2026-10-08 03:20:31 UTC 386,254 bytes, 9,792 lines download raw bytes

1//! moment.js
2//! version : 2.9.0
3//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
4//! license : MIT
5//! momentjs.com
6
7(function (undefined) {
8    /************************************
9        Constants
10    ************************************/
11
12    var moment,
13        VERSION = '2.9.0',
14        // the global-scope this is NOT the global object in Node.js
15        globalScope = (typeof global !== 'undefined' && (typeof window === 'undefined' || window === global.window)) ? global : this,
16        oldGlobalMoment,
17        round = Math.round,
18        hasOwnProperty = Object.prototype.hasOwnProperty,
19        i,
20
21        YEAR = 0,
22        MONTH = 1,
23        DATE = 2,
24        HOUR = 3,
25        MINUTE = 4,
26        SECOND = 5,
27        MILLISECOND = 6,
28
29        // internal storage for locale config files
30        locales = {},
31
32        // extra moment internal properties (plugins register props here)
33        momentProperties = [],
34
35        // check for nodeJS
36        hasModule = (typeof module !== 'undefined' && module && module.exports),
37
38        // ASP.NET json date format regex
39        aspNetJsonRegex = /^\/?Date\((\-?\d+)/i,
40        aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,
41
42        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
43        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
44        isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,
45
46        // format tokens
47        formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,
48        localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
49
50        // parsing token regexes
51        parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99
52        parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999
53        parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999
54        parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999
55        parseTokenDigits = /\d+/, // nonzero number of digits
56        parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic.
57        parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
58        parseTokenT = /T/i, // T (ISO separator)
59        parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123
60        parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
61
62        //strict parsing regexes
63        parseTokenOneDigit = /\d/, // 0 - 9
64        parseTokenTwoDigits = /\d\d/, // 00 - 99
65        parseTokenThreeDigits = /\d{3}/, // 000 - 999
66        parseTokenFourDigits = /\d{4}/, // 0000 - 9999
67        parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999
68        parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf
69
70        // iso 8601 regex
71        // 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)
72        isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
73
74        isoFormat = 'YYYY-MM-DDTHH:mm:ssZ',
75
76        isoDates = [
77            ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/],
78            ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/],
79            ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/],
80            ['GGGG-[W]WW', /\d{4}-W\d{2}/],
81            ['YYYY-DDD', /\d{4}-\d{3}/]
82        ],
83
84        // iso time formats and regexes
85        isoTimes = [
86            ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/],
87            ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/],
88            ['HH:mm', /(T| )\d\d:\d\d/],
89            ['HH', /(T| )\d\d/]
90        ],
91
92        // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-', '15', '30']
93        parseTimezoneChunker = /([\+\-]|\d\d)/gi,
94
95        // getter and setter names
96        proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'),
97        unitMillisecondFactors = {
98            'Milliseconds' : 1,
99            'Seconds' : 1e3,
100            'Minutes' : 6e4,
101            'Hours' : 36e5,
102            'Days' : 864e5,
103            'Months' : 2592e6,
104            'Years' : 31536e6
105        },
106
107        unitAliases = {
108            ms : 'millisecond',
109            s : 'second',
110            m : 'minute',
111            h : 'hour',
112            d : 'day',
113            D : 'date',
114            w : 'week',
115            W : 'isoWeek',
116            M : 'month',
117            Q : 'quarter',
118            y : 'year',
119            DDD : 'dayOfYear',
120            e : 'weekday',
121            E : 'isoWeekday',
122            gg: 'weekYear',
123            GG: 'isoWeekYear'
124        },
125
126        camelFunctions = {
127            dayofyear : 'dayOfYear',
128            isoweekday : 'isoWeekday',
129            isoweek : 'isoWeek',
130            weekyear : 'weekYear',
131            isoweekyear : 'isoWeekYear'
132        },
133
134        // format function strings
135        formatFunctions = {},
136
137        // default relative time thresholds
138        relativeTimeThresholds = {
139            s: 45,  // seconds to minute
140            m: 45,  // minutes to hour
141            h: 22,  // hours to day
142            d: 26,  // days to month
143            M: 11   // months to year
144        },
145
146        // tokens to ordinalize and pad
147        ordinalizeTokens = 'DDD w W M D d'.split(' '),
148        paddedTokens = 'M D H h m s w W'.split(' '),
149
150        formatTokenFunctions = {
151            M    : function () {
152                return this.month() + 1;
153            },
154            MMM  : function (format) {
155                return this.localeData().monthsShort(this, format);
156            },
157            MMMM : function (format) {
158                return this.localeData().months(this, format);
159            },
160            D    : function () {
161                return this.date();
162            },
163            DDD  : function () {
164                return this.dayOfYear();
165            },
166            d    : function () {
167                return this.day();
168            },
169            dd   : function (format) {
170                return this.localeData().weekdaysMin(this, format);
171            },
172            ddd  : function (format) {
173                return this.localeData().weekdaysShort(this, format);
174            },
175            dddd : function (format) {
176                return this.localeData().weekdays(this, format);
177            },
178            w    : function () {
179                return this.week();
180            },
181            W    : function () {
182                return this.isoWeek();
183            },
184            YY   : function () {
185                return leftZeroFill(this.year() % 100, 2);
186            },
187            YYYY : function () {
188                return leftZeroFill(this.year(), 4);
189            },
190            YYYYY : function () {
191                return leftZeroFill(this.year(), 5);
192            },
193            YYYYYY : function () {
194                var y = this.year(), sign = y >= 0 ? '+' : '-';
195                return sign + leftZeroFill(Math.abs(y), 6);
196            },
197            gg   : function () {
198                return leftZeroFill(this.weekYear() % 100, 2);
199            },
200            gggg : function () {
201                return leftZeroFill(this.weekYear(), 4);
202            },
203            ggggg : function () {
204                return leftZeroFill(this.weekYear(), 5);
205            },
206            GG   : function () {
207                return leftZeroFill(this.isoWeekYear() % 100, 2);
208            },
209            GGGG : function () {
210                return leftZeroFill(this.isoWeekYear(), 4);
211            },
212            GGGGG : function () {
213                return leftZeroFill(this.isoWeekYear(), 5);
214            },
215            e : function () {
216                return this.weekday();
217            },
218            E : function () {
219                return this.isoWeekday();
220            },
221            a    : function () {
222                return this.localeData().meridiem(this.hours(), this.minutes(), true);
223            },
224            A    : function () {
225                return this.localeData().meridiem(this.hours(), this.minutes(), false);
226            },
227            H    : function () {
228                return this.hours();
229            },
230            h    : function () {
231                return this.hours() % 12 || 12;
232            },
233            m    : function () {
234                return this.minutes();
235            },
236            s    : function () {
237                return this.seconds();
238            },
239            S    : function () {
240                return toInt(this.milliseconds() / 100);
241            },
242            SS   : function () {
243                return leftZeroFill(toInt(this.milliseconds() / 10), 2);
244            },
245            SSS  : function () {
246                return leftZeroFill(this.milliseconds(), 3);
247            },
248            SSSS : function () {
249                return leftZeroFill(this.milliseconds(), 3);
250            },
251            Z    : function () {
252                var a = this.utcOffset(),
253                    b = '+';
254                if (a < 0) {
255                    a = -a;
256                    b = '-';
257                }
258                return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2);
259            },
260            ZZ   : function () {
261                var a = this.utcOffset(),
262                    b = '+';
263                if (a < 0) {
264                    a = -a;
265                    b = '-';
266                }
267                return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2);
268            },
269            z : function () {
270                return this.zoneAbbr();
271            },
272            zz : function () {
273                return this.zoneName();
274            },
275            x    : function () {
276                return this.valueOf();
277            },
278            X    : function () {
279                return this.unix();
280            },
281            Q : function () {
282                return this.quarter();
283            }
284        },
285
286        deprecations = {},
287
288        lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'],
289
290        updateInProgress = false;
291
292    // Pick the first defined of two or three arguments. dfl comes from
293    // default.
294    function dfl(a, b, c) {
295        switch (arguments.length) {
296            case 2: return a != null ? a : b;
297            case 3: return a != null ? a : b != null ? b : c;
298            default: throw new Error('Implement me');
299        }
300    }
301
302    function hasOwnProp(a, b) {
303        return hasOwnProperty.call(a, b);
304    }
305
306    function defaultParsingFlags() {
307        // We need to deep clone this object, and es5 standard is not very
308        // helpful.
309        return {
310            empty : false,
311            unusedTokens : [],
312            unusedInput : [],
313            overflow : -2,
314            charsLeftOver : 0,
315            nullInput : false,
316            invalidMonth : null,
317            invalidFormat : false,
318            userInvalidated : false,
319            iso: false
320        };
321    }
322
323    function printMsg(msg) {
324        if (moment.suppressDeprecationWarnings === false &&
325                typeof console !== 'undefined' && console.warn) {
326            console.warn('Deprecation warning: ' + msg);
327        }
328    }
329
330    function deprecate(msg, fn) {
331        var firstTime = true;
332        return extend(function () {
333            if (firstTime) {
334                printMsg(msg);
335                firstTime = false;
336            }
337            return fn.apply(this, arguments);
338        }, fn);
339    }
340
341    function deprecateSimple(name, msg) {
342        if (!deprecations[name]) {
343            printMsg(msg);
344            deprecations[name] = true;
345        }
346    }
347
348    function padToken(func, count) {
349        return function (a) {
350            return leftZeroFill(func.call(this, a), count);
351        };
352    }
353    function ordinalizeToken(func, period) {
354        return function (a) {
355            return this.localeData().ordinal(func.call(this, a), period);
356        };
357    }
358
359    function monthDiff(a, b) {
360        // difference in months
361        var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
362            // b is in (anchor - 1 month, anchor + 1 month)
363            anchor = a.clone().add(wholeMonthDiff, 'months'),
364            anchor2, adjust;
365
366        if (b - anchor < 0) {
367            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
368            // linear across the month
369            adjust = (b - anchor) / (anchor - anchor2);
370        } else {
371            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
372            // linear across the month
373            adjust = (b - anchor) / (anchor2 - anchor);
374        }
375
376        return -(wholeMonthDiff + adjust);
377    }
378
379    while (ordinalizeTokens.length) {
380        i = ordinalizeTokens.pop();
381        formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i);
382    }
383    while (paddedTokens.length) {
384        i = paddedTokens.pop();
385        formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2);
386    }
387    formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3);
388
389
390    function meridiemFixWrap(locale, hour, meridiem) {
391        var isPm;
392
393        if (meridiem == null) {
394            // nothing to do
395            return hour;
396        }
397        if (locale.meridiemHour != null) {
398            return locale.meridiemHour(hour, meridiem);
399        } else if (locale.isPM != null) {
400            // Fallback
401            isPm = locale.isPM(meridiem);
402            if (isPm && hour < 12) {
403                hour += 12;
404            }
405            if (!isPm && hour === 12) {
406                hour = 0;
407            }
408            return hour;
409        } else {
410            // thie is not supposed to happen
411            return hour;
412        }
413    }
414
415    /************************************
416        Constructors
417    ************************************/
418
419    function Locale() {
420    }
421
422    // Moment prototype object
423    function Moment(config, skipOverflow) {
424        if (skipOverflow !== false) {
425            checkOverflow(config);
426        }
427        copyConfig(this, config);
428        this._d = new Date(+config._d);
429        // Prevent infinite loop in case updateOffset creates new moment
430        // objects.
431        if (updateInProgress === false) {
432            updateInProgress = true;
433            moment.updateOffset(this);
434            updateInProgress = false;
435        }
436    }
437
438    // Duration Constructor
439    function Duration(duration) {
440        var normalizedInput = normalizeObjectUnits(duration),
441            years = normalizedInput.year || 0,
442            quarters = normalizedInput.quarter || 0,
443            months = normalizedInput.month || 0,
444            weeks = normalizedInput.week || 0,
445            days = normalizedInput.day || 0,
446            hours = normalizedInput.hour || 0,
447            minutes = normalizedInput.minute || 0,
448            seconds = normalizedInput.second || 0,
449            milliseconds = normalizedInput.millisecond || 0;
450
451        // representation for dateAddRemove
452        this._milliseconds = +milliseconds +
453            seconds * 1e3 + // 1000
454            minutes * 6e4 + // 1000 * 60
455            hours * 36e5; // 1000 * 60 * 60
456        // Because of dateAddRemove treats 24 hours as different from a
457        // day when working around DST, we need to store them separately
458        this._days = +days +
459            weeks * 7;
460        // It is impossible translate months into days without knowing
461        // which months you are are talking about, so we have to store
462        // it separately.
463        this._months = +months +
464            quarters * 3 +
465            years * 12;
466
467        this._data = {};
468
469        this._locale = moment.localeData();
470
471        this._bubble();
472    }
473
474    /************************************
475        Helpers
476    ************************************/
477
478
479    function extend(a, b) {
480        for (var i in b) {
481            if (hasOwnProp(b, i)) {
482                a[i] = b[i];
483            }
484        }
485
486        if (hasOwnProp(b, 'toString')) {
487            a.toString = b.toString;
488        }
489
490        if (hasOwnProp(b, 'valueOf')) {
491            a.valueOf = b.valueOf;
492        }
493
494        return a;
495    }
496
497    function copyConfig(to, from) {
498        var i, prop, val;
499
500        if (typeof from._isAMomentObject !== 'undefined') {
501            to._isAMomentObject = from._isAMomentObject;
502        }
503        if (typeof from._i !== 'undefined') {
504            to._i = from._i;
505        }
506        if (typeof from._f !== 'undefined') {
507            to._f = from._f;
508        }
509        if (typeof from._l !== 'undefined') {
510            to._l = from._l;
511        }
512        if (typeof from._strict !== 'undefined') {
513            to._strict = from._strict;
514        }
515        if (typeof from._tzm !== 'undefined') {
516            to._tzm = from._tzm;
517        }
518        if (typeof from._isUTC !== 'undefined') {
519            to._isUTC = from._isUTC;
520        }
521        if (typeof from._offset !== 'undefined') {
522            to._offset = from._offset;
523        }
524        if (typeof from._pf !== 'undefined') {
525            to._pf = from._pf;
526        }
527        if (typeof from._locale !== 'undefined') {
528            to._locale = from._locale;
529        }
530
531        if (momentProperties.length > 0) {
532            for (i in momentProperties) {
533                prop = momentProperties[i];
534                val = from[prop];
535                if (typeof val !== 'undefined') {
536                    to[prop] = val;
537                }
538            }
539        }
540
541        return to;
542    }
543
544    function absRound(number) {
545        if (number < 0) {
546            return Math.ceil(number);
547        } else {
548            return Math.floor(number);
549        }
550    }
551
552    // left zero fill a number
553    // see http://jsperf.com/left-zero-filling for performance comparison
554    function leftZeroFill(number, targetLength, forceSign) {
555        var output = '' + Math.abs(number),
556            sign = number >= 0;
557
558        while (output.length < targetLength) {
559            output = '0' + output;
560        }
561        return (sign ? (forceSign ? '+' : '') : '-') + output;
562    }
563
564    function positiveMomentsDifference(base, other) {
565        var res = {milliseconds: 0, months: 0};
566
567        res.months = other.month() - base.month() +
568            (other.year() - base.year()) * 12;
569        if (base.clone().add(res.months, 'M').isAfter(other)) {
570            --res.months;
571        }
572
573        res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
574
575        return res;
576    }
577
578    function momentsDifference(base, other) {
579        var res;
580        other = makeAs(other, base);
581        if (base.isBefore(other)) {
582            res = positiveMomentsDifference(base, other);
583        } else {
584            res = positiveMomentsDifference(other, base);
585            res.milliseconds = -res.milliseconds;
586            res.months = -res.months;
587        }
588
589        return res;
590    }
591
592    // TODO: remove 'name' arg after deprecation is removed
593    function createAdder(direction, name) {
594        return function (val, period) {
595            var dur, tmp;
596            //invert the arguments, but complain about it
597            if (period !== null && !isNaN(+period)) {
598                deprecateSimple(name, 'moment().' + name  + '(period, number) is deprecated. Please use moment().' + name + '(number, period).');
599                tmp = val; val = period; period = tmp;
600            }
601
602            val = typeof val === 'string' ? +val : val;
603            dur = moment.duration(val, period);
604            addOrSubtractDurationFromMoment(this, dur, direction);
605            return this;
606        };
607    }
608
609    function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) {
610        var milliseconds = duration._milliseconds,
611            days = duration._days,
612            months = duration._months;
613        updateOffset = updateOffset == null ? true : updateOffset;
614
615        if (milliseconds) {
616            mom._d.setTime(+mom._d + milliseconds * isAdding);
617        }
618        if (days) {
619            rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding);
620        }
621        if (months) {
622            rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding);
623        }
624        if (updateOffset) {
625            moment.updateOffset(mom, days || months);
626        }
627    }
628
629    // check if is an array
630    function isArray(input) {
631        return Object.prototype.toString.call(input) === '[object Array]';
632    }
633
634    function isDate(input) {
635        return Object.prototype.toString.call(input) === '[object Date]' ||
636            input instanceof Date;
637    }
638
639    // compare two arrays, return the number of differences
640    function compareArrays(array1, array2, dontConvert) {
641        var len = Math.min(array1.length, array2.length),
642            lengthDiff = Math.abs(array1.length - array2.length),
643            diffs = 0,
644            i;
645        for (i = 0; i < len; i++) {
646            if ((dontConvert && array1[i] !== array2[i]) ||
647                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
648                diffs++;
649            }
650        }
651        return diffs + lengthDiff;
652    }
653
654    function normalizeUnits(units) {
655        if (units) {
656            var lowered = units.toLowerCase().replace(/(.)s$/, '$1');
657            units = unitAliases[units] || camelFunctions[lowered] || lowered;
658        }
659        return units;
660    }
661
662    function normalizeObjectUnits(inputObject) {
663        var normalizedInput = {},
664            normalizedProp,
665            prop;
666
667        for (prop in inputObject) {
668            if (hasOwnProp(inputObject, prop)) {
669                normalizedProp = normalizeUnits(prop);
670                if (normalizedProp) {
671                    normalizedInput[normalizedProp] = inputObject[prop];
672                }
673            }
674        }
675
676        return normalizedInput;
677    }
678
679    function makeList(field) {
680        var count, setter;
681
682        if (field.indexOf('week') === 0) {
683            count = 7;
684            setter = 'day';
685        }
686        else if (field.indexOf('month') === 0) {
687            count = 12;
688            setter = 'month';
689        }
690        else {
691            return;
692        }
693
694        moment[field] = function (format, index) {
695            var i, getter,
696                method = moment._locale[field],
697                results = [];
698
699            if (typeof format === 'number') {
700                index = format;
701                format = undefined;
702            }
703
704            getter = function (i) {
705                var m = moment().utc().set(setter, i);
706                return method.call(moment._locale, m, format || '');
707            };
708
709            if (index != null) {
710                return getter(index);
711            }
712            else {
713                for (i = 0; i < count; i++) {
714                    results.push(getter(i));
715                }
716                return results;
717            }
718        };
719    }
720
721    function toInt(argumentForCoercion) {
722        var coercedNumber = +argumentForCoercion,
723            value = 0;
724
725        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
726            if (coercedNumber >= 0) {
727                value = Math.floor(coercedNumber);
728            } else {
729                value = Math.ceil(coercedNumber);
730            }
731        }
732
733        return value;
734    }
735
736    function daysInMonth(year, month) {
737        return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
738    }
739
740    function weeksInYear(year, dow, doy) {
741        return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week;
742    }
743
744    function daysInYear(year) {
745        return isLeapYear(year) ? 366 : 365;
746    }
747
748    function isLeapYear(year) {
749        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
750    }
751
752    function checkOverflow(m) {
753        var overflow;
754        if (m._a && m._pf.overflow === -2) {
755            overflow =
756                m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH :
757                m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE :
758                m._a[HOUR] < 0 || m._a[HOUR] > 24 ||
759                    (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 ||
760                                           m._a[SECOND] !== 0 ||
761                                           m._a[MILLISECOND] !== 0)) ? HOUR :
762                m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE :
763                m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND :
764                m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND :
765                -1;
766
767            if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
768                overflow = DATE;
769            }
770
771            m._pf.overflow = overflow;
772        }
773    }
774
775    function isValid(m) {
776        if (m._isValid == null) {
777            m._isValid = !isNaN(m._d.getTime()) &&
778                m._pf.overflow < 0 &&
779                !m._pf.empty &&
780                !m._pf.invalidMonth &&
781                !m._pf.nullInput &&
782                !m._pf.invalidFormat &&
783                !m._pf.userInvalidated;
784
785            if (m._strict) {
786                m._isValid = m._isValid &&
787                    m._pf.charsLeftOver === 0 &&
788                    m._pf.unusedTokens.length === 0 &&
789                    m._pf.bigHour === undefined;
790            }
791        }
792        return m._isValid;
793    }
794
795    function normalizeLocale(key) {
796        return key ? key.toLowerCase().replace('_', '-') : key;
797    }
798
799    // pick the locale from the array
800    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list tr
800ying each
801    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
802    function chooseLocale(names) {
803        var i = 0, j, next, locale, split;
804
805        while (i < names.length) {
806            split = normalizeLocale(names[i]).split('-');
807            j = split.length;
808            next = normalizeLocale(names[i + 1]);
809            next = next ? next.split('-') : null;
810            while (j > 0) {
811                locale = loadLocale(split.slice(0, j).join('-'));
812                if (locale) {
813                    return locale;
814                }
815                if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
816                    //the next array item is better than a shallower substring of this one
817                    break;
818                }
819                j--;
820            }
821            i++;
822        }
823        return null;
824    }
825
826    function loadLocale(name) {
827        var oldLocale = null;
828        if (!locales[name] && hasModule) {
829            try {
830                oldLocale = moment.locale();
831                require('./locale/' + name);
832                // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales
833                moment.locale(oldLocale);
834            } catch (e) { }
835        }
836        return locales[name];
837    }
838
839    // Return a moment from input, that is local/utc/utcOffset equivalent to
840    // model.
841    function makeAs(input, model) {
842        var res, diff;
843        if (model._isUTC) {
844            res = model.clone();
845            diff = (moment.isMoment(input) || isDate(input) ?
846                    +input : +moment(input)) - (+res);
847            // Use low-level api, because this fn is low-level api.
848            res._d.setTime(+res._d + diff);
849            moment.updateOffset(res, false);
850            return res;
851        } else {
852            return moment(input).local();
853        }
854    }
855
856    /************************************
857        Locale
858    ************************************/
859
860
861    extend(Locale.prototype, {
862
863        set : function (config) {
864            var prop, i;
865            for (i in config) {
866                prop = config[i];
867                if (typeof prop === 'function') {
868                    this[i] = prop;
869                } else {
870                    this['_' + i] = prop;
871                }
872            }
873            // Lenient ordinal parsing accepts just a number in addition to
874            // number + (possibly) stuff coming from _ordinalParseLenient.
875            this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source);
876        },
877
878        _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
879        months : function (m) {
880            return this._months[m.month()];
881        },
882
883        _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
884        monthsShort : function (m) {
885            return this._monthsShort[m.month()];
886        },
887
888        monthsParse : function (monthName, format, strict) {
889            var i, mom, regex;
890
891            if (!this._monthsParse) {
892                this._monthsParse = [];
893                this._longMonthsParse = [];
894                this._shortMonthsParse = [];
895            }
896
897            for (i = 0; i < 12; i++) {
898                // make the regex if we don't have it already
899                mom = moment.utc([2000, i]);
900                if (strict && !this._longMonthsParse[i]) {
901                    this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
902                    this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
903                }
904                if (!strict && !this._monthsParse[i]) {
905                    regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
906                    this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
907                }
908                // test the regex
909                if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
910                    return i;
911                } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
912                    return i;
913                } else if (!strict && this._monthsParse[i].test(monthName)) {
914                    return i;
915                }
916            }
917        },
918
919        _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
920        weekdays : function (m) {
921            return this._weekdays[m.day()];
922        },
923
924        _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
925        weekdaysShort : function (m) {
926            return this._weekdaysShort[m.day()];
927        },
928
929        _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
930        weekdaysMin : function (m) {
931            return this._weekdaysMin[m.day()];
932        },
933
934        weekdaysParse : function (weekdayName) {
935            var i, mom, regex;
936
937            if (!this._weekdaysParse) {
938                this._weekdaysParse = [];
939            }
940
941            for (i = 0; i < 7; i++) {
942                // make the regex if we don't have it already
943                if (!this._weekdaysParse[i]) {
944                    mom = moment([2000, 1]).day(i);
945                    regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
946                    this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
947                }
948                // test the regex
949                if (this._weekdaysParse[i].test(weekdayName)) {
950                    return i;
951                }
952            }
953        },
954
955        _longDateFormat : {
956            LTS : 'h:mm:ss A',
957            LT : 'h:mm A',
958            L : 'MM/DD/YYYY',
959            LL : 'MMMM D, YYYY',
960            LLL : 'MMMM D, YYYY LT',
961            LLLL : 'dddd, MMMM D, YYYY LT'
962        },
963        longDateFormat : function (key) {
964            var output = this._longDateFormat[key];
965            if (!output && this._longDateFormat[key.toUpperCase()]) {
966                output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) {
967                    return val.slice(1);
968                });
969                this._longDateFormat[key] = output;
970            }
971            return output;
972        },
973
974        isPM : function (input) {
975            // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing str
975ings like arrays
976            // Using charAt should be more compatible.
977            return ((input + '').toLowerCase().charAt(0) === 'p');
978        },
979
980        _meridiemParse : /[ap]\.?m?\.?/i,
981        meridiem : function (hours, minutes, isLower) {
982            if (hours > 11) {
983                return isLower ? 'pm' : 'PM';
984            } else {
985                return isLower ? 'am' : 'AM';
986            }
987        },
988
989
990        _calendar : {
991            sameDay : '[Today at] LT',
992            nextDay : '[Tomorrow at] LT',
993            nextWeek : 'dddd [at] LT',
994            lastDay : '[Yesterday at] LT',
995            lastWeek : '[Last] dddd [at] LT',
996            sameElse : 'L'
997        },
998        calendar : function (key, mom, now) {
999            var output = this._calendar[key];
1000            return typeof output === 'function' ? output.apply(mom, [now]) : output;
1001        },
1002
1003        _relativeTime : {
1004            future : 'in %s',
1005            past : '%s ago',
1006            s : 'a few seconds',
1007            m : 'a minute',
1008            mm : '%d minutes',
1009            h : 'an hour',
1010            hh : '%d hours',
1011            d : 'a day',
1012            dd : '%d days',
1013            M : 'a month',
1014            MM : '%d months',
1015            y : 'a year',
1016            yy : '%d years'
1017        },
1018
1019        relativeTime : function (number, withoutSuffix, string, isFuture) {
1020            var output = this._relativeTime[string];
1021            return (typeof output === 'function') ?
1022                output(number, withoutSuffix, string, isFuture) :
1023                output.replace(/%d/i, number);
1024        },
1025
1026        pastFuture : function (diff, output) {
1027            var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
1028            return typeof format === 'function' ? format(output) : format.replace(/%s/i, output);
1029        },
1030
1031        ordinal : function (number) {
1032            return this._ordinal.replace('%d', number);
1033        },
1034        _ordinal : '%d',
1035        _ordinalParse : /\d{1,2}/,
1036
1037        preparse : function (string) {
1038            return string;
1039        },
1040
1041        postformat : function (string) {
1042            return string;
1043        },
1044
1045        week : function (mom) {
1046            return weekOfYear(mom, this._week.dow, this._week.doy).week;
1047        },
1048
1049        _week : {
1050            dow : 0, // Sunday is the first day of the week.
1051            doy : 6  // The week that contains Jan 1st is the first week of the year.
1052        },
1053
1054        firstDayOfWeek : function () {
1055            return this._week.dow;
1056        },
1057
1058        firstDayOfYear : function () {
1059            return this._week.doy;
1060        },
1061
1062        _invalidDate: 'Invalid date',
1063        invalidDate: function () {
1064            return this._invalidDate;
1065        }
1066    });
1067
1068    /************************************
1069        Formatting
1070    ************************************/
1071
1072
1073    function removeFormattingTokens(input) {
1074        if (input.match(/\[[\s\S]/)) {
1075            return input.replace(/^\[|\]$/g, '');
1076        }
1077        return input.replace(/\\/g, '');
1078    }
1079
1080    function makeFormatFunction(format) {
1081        var array = format.match(formattingTokens), i, length;
1082
1083        for (i = 0, length = array.length; i < length; i++) {
1084            if (formatTokenFunctions[array[i]]) {
1085                array[i] = formatTokenFunctions[array[i]];
1086            } else {
1087                array[i] = removeFormattingTokens(array[i]);
1088            }
1089        }
1090
1091        return function (mom) {
1092            var output = '';
1093            for (i = 0; i < length; i++) {
1094                output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
1095            }
1096            return output;
1097        };
1098    }
1099
1100    // format date using native date object
1101    function formatMoment(m, format) {
1102        if (!m.isValid()) {
1103            return m.localeData().invalidDate();
1104        }
1105
1106        format = expandFormat(format, m.localeData());
1107
1108        if (!formatFunctions[format]) {
1109            formatFunctions[format] = makeFormatFunction(format);
1110        }
1111
1112        return formatFunctions[format](m);
1113    }
1114
1115    function expandFormat(format, locale) {
1116        var i = 5;
1117
1118        function replaceLongDateFormatTokens(input) {
1119            return locale.longDateFormat(input) || input;
1120        }
1121
1122        localFormattingTokens.lastIndex = 0;
1123        while (i >= 0 && localFormattingTokens.test(format)) {
1124            format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
1125            localFormattingTokens.lastIndex = 0;
1126            i -= 1;
1127        }
1128
1129        return format;
1130    }
1131
1132
1133    /************************************
1134        Parsing
1135    ************************************/
1136
1137
1138    // get the regex to find the next token
1139    function getParseRegexForToken(token, config) {
1140        var a, strict = config._strict;
1141        switch (token) {
1142        case 'Q':
1143            return parseTokenOneDigit;
1144        case 'DDDD':
1145            return parseTokenThreeDigits;
1146        case 'YYYY':
1147        case 'GGGG':
1148        case 'gggg':
1149            return strict ? parseTokenFourDigits : parseTokenOneToFourDigits;
1150        case 'Y':
1151        case 'G':
1152        case 'g':
1153            return parseTokenSignedNumber;
1154        case 'YYYYYY':
1155        case 'YYYYY':
1156        case 'GGGGG':
1157        case 'ggggg':
1158            return strict ? parseTokenSixDigits : parseTokenOneToSixDigits;
1159        case 'S':
1160            if (strict) {
1161                return parseTokenOneDigit;
1162            }
1163            /* falls through */
1164        case 'SS':
1165            if (strict) {
1166                return parseTokenTwoDigits;
1167            }
1168            /* falls through */
1169        case 'SSS':
1170            if (strict) {
1171                return parseTokenThreeDigits;
1172            }
1173            /* falls through */
1174        case 'DDD':
1175            return parseTokenOneToThreeDigits;
1176        case 'MMM':
1177        case 'MMMM':
1178        case 'dd':
1179        case 'ddd':
1180        case 'dddd':
1181            return parseTokenWord;
1182        case 'a':
1183        case 'A':
1184            return config._locale._meridiemParse;
1185        case 'x':
1186            return parseTokenOffsetMs;
1187        case 'X':
1188            return parseTokenTimestampMs;
1189        case 'Z':
1190        case 'ZZ':
1191            return parseTokenTimezone;
1192        case 'T':
1193            return parseTokenT;
1194        case 'SSSS':
1195            return parseTokenDigits;
1196        case 'MM':
1197        case 'DD':
1198        case 'YY':
1199        case 'GG':
1200        case 'gg':
1201        case 'HH':
1202        case 'hh':
1203        case 'mm':
1204        case 'ss':
1205        case 'ww':
1206        case 'WW':
1207            return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits;
1208        case 'M':
1209        case 'D':
1210        case 'd':
1211        case 'H':
1212        case 'h':
1213        case 'm':
1214        case 's':
1215        case 'w':
1216        case 'W':
1217        case 'e':
1218        case 'E':
1219            return parseTokenOneOrTwoDigits;
1220        case 'Do':
1221            return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient;
1222        default :
1223            a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i'));
1224            return a;
1225        }
1226    }
1227
1228    function utcOffsetFromString(string) {
1229        string = string || '';
1230        var possibleTzMatches = (string.match(parseTokenTimezone) || []),
1231            tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [],
1232            parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0],
1233            minutes = +(parts[1] * 60) + toInt(parts[2]);
1234
1235        return parts[0] === '+' ? minutes : -minutes;
1236    }
1237
1238    // function to convert string input to date
1239    function addTimeToArrayFromToken(token, input, config) {
1240        var a, datePartArray = config._a;
1241
1242        switch (token) {
1243        // QUARTER
1244        case 'Q':
1245            if (input != null) {
1246                datePartArray[MONTH] = (toInt(input) - 1) * 3;
1247            }
1248            break;
1249        // MONTH
1250        case 'M' : // fall through to MM
1251        case 'MM' :
1252            if (input != null) {
1253                datePartArray[MONTH] = toInt(input) - 1;
1254            }
1255            break;
1256        case 'MMM' : // fall through to MMMM
1257        case 'MMMM' :
1258            a = config._locale.monthsParse(input, token, config._strict);
1259            // if we didn't find a month name, mark the date as invalid.
1260            if (a != null) {
1261                datePartArray[MONTH] = a;
1262            } else {
1263                config._pf.invalidMonth = input;
1264            }
1265            break;
1266        // DAY OF MONTH
1267        case 'D' : // fall through to DD
1268        case 'DD' :
1269            if (input != null) {
1270                datePartArray[DATE] = toInt(input);
1271            }
1272            break;
1273        case 'Do' :
1274            if (input != null) {
1275                datePartArray[DATE] = toInt(parseInt(
1276                            input.match(/\d{1,2}/)[0], 10));
1277            }
1278            break;
1279        // DAY OF YEAR
1280        case 'DDD' : // fall through to DDDD
1281        case 'DDDD' :
1282            if (input != null) {
1283                config._dayOfYear = toInt(input);
1284            }
1285
1286            break;
1287        // YEAR
1288        case 'YY' :
1289            datePartArray[YEAR] = moment.parseTwoDigitYear(input);
1290            break;
1291        case 'YYYY' :
1292        case 'YYYYY' :
1293        case 'YYYYYY' :
1294            datePartArray[YEAR] = toInt(input);
1295            break;
1296        // AM / PM
1297        case 'a' : // fall through to A
1298        case 'A' :
1299            config._meridiem = input;
1300            // config._isPm = config._locale.isPM(input);
1301            break;
1302        // HOUR
1303        case 'h' : // fall through to hh
1304        case 'hh' :
1305            config._pf.bigHour = true;
1306            /* falls through */
1307        case 'H' : // fall through to HH
1308        case 'HH' :
1309            datePartArray[HOUR] = toInt(input);
1310            break;
1311        // MINUTE
1312        case 'm' : // fall through to mm
1313        case 'mm' :
1314            datePartArray[MINUTE] = toInt(input);
1315            break;
1316        // SECOND
1317        case 's' : // fall through to ss
1318        case 'ss' :
1319            datePartArray[SECOND] = toInt(input);
1320            break;
1321        // MILLISECOND
1322        case 'S' :
1323        case 'SS' :
1324        case 'SSS' :
1325        case 'SSSS' :
1326            datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000);
1327            break;
1328        // UNIX OFFSET (MILLISECONDS)
1329        case 'x':
1330            config._d = new Date(toInt(input));
1331            break;
1332        // UNIX TIMESTAMP WITH MS
1333        case 'X':
1334            config._d = new Date(parseFloat(input) * 1000);
1335            break;
1336        // TIMEZONE
1337        case 'Z' : // fall through to ZZ
1338        case 'ZZ' :
1339            config._useUTC = true;
1340            config._tzm = utcOffsetFromString(input);
1341            break;
1342        // WEEKDAY - human
1343        case 'dd':
1344        case 'ddd':
1345        case 'dddd':
1346            a = config._locale.weekdaysParse(input);
1347            // if we didn't get a weekday name, mark the date as invalid
1348            if (a != null) {
1349                config._w = config._w || {};
1350                config._w['d'] = a;
1351            } else {
1352                config._pf.invalidWeekday = input;
1353            }
1354            break;
1355        // WEEK, WEEK DAY - numeric
1356        case 'w':
1357        case 'ww':
1358        case 'W':
1359        case 'WW':
1360        case 'd':
1361        case 'e':
1362        case 'E':
1363            token = token.substr(0, 1);
1364            /* falls through */
1365        case 'gggg':
1366        case 'GGGG':
1367        case 'GGGGG':
1368            token = token.substr(0, 2);
1369            if (input) {
1370                config._w = config._w || {};
1371                config._w[token] = toInt(input);
1372            }
1373            break;
1374        case 'gg':
1375        case 'GG':
1376            config._w = config._w || {};
1377            config._w[token] = moment.parseTwoDigitYear(input);
1378        }
1379    }
1380
1381    function dayOfYearFromWeekInfo(config) {
1382        var w, weekYear, week, weekday, dow, doy, temp;
1383
1384        w = config._w;
1385        if (w.GG != null || w.W != null || w.E != null) {
1386            dow = 1;
1387            doy = 4;
1388
1389            // TODO: We need to take the current isoWeekYear, but that depends on
1390            // how we interpret now (local, utc, fixed offset). So create
1391            // a now version of current config (take local/utc/offset flags, and
1392            // create now).
1393            weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year);
1394            week = dfl(w.W, 1);
1395            weekday = dfl(w.E, 1);
1396        } else {
1397            dow = config._locale._week.dow;
1398            doy = config._locale._week.doy;
1399
vendor: 4,460 bytes, lines 1400-1535
1400            weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year);
1401            week = dfl(w.w, 1);
1402
1403            if (w.d != null) {
1404                // weekday -- low day numbers are considered next week
1405                weekday = w.d;
1406                if (weekday < dow) {
1407                    ++week;
1408                }
1409            } else if (w.e != null) {
1410                // local weekday -- counting starts from begining of week
1411                weekday = w.e + dow;
1412            } else {
1413                // default to begining of week
1414                weekday = dow;
1415            }
1416        }
1417        temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow);
1418
1419        config._a[YEAR] = temp.year;
1420        config._dayOfYear = temp.dayOfYear;
1421    }
1422
1423    // convert an array to a date.
1424    // the array should mirror the parameters below
1425    // note: all values past the year are optional and will default to the lowest possible value.
1426    // [year, month, day , hour, minute, second, millisecond]
1427    function dateFromConfig(config) {
1428        var i, date, input = [], currentDate, yearToUse;
1429
1430        if (config._d) {
1431            return;
1432        }
1433
1434        currentDate = currentDateArray(config);
1435
1436        //compute day of the year from weeks and weekdays
1437        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
1438            dayOfYearFromWeekInfo(config);
1439        }
1440
1441        //if the day of the year is set, figure out what it is
1442        if (config._dayOfYear) {
1443            yearToUse = dfl(config._a[YEAR], currentDate[YEAR]);
1444
1445            if (config._dayOfYear > daysInYear(yearToUse)) {
1446                config._pf._overflowDayOfYear = true;
1447            }
1448
1449            date = makeUTCDate(yearToUse, 0, config._dayOfYear);
1450            config._a[MONTH] = date.getUTCMonth();
1451            config._a[DATE] = date.getUTCDate();
1452        }
1453
1454        // Default to current date.
1455        // * if no year, month, day of month are given, default to today
1456        // * if day of month is given, default month and year
1457        // * if month is given, default only year
1458        // * if year is given, don't default anything
1459        for (i = 0; i < 3 && config._a[i] == null; ++i) {
1460            config._a[i] = input[i] = currentDate[i];
1461        }
1462
1463        // Zero out whatever was not defaulted, including time
1464        for (; i < 7; i++) {
1465            config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
1466        }
1467
1468        // Check for 24:00:00.000
1469        if (config._a[HOUR] === 24 &&
1470                config._a[MINUTE] === 0 &&
1471                config._a[SECOND] === 0 &&
1472                config._a[MILLISECOND] === 0) {
1473            config._nextDay = true;
1474            config._a[HOUR] = 0;
1475        }
1476
1477        config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input);
1478        // Apply timezone offset from input. The actual utcOffset can be changed
1479        // with parseZone.
1480        if (config._tzm != null) {
1481            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
1482        }
1483
1484        if (config._nextDay) {
1485            config._a[HOUR] = 24;
1486        }
1487    }
1488
1489    function dateFromObject(config) {
1490        var normalizedInput;
1491
1492        if (config._d) {
1493            return;
1494        }
1495
1496        normalizedInput = normalizeObjectUnits(config._i);
1497        config._a = [
1498            normalizedInput.year,
1499            normalizedInput.month,
1500            normalizedInput.day || normalizedInput.date,
1501            normalizedInput.hour,
1502            normalizedInput.minute,
1503            normalizedInput.second,
1504            normalizedInput.millisecond
1505        ];
1506
1507        dateFromConfig(config);
1508    }
1509
1510    function currentDateArray(config) {
1511        var now = new Date();
1512        if (config._useUTC) {
1513            return [
1514                now.getUTCFullYear(),
1515                now.getUTCMonth(),
1516                now.getUTCDate()
1517            ];
1518        } else {
1519            return [now.getFullYear(), now.getMonth(), now.getDate()];
1520        }
1521    }
1522
1523    // date from string and format string
1524    function makeDateFromStringAndFormat(config) {
1525        if (config._f === moment.ISO_8601) {
1526            parseISO(config);
1527            return;
1528        }
1529
1530        config._a = [];
1531        config._pf.empty = true;
1532
1533        // This array is used to make a Date, either with `new Date` or `Date.UTC`
1534        var string = '' + config._i,
1535            i, parsedInput, tokens, token, skipped,
1536            stringLength = string.length,
1537            totalParsedInputLength = 0;
1538
1539        tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
1540
1541        for (i = 0; i < tokens.length; i++) {
1542            token = tokens[i];
1543            parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
1544            if (parsedInput) {
1545                skipped = string.substr(0, string.indexOf(parsedInput));
1546                if (skipped.length > 0) {
1547                    config._pf.unusedInput.push(skipped);
1548                }
1549                string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
1550                totalParsedInputLength += parsedInput.length;
1551            }
1552            // don't parse if it's not a known token
1553            if (formatTokenFunctions[token]) {
1554                if (parsedInput) {
1555                    config._pf.empty = false;
1556                }
1557                else {
1558                    config._pf.unusedTokens.push(token);
1559                }
1560                addTimeToArrayFromToken(token, parsedInput, config);
1561            }
1562            else if (config._strict && !parsedInput) {
1563                config._pf.unusedTokens.push(token);
1564            }
1565        }
1566
1567        // add remaining unparsed input length to the string
1568        config._pf.charsLeftOver = stringLength - totalParsedInputLength;
1569        if (string.length > 0) {
1570            config._pf.unusedInput.push(string);
1571        }
1572
1573        // clear _12h flag if hour is <= 12
1574        if (config._pf.bigHour === true && config._a[HOUR] <= 12) {
1575            config._pf.bigHour = undefined;
1576        }
1577        // handle meridiem
1578        config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR],
1579                config._meridiem);
1580        dateFromConfig(config);
1581        checkOverflow(config);
1582    }
1583
1584    function unescapeFormat(s) {
1585        return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
1586            return p1 || p2 || p3 || p4;
1587        });
1588    }
1589
1590    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
1591    function regexpEscape(s) {
1592        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
1593    }
1594
1595    // date from string and array of format strings
1596    function makeDateFromStringAndArray(config) {
1597        var tempConfig,
1598            bestMoment,
1599
1600            scoreToBeat,
1601            i,
1602            currentScore;
1603
1604        if (config._f.length === 0) {
1605            config._pf.invalidFormat = true;
1606            config._d = new Date(NaN);
1607            return;
1608        }
1609
1610        for (i = 0; i < config._f.length; i++) {
1611            currentScore = 0;
1612            tempConfig = copyConfig({}, config);
1613            if (config._useUTC != null) {
1614                tempConfig._useUTC = config._useUTC;
1615            }
1616            tempConfig._pf = defaultParsingFlags();
1617            tempConfig._f = config._f[i];
1618            makeDateFromStringAndFormat(tempConfig);
1619
1620            if (!isValid(tempConfig)) {
1621                continue;
1622            }
1623
1624            // if there is any input that was not parsed add a penalty for that format
1625            currentScore += tempConfig._pf.charsLeftOver;
1626
1627            //or tokens
1628            currentScore += tempConfig._pf.unusedTokens.length * 10;
1629
1630            tempConfig._pf.score = currentScore;
1631
1632            if (scoreToBeat == null || currentScore < scoreToBeat) {
1633                scoreToBeat = currentScore;
1634                bestMoment = tempConfig;
1635            }
1636        }
1637
1638        extend(config, bestMoment || tempConfig);
1639    }
1640
1641    // date from iso format
1642    function parseISO(config) {
1643        var i, l,
1644            string = config._i,
1645            match = isoRegex.exec(string);
1646
1647        if (match) {
1648            config._pf.iso = true;
1649            for (i = 0, l = isoDates.length; i < l; i++) {
1650                if (isoDates[i][1].exec(string)) {
1651                    // match[5] should be 'T' or undefined
1652                    config._f = isoDates[i][0] + (match[6] || ' ');
1653                    break;
1654                }
1655            }
1656            for (i = 0, l = isoTimes.length; i < l; i++) {
1657                if (isoTimes[i][1].exec(string)) {
1658                    config._f += isoTimes[i][0];
1659                    break;
1660                }
1661            }
1662            if (string.match(parseTokenTimezone)) {
1663                config._f += 'Z';
1664            }
1665            makeDateFromStringAndFormat(config);
1666        } else {
1667            config._isValid = false;
1668        }
1669    }
1670
1671    // date from iso format or fallback
1672    function makeDateFromString(config) {
1673        parseISO(config);
1674        if (config._isValid === false) {
1675            delete config._isValid;
1676            moment.createFromInputFallback(config);
1677        }
1678    }
1679
1680    function map(arr, fn) {
1681        var res = [], i;
1682        for (i = 0; i < arr.length; ++i) {
1683            res.push(fn(arr[i], i));
1684        }
1685        return res;
1686    }
1687
1688    function makeDateFromInput(config) {
1689        var input = config._i, matched;
1690        if (input === undefined) {
1691            config._d = new Date();
1692        } else if (isDate(input)) {
1693            config._d = new Date(+input);
1694        } else if ((matched = aspNetJsonRegex.exec(input)) !== null) {
1695            config._d = new Date(+matched[1]);
1696        } else if (typeof input === 'string') {
1697            makeDateFromString(config);
1698        } else if (isArray(input)) {
1699            config._a = map(input.slice(0), function (obj) {
1700                return parseInt(obj, 10);
1701            });
1702            dateFromConfig(config);
1703        } else if (typeof(input) === 'object') {
1704            dateFromObject(config);
1705        } else if (typeof(input) === 'number') {
1706            // from milliseconds
1707            config._d = new Date(input);
1708        } else {
1709            moment.createFromInputFallback(config);
1710        }
1711    }
1712
1713    function makeDate(y, m, d, h, M, s, ms) {
1714        //can't just apply() to create a date:
1715        //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
1716        var date = new Date(y, m, d, h, M, s, ms);
1717
1718        //the date constructor doesn't accept years < 1970
1719        if (y < 1970) {
1720            date.setFullYear(y);
1721        }
1722        return date;
1723    }
1724
1725    function makeUTCDate(y) {
1726        var date = new Date(Date.UTC.apply(null, arguments));
1727        if (y < 1970) {
1728            date.setUTCFullYear(y);
1729        }
1730        return date;
1731    }
1732
1733    function parseWeekday(input, locale) {
1734        if (typeof input === 'string') {
1735            if (!isNaN(input)) {
1736                input = parseInt(input, 10);
1737            }
1738            else {
1739                input = locale.weekdaysParse(input);
1740                if (typeof input !== 'number') {
1741                    return null;
1742                }
1743            }
1744        }
1745        return input;
1746    }
1747
1748    /************************************
1749        Relative Time
1750    ************************************/
1751
1752
1753    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
1754    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
1755        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
1756    }
1757
1758    function relativeTime(posNegDuration, withoutSuffix, locale) {
1759        var duration = moment.duration(posNegDuration).abs(),
1760            seconds = round(duration.as('s')),
1761            minutes = round(duration.as('m')),
1762            hours = round(duration.as('h')),
1763            days = round(duration.as('d')),
1764            months = round(duration.as('M')),
1765            years = round(duration.as('y')),
1766
1767            args = seconds < relativeTimeThresholds.s && ['s', seconds] ||
1768                minutes === 1 && ['m'] ||
1769                minutes < relativeTimeThresholds.m && ['mm', minutes] ||
1770                hours === 1 && ['h'] ||
1771                hours < relativeTimeThresholds.h && ['hh', hours] ||
1772                days === 1 && ['d'] ||
1773                days < relativeTimeThresholds.d && ['dd', days] ||
1774                months === 1 && ['M'] ||
1775                months < relativeTimeThresholds.M && ['MM', months] ||
1776                years === 1 && ['y'] || ['yy', years];
1777
1778        args[2] = withoutSuffix;
1779        args[3] = +posNegDuration > 0;
1780        args[4] = locale;
1781        return substituteTimeAgo.apply({}, args);
1782    }
1783
1784
1785    /************************************
1786        Week of Year
1787    ************************************/
1788
1789
1790    // firstDayOfWeek       0 = sun, 6 = sat
1791    //                      the day of the week that starts the week
1792    //                      (usually sunday or monday)
1793    // firstDayOfWeekOfYear 0 = sun, 6 = sat
1794    //                      the first week is the week that contains the first
1795    //                      of this day of the week
1796    //                      (eg. ISO weeks use thursday (4))
1797    function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {
1798        var end = firstDayOfWeekOfYear - firstDayOfWeek,
1799            daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),
1800            adjustedMoment;
1801
1802
1803        if (daysToDayOfWeek > end) {
1804            daysToDayOfWeek -= 7;
1805        }
1806
1807        if (daysToDayOfWeek < end - 7) {
1808            daysToDayOfWeek += 7;
1809        }
1810
1811        adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd');
1812        return {
1813            week: Math.ceil(adjustedMoment.dayOfYear() / 7),
1814            year: adjustedMoment.year()
1815        };
1816    }
1817
1818    //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
1819    function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {
1820        var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear;
1821
1822        d = d === 0 ? 7 : d;
1823        weekday = weekday != null ? weekday : firstDayOfWeek;
1824        daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0);
1825        dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1;
1826
1827        return {
1828            year: dayOfYear > 0 ? year : year - 1,
1829            dayOfYear: dayOfYear > 0 ?  dayOfYear : daysInYear(year - 1) + dayOfYear
1830        };
1831    }
1832
1833    /************************************
1834        Top Level Functions
1835    ************************************/
1836
1837    function makeMoment(config) {
1838        var input = config._i,
1839            format = config._f,
1840            res;
1841
1842        config._locale = config._locale || moment.localeData(config._l);
1843
1844        if (input === null || (format === undefined && input === '')) {
1845            return moment.invalid({nullInput: true});
1846        }
1847
1848        if (typeof input === 'string') {
1849            config._i = input = config._locale.preparse(input);
1850        }
1851
1852        if (moment.isMoment(input)) {
1853            return new Moment(input, true);
1854        } else if (format) {
1855            if (isArray(format)) {
1856                makeDateFromStringAndArray(config);
1857            } else {
1858                makeDateFromStringAndFormat(config);
1859            }
1860        } else {
1861            makeDateFromInput(config);
1862        }
1863
1864        res = new Moment(config);
1865        if (res._nextDay) {
1866            // Adding is smart enough around DST
1867            res.add(1, 'd');
1868            res._nextDay = undefined;
1869        }
1870
1871        return res;
1872    }
1873
1874    moment = function (input, format, locale, strict) {
1875        var c;
1876
1877        if (typeof(locale) === 'boolean') {
1878            strict = locale;
1879            locale = undefined;
1880        }
1881        // object construction must be done this way.
1882        // https://github.com/moment/moment/issues/1423
1883        c = {};
1884        c._isAMomentObject = true;
1885        c._i = input;
1886        c._f = format;
1887        c._l = locale;
1888        c._strict = strict;
1889        c._isUTC = false;
1890        c._pf = defaultParsingFlags();
1891
1892        return makeMoment(c);
1893    };
1894
1895    moment.suppressDeprecationWarnings = false;
1896
1897    moment.createFromInputFallback = deprecate(
1898        'moment construction falls back to js Date. This is ' +
1899        'discouraged and will be removed in upcoming major ' +
1900        'release. Please refer to ' +
1901        'https://github.com/moment/moment/issues/1407 for more info.',
1902        function (config) {
1903            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
1904        }
1905    );
1906
1907    // Pick a moment m from moments so that m[fn](other) is true for all
1908    // other. This relies on the function fn to be transitive.
1909    //
1910    // moments should either be an array of moment objects or an array, whose
1911    // first element is an array of moment objects.
1912    function pickBy(fn, moments) {
1913        var res, i;
1914        if (moments.length === 1 && isArray(moments[0])) {
1915            moments = moments[0];
1916        }
1917        if (!moments.length) {
1918            return moment();
1919        }
1920        res = moments[0];
1921        for (i = 1; i < moments.length; ++i) {
1922            if (moments[i][fn](res)) {
1923                res = moments[i];
1924            }
1925        }
1926        return res;
1927    }
1928
1929    moment.min = function () {
1930        var args = [].slice.call(arguments, 0);
1931
1932        return pickBy('isBefore', args);
1933    };
1934
1935    moment.max = function () {
1936        var args = [].slice.call(arguments, 0);
1937
1938        return pickBy('isAfter', args);
1939    };
1940
1941    // creating with utc
1942    moment.utc = function (input, format, locale, strict) {
1943        var c;
1944
1945        if (typeof(locale) === 'boolean') {
1946            strict = locale;
1947            locale = undefined;
1948        }
1949        // object construction must be done this way.
1950        // https://github.com/moment/moment/issues/1423
1951        c = {};
1952        c._isAMomentObject = true;
1953        c._useUTC = true;
1954        c._isUTC = true;
1955        c._l = locale;
1956        c._i = input;
1957        c._f = format;
1958        c._strict = strict;
1959        c._pf = defaultParsingFlags();
1960
1961        return makeMoment(c).utc();
1962    };
1963
1964    // creating with unix timestamp (in seconds)
1965    moment.unix = function (input) {
1966        return moment(input * 1000);
1967    };
1968
1969    // duration
1970    moment.duration = function (input, key) {
1971        var duration = input,
1972            // matching against regexp is expensive, do it on demand
1973            match = null,
1974            sign,
1975            ret,
1976            parseIso,
1977            diffRes;
1978
1979        if (moment.isDuration(input)) {
1980            duration = {
1981                ms: input._milliseconds,
1982                d: input._days,
1983                M: input._months
1984            };
1985        } else if (typeof input === 'number') {
1986            duration = {};
1987            if (key) {
1988                duration[key] = input;
1989            } else {
1990                duration.milliseconds = input;
1991            }
1992        } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) {
1993            sign = (match[1] === '-') ? -1 : 1;
1994            duration = {
1995                y: 0,
1996                d: toInt(match[DATE]) * sign,
1997                h: toInt(match[HOUR]) * sign,
1998                m: toInt(match[MINUTE]) * sign,
1999                s: toInt(match[SECOND]) * sign,
2000                ms: toInt(match[MILLISECOND]) * sign
2001            };
2002        } else if (!!(match = isoDurationRegex.exec(input))) {
2003            sign = (match[1] === '-') ? -1 : 1;
2004            parseIso = function (inp) {
2005                // We'd normally use ~~inp for this, but unfortunately it also
2006                // converts floats to ints.
2007                // inp may be undefined, so careful calling replace on it.
2008                var res = inp && parseFloat(inp.replace(',', '.'));
2009                // apply sign while we're at it
2010                return (isNaN(res) ? 0 : res) * sign;
2011            };
2012            duration = {
2013                y: parseIso(match[2]),
2014                M: parseIso(match[3]),
2015                d: parseIso(match[4]),
2016                h: parseIso(match[5]),
2017                m: parseIso(match[6]),
2018                s: parseIso(match[7]),
2019                w: parseIso(match[8])
2020            };
2021        } else if (duration == null) {// checks for null or undefined
2022            duration = {};
2023        } else if (typeof duration === 'object' &&
2024                ('from' in duration || 'to' in duration)) {
2025            diffRes = momentsDifference(moment(duration.from), moment(duration.to));
2026
2027            duration = {};
2028            duration.ms = diffRes.milliseconds;
2029            duration.M = diffRes.months;
2030        }
2031
2032        ret = new Duration(duration);
2033
2034        if (moment.isDuration(input) && hasOwnProp(input, '_locale')) {
2035            ret._locale = input._locale;
2036        }
2037
2038        return ret;
2039    };
2040
2041    // version number
2042    moment.version = VERSION;
2043
2044    // default format
2045    moment.defaultFormat = isoFormat;
2046
2047    // constant that refers to the ISO standard
2048    moment.ISO_8601 = function () {};
2049
2050    // Plugins that add properties should also add the key here (null value),
2051    // so we can properly clone ourselves.
2052    moment.momentProperties = momentProperties;
2053
2054    // This function will be called whenever a moment is mutated.
2055    // It is intended to keep the offset in sync with the timezone.
2056    moment.updateOffset = function () {};
2057
2058    // This function allows you to set a threshold for relative time strings
2059    moment.relativeTimeThreshold = function (threshold, limit) {
2060        if (relativeTimeThresholds[threshold] === undefined) {
2061            return false;
2062        }
2063        if (limit === undefined) {
2064            return relativeTimeThresholds[threshold];
2065        }
2066        relativeTimeThresholds[threshold] = limit;
2067        return true;
2068    };
2069
2070    moment.lang = deprecate(
2071        'moment.lang is deprecated. Use moment.locale instead.',
2072        function (key, value) {
2073            return moment.locale(key, value);
2074        }
2075    );
2076
2077    // This function will load locale and then set the global locale.  If
2078    // no arguments are passed in, it will simply return the current global
2079    // locale key.
2080    moment.locale = function (key, values) {
2081        var data;
2082        if (key) {
2083            if (typeof(values) !== 'undefined') {
2084                data = moment.defineLocale(key, values);
2085            }
2086            else {
2087                data = moment.localeData(key);
2088            }
2089
2090            if (data) {
2091                moment.duration._locale = moment._locale = data;
2092            }
2093        }
2094
2095        return moment._locale._abbr;
2096    };
2097
2098    moment.defineLocale = function (name, values) {
2099        if (values !== null) {
2100            values.abbr = name;
2101            if (!locales[name]) {
2102                locales[name] = new Locale();
2103            }
2104            locales[name].set(values);
2105
2106            // backwards compat for now: also set the locale
2107            moment.locale(name);
2108
2109            return locales[name];
2110        } else {
2111            // useful for testing
2112            delete locales[name];
2113            return null;
2114        }
2115    };
2116
2117    moment.langData = deprecate(
2118        'moment.langData is deprecated. Use moment.localeData instead.',
2119        function (key) {
2120            return moment.localeData(key);
2121        }
2122    );
2123
2124    // returns locale data
2125    moment.localeData = function (key) {
2126        var locale;
2127
2128        if (key && key._locale && key._locale._abbr) {
2129            key = key._locale._abbr;
2130        }
2131
2132        if (!key) {
2133            return moment._locale;
2134        }
2135
2136        if (!isArray(key)) {
2137            //short-circuit everything else
2138            locale = loadLocale(key);
2139            if (locale) {
2140                return locale;
2141            }
2142            key = [key];
2143        }
2144
2145        return chooseLocale(key);
2146    };
2147
2148    // compare moment object
2149    moment.isMoment = function (obj) {
2150        return obj instanceof Moment ||
2151            (obj != null && hasOwnProp(obj, '_isAMomentObject'));
2152    };
2153
2154    // for typechecking Duration objects
2155    moment.isDuration = function (obj) {
2156        return obj instanceof Duration;
2157    };
2158
2159    for (i = lists.length - 1; i >= 0; --i) {
2160        makeList(lists[i]);
2161    }
2162
2163    moment.normalizeUnits = function (units) {
2164        return normalizeUnits(units);
2165    };
2166
2167    moment.invalid = function (flags) {
2168        var m = moment.utc(NaN);
2169        if (flags != null) {
2170            extend(m._pf, flags);
2171        }
2172        else {
2173            m._pf.userInvalidated = true;
2174        }
2175
2176        return m;
2177    };
2178
2179    moment.parseZone = function () {
2180        return moment.apply(null, arguments).parseZone();
2181    };
2182
2183    moment.parseTwoDigitYear = function (input) {
2184        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
2185    };
2186
2187    moment.isDate = isDate;
2188
2189    /************************************
2190        Moment Prototype
2191    ************************************/
2192
2193
2194    extend(moment.fn = Moment.prototype, {
2195
2196        clone : function () {
2197            return moment(this);
2198        },
2199
2200        valueOf : function () {
2201            return +this._d - ((this._offset || 0) * 60000);
2202        },
2203
2204        unix : function () {
2205            return Math.floor(+this / 1000);
2206        },
2207
2208        toString : function () {
2209            return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
2210        },
2211
2212        toDate : function () {
2213            return this._offset ? new Date(+this) : this._d;
2214        },
2215
2216        toISOString : function () {
2217            var m = moment(this).utc();
2218            if (0 < m.year() && m.year() <= 9999) {
2219                if ('function' === typeof Date.prototype.toISOString) {
2220                    // native implementation is ~50x faster, use it when we can
2221                    return this.toDate().toISOString();
2222                } else {
2223                    return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
2224                }
2225            } else {
2226                return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
2227            }
2228        },
2229
2230        toArray : function () {
2231            var m = this;
2232            return [
2233                m.year(),
2234                m.month(),
2235                m.date(),
2236                m.hours(),
2237                m.minutes(),
2238                m.seconds(),
2239                m.milliseconds()
2240            ];
2241        },
2242
2243        isValid : function () {
2244            return isValid(this);
2245        },
2246
2247        isDSTShifted : function () {
2248            if (this._a) {
2249                return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0;
2250            }
2251
2252            return false;
2253        },
2254
2255        parsingFlags : function () {
2256            return extend({}, this._pf);
2257        },
2258
2259        invalidAt: function () {
2260            return this._pf.overflow;
2261        },
2262
2263        utc : function (keepLocalTime) {
2264            return this.utcOffset(0, keepLocalTime);
2265        },
2266
2267        local : function (keepLocalTime) {
2268            if (this._isUTC) {
2269                this.utcOffset(0, keepLocalTime);
2270                this._isUTC = false;
2271
2272                if (keepLocalTime) {
2273                    this.subtract(this._dateUtcOffset(), 'm');
2274                }
2275            }
2276            return this;
2277        },
2278
2279        format : function (inputString) {
2280            var output = formatMoment(this, inputString || moment.defaultFormat);
2281            return this.localeData().postformat(output);
2282        },
2283
2284        add : createAdder(1, 'add'),
2285
2286        subtract : createAdder(-1, 'subtract'),
2287
2288        diff : function (input, units, asFloat) {
2289            var that = makeAs(input, this),
2290                zoneDiff = (that.utcOffset() - this.utcOffset()) * 6e4,
2291                anchor, diff, output, daysAdjust;
2292
2293            units = normalizeUnits(units);
2294
2295            if (units === 'year' || units === 'month' || units === 'quarter') {
2296                output = monthDiff(this, that);
2297                if (units === 'quarter') {
2298                    output = output / 3;
2299                } else if (units === 'year') {
2300                    output = output / 12;
2301                }
2302            } else {
2303                diff = this - that;
2304                output = units === 'second' ? diff / 1e3 : // 1000
2305                    units === 'minute' ? diff / 6e4 : // 1000 * 60
2306                    units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60
2307                    units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
2308                    units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
2309                    diff;
2310            }
2311            return asFloat ? output : absRound(output);
2312        },
2313
2314        from : function (time, withoutSuffix) {
2315            return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
2316        },
2317
2318        fromNow : function (withoutSuffix) {
2319            return this.from(moment(), withoutSuffix);
2320        },
2321
2322        calendar : function (time) {
2323            // We want to compare the start of today, vs this.
2324            // Getting start-of-today depends on whether we're locat/utc/offset
2325            // or not.
2326            var now = time || moment(),
2327                sod = makeAs(now, this).startOf('day'),
2328                diff = this.diff(sod, 'days', true),
2329                format = diff < -6 ? 'sameElse' :
2330                    diff < -1 ? 'lastWeek' :
2331                    diff < 0 ? 'lastDay' :
2332                    diff < 1 ? 'sameDay' :
2333                    diff < 2 ? 'nextDay' :
2334                    diff < 7 ? 'nextWeek' : 'sameElse';
2335            return this.format(this.localeData().calendar(format, this, moment(now)));
2336        },
2337
2338        isLeapYear : function () {
2339            return isLeapYear(this.year());
2340        },
2341
2342        isDST : function () {
2343            return (this.utcOffset() > this.clone().month(0).utcOffset() ||
2344                this.utcOffset() > this.clone().month(5).utcOffset());
2345        },
2346
2347        day : function (input) {
2348            var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
2349            if (input != null) {
2350                input = parseWeekday(input, this.localeData());
2351                return this.add(input - day, 'd');
2352            } else {
2353                return day;
2354            }
2355        },
2356
2357        month : makeAccessor('Month', true),
2358
2359        startOf : function (units) {
2360            units = normalizeUnits(units);
2361            // the following switch intentionally omits break keywords
2362            // to utilize falling through the cases.
2363            switch (units) {
2364            case 'year':
2365                this.month(0);
2366                /* falls through */
2367            case 'quarter':
2368            case 'month':
2369                this.date(1);
2370                /* falls through */
2371            case 'week':
2372            case 'isoWeek':
2373            case 'day':
2374                this.hours(0);
2375                /* falls through */
2376            case 'hour':
2377                this.minutes(0);
2378                /* falls through */
2379            case 'minute':
2380                this.seconds(0);
2381                /* falls through */
2382            case 'second':
2383                this.milliseconds(0);
2384                /* falls through */
2385            }
2386
2387            // weeks are a special case
2388            if (units === 'week') {
2389                this.weekday(0);
2390            } else if (units === 'isoWeek') {
2391                this.isoWeekday(1);
2392            }
2393
2394            // quarters are also special
2395            if (units === 'quarter') {
2396                this.month(Math.floor(this.month() / 3) * 3);
2397            }
2398
2399            return this;
2400        },
2401
2402        endOf: function (units) {
2403            units = normalizeUnits(units);
2404            if (units === undefined || units === 'millisecond') {
2405                return this;
2406            }
2407            return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
2408        },
2409
2410        isAfter: function (input, units) {
2411            var inputMs;
2412            units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
2413            if (units === 'millisecond') {
2414                input = moment.isMoment(input) ? input : moment(input);
2415                return +this > +input;
2416            } else {
2417                inputMs = moment.isMoment(input) ? +input : +moment(input);
2418                return inputMs < +this.clone().startOf(units);
2419            }
2420        },
2421
2422        isBefore: function (input, units) {
2423            var inputMs;
2424            units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
2425            if (units === 'millisecond') {
2426                input = moment.isMoment(input) ? input : moment(input);
2427                return +this < +input;
2428            } else {
2429                inputMs = moment.isMoment(input) ? +input : +moment(input);
2430                return +this.clone().endOf(units) < inputMs;
2431            }
2432        },
2433
2434        isBetween: function (from, to, units) {
2435            return this.isAfter(from, units) && this.isBefore(to, units);
2436        },
2437
2438        isSame: function (input, units) {
2439            var inputMs;
2440            units = normalizeUnits(units || 'millisecond');
2441            if (units === 'millisecond') {
2442                input = moment.isMoment(input) ? input : moment(input);
2443                return +this === +input;
2444            } else {
2445                inputMs = +moment(input);
2446                return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units));
2447            }
2448        },
2449
2450        min: deprecate(
2451                 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548',
2452                 function (other) {
2453                     other = moment.apply(null, arguments);
2454                     return other < this ? this : other;
2455                 }
2456         ),
2457
2458        max: deprecate(
2459                'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',
2460                function (other) {
2461                    other = moment.apply(null, arguments);
2462                    return other > this ? this : other;
2463                }
2464        ),
2465
2466        zone : deprecate(
2467                'moment().zone is deprecated, use moment().utcOffset instead. ' +
2468                'https://github.com/moment/moment/issues/1779',
2469                function (input, keepLocalTime) {
2470                    if (input != null) {
2471                        if (typeof input !== 'string') {
2472                            input = -input;
2473                        }
2474
2475                        this.utcOffset(input, keepLocalTime);
2476
2477                        return this;
2478                    } else {
2479                        return -this.utcOffset();
2480                    }
2481                }
2482        ),
2483
2484        // keepLocalTime = true means only change the timezone, without
2485        // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
2486        // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
2487        // +0200, so we adjust the time as needed, to be valid.
2488        //
2489        // Keeping the time actually adds/subtracts (one hour)
2490        // from the actual represented time. That is why we call updateOffset
2491        // a second time. In case it wants us to change the offset again
2492        // _changeInProgress == true case, then we have to adjust, because
2493        // there is no such time in the given timezone.
2494        utcOffset : function (input, keepLocalTime) {
2495            var offset = this._offset || 0,
2496                localAdjust;
2497            if (input != null) {
2498                if (typeof input === 'string') {
2499                    input = utcOffsetFromString(input);
2500                }
2501                if (Math.abs(input) < 16) {
2502                    input = input * 60;
2503                }
2504                if (!this._isUTC && keepLocalTime) {
2505                    localAdjust = this._dateUtcOffset();
2506                }
2507                this._offset = input;
2508                this._isUTC = true;
2509                if (localAdjust != null) {
2510                    this.add(localAdjust, 'm');
2511                }
2512                if (offset !== input) {
2513                    if (!keepLocalTime || this._changeInProgress) {
2514                        addOrSubtractDurationFromMoment(this,
2515                                moment.duration(input - offset, 'm'), 1, false);
2516                    } else if (!this._changeInProgress) {
2517                        this._changeInProgress = true;
2518                        moment.updateOffset(this, true);
2519                        this._changeInProgress = null;
2520                    }
2521                }
2522
2523                return this;
2524            } else {
2525                return this._isUTC ? offset : this._dateUtcOffset();
2526            }
2527        },
2528
2529        isLocal : function () {
2530            return !this._isUTC;
2531        },
2532
2533        isUtcOffset : function () {
2534            return this._isUTC;
2535        },
2536
2537        isUtc : function () {
2538            return this._isUTC && this._offset === 0;
2539        },
2540
2541        zoneAbbr : function () {
2542            return this._isUTC ? 'UTC' : '';
2543        },
2544
2545        zoneName : function () {
2546            return this._isUTC ? 'Coordinated Universal Time' : '';
2547        },
2548
2549        parseZone : function () {
2550            if (this._tzm) {
2551                this.utcOffset(this._tzm);
2552            } else if (typeof this._i === 'string') {
2553                this.utcOffset(utcOffsetFromString(this._i));
2554            }
2555            return this;
2556        },
2557
2558        hasAlignedHourOffset : function (input) {
2559            if (!input) {
2560                input = 0;
2561            }
2562            else {
2563                input = moment(input).utcOffset();
2564            }
2565
2566            return (this.utcOffset() - input) % 60 === 0;
2567        },
2568
2569        daysInMonth : function () {
2570            return daysInMonth(this.year(), this.month());
2571        },
2572
2573        dayOfYear : function (input) {
2574            var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1;
2575            return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
2576        },
2577
2578        quarter : function (input) {
2579            return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
2580        },
2581
2582        weekYear : function (input) {
2583            var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year;
2584            return input == null ? year : this.add((input - year), 'y');
2585        },
2586
2587        isoWeekYear : function (input) {
2588            var year = weekOfYear(this, 1, 4).year;
2589            return input == null ? year : this.add((input - year), 'y');
2590        },
2591
2592        week : function (input) {
2593            var week = this.localeData().week(this);
2594            return input == null ? week : this.add((input - week) * 7, 'd');
2595        },
2596
2597        isoWeek : function (input) {
2598            var week = weekOfYear(this, 1, 4).week;
2599            return input == null ? week : this.add((input - week) * 7, 'd');
2600        },
2601
2602        weekday : function (input) {
2603            var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
2604            return input == null ? weekday : this.add(input - weekday, 'd');
2605        },
2606
2607        isoWeekday : function (input) {
2608            // behaves the same as moment#day except
2609            // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
2610            // as a setter, sunday should belong to the previous week.
2611            return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);
2612        },
2613
2614        isoWeeksInYear : function () {
2615            return weeksInYear(this.year(), 1, 4);
2616        },
2617
2618        weeksInYear : function () {
2619            var weekInfo = this.localeData()._week;
2620            return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
2621        },
2622
2623        get : function (units) {
2624            units = normalizeUnits(units);
2625            return this[units]();
2626        },
2627
2628        set : function (units, value) {
2629            var unit;
2630            if (typeof units === 'object') {
2631                for (unit in units) {
2632                    this.set(unit, units[unit]);
2633                }
2634            }
2635            else {
2636                units = normalizeUnits(units);
2637                if (typeof this[units] === 'function') {
2638                    this[units](value);
2639                }
2640            }
2641            return this;
2642        },
2643
2644        // If passed a locale key, it will set the locale for this
2645        // instance.  Otherwise, it will return the locale configuration
2646        // variables for this instance.
2647        locale : function (key) {
2648            var newLocaleData;
2649
2650            if (key === undefined) {
2651                return this._locale._abbr;
2652            } else {
2653                newLocaleData = moment.localeData(key);
2654                if (newLocaleData != null) {
2655                    this._locale = newLocaleData;
2656                }
2657                return this;
2658            }
2659        },
2660
2661        lang : deprecate(
2662            'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
2663            function (key) {
2664                if (key === undefined) {
2665                    return this.localeData();
2666                } else {
2667                    return this.locale(key);
2668                }
2669            }
2670        ),
2671
2672        localeData : function () {
2673            return this._locale;
2674        },
2675
2676        _dateUtcOffset : function () {
2677            // On Firefox.24 Date#getTimezoneOffset returns a floating point.
2678            // https://github.com/moment/moment/pull/1871
2679            return -Math.round(this._d.getTimezoneOffset() / 15) * 15;
2680        }
2681
2682    });
2683
2684    function rawMonthSetter(mom, value) {
2685        var dayOfMonth;
2686
2687        // TODO: Move this out of here!
2688        if (typeof value === 'string') {
2689            value = mom.localeData().monthsParse(value);
2690            // TODO: Another silent failure?
2691            if (typeof value !== 'number') {
2692                return mom;
2693            }
2694        }
2695
2696        dayOfMonth = Math.min(mom.date(),
2697                daysInMonth(mom.year(), value));
2698        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
2699        return mom;
2700    }
2701
2702    function rawGetter(mom, unit) {
2703        return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]();
2704    }
2705
2706    function rawSetter(mom, unit, value) {
2707        if (unit === 'Month') {
2708            return rawMonthSetter(mom, value);
2709        } else {
2710            return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
2711        }
2712    }
2713
2714    function makeAccessor(unit, keepTime) {
2715        return function (value) {
2716            if (value != null) {
2717                rawSetter(this, unit, value);
2718                moment.updateOffset(this, keepTime);
2719                return this;
2720            } else {
2721                return rawGetter(this, unit);
2722            }
2723        };
2724    }
2725
2726    moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false);
2727    moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false);
2728    moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false);
2729    // Setting the hour should keep the time, because the user explicitly
2730    // specified which hour he wants. So trying to maintain the same hour (in
2731    // a new timezone) makes sense. Adding/subtracting hours does not follow
2732    // this rule.
2733    moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true);
2734    // moment.fn.month is defined separately
2735    moment.fn.date = makeAccessor('Date', true);
2736    moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true));
2737    moment.fn.year = makeAccessor('FullYear', true);
2738    moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true));
2739
2740    // add plural methods
2741    moment.fn.days = moment.fn.day;
2742    moment.fn.months = moment.fn.month;
2743    moment.fn.weeks = moment.fn.week;
2744    moment.fn.isoWeeks = moment.fn.isoWeek;
2745    moment.fn.quarters = moment.fn.quarter;
2746
2747    // add aliased format methods
2748    moment.fn.toJSON = moment.fn.toISOString;
2749
2750    // alias isUtc for dev-friendliness
2751    moment.fn.isUTC = moment.fn.isUtc;
2752
2753    /************************************
2754        Duration Prototype
2755    ************************************/
2756
2757
2758    function daysToYears (days) {
2759        // 400 years have 146097 days (taking into account leap year rules)
2760        return days * 400 / 146097;
2761    }
2762
2763    function yearsToDays (years) {
2764        // years * 365 + absRound(years / 4) -
2765        //     absRound(years / 100) + absRound(years / 400);
2766        return years * 146097 / 400;
2767    }
2768
2769    extend(moment.duration.fn = Duration.prototype, {
2770
2771        _bubble : function () {
2772            var milliseconds = this._milliseconds,
2773                days = this._days,
2774                months = this._months,
2775                data = this._data,
2776                seconds, minutes, hours, years = 0;
2777
2778            // The following code bubbles up values, see the tests for
2779            // examples of what that means.
2780            data.milliseconds = milliseconds % 1000;
2781
2782            seconds = absRound(milliseconds / 1000);
2783            data.seconds = seconds % 60;
2784
2785            minutes = absRound(seconds / 60);
2786            data.minutes = minutes % 60;
2787
2788            hours = absRound(minutes / 60);
2789            data.hours = hours % 24;
2790
2791            days += absRound(hours / 24);
2792
2793            // Accurately convert days to years, assume start from year 0.
2794            years = absRound(daysToYears(days));
2795            days -= absRound(yearsToDays(years));
2796
2797            // 30 days to a month
2798            // TODO (iskren): Use anchor date (like 1st Jan) to compute this.
2799            months += absRound(days / 30);
2800            days %= 30;
2801
2802            // 12 months -> 1 year
2803            years += absRound(months / 12);
2804            months %= 12;
2805
2806            data.days = days;
2807            data.months = months;
2808            data.years = years;
2809        },
2810
2811        abs : function () {
2812            this._milliseconds = Math.abs(this._milliseconds);
2813            this._days = Math.abs(this._days);
2814            this._months = Math.abs(this._months);
2815
2816            this._data.milliseconds = Math.abs(this._data.milliseconds);
2817            this._data.seconds = Math.abs(this._data.seconds);
2818            this._data.minutes = Math.abs(this._data.minutes);
2819            this._data.hours = Math.abs(this._data.hours);
2820            this._data.months = Math.abs(this._data.months);
2821            this._data.years = Math.abs(this._data.years);
2822
2823            return this;
2824        },
2825
2826        weeks : function () {
2827            return absRound(this.days() / 7);
2828        },
2829
2830        valueOf : function () {
2831            return this._milliseconds +
2832              this._days * 864e5 +
2833              (this._months % 12) * 2592e6 +
2834              toInt(this._months / 12) * 31536e6;
2835        },
2836
2837        humanize : function (withSuffix) {
2838            var output = relativeTime(this, !withSuffix, this.localeData());
2839
2840            if (withSuffix) {
2841                output = this.localeData().pastFuture(+this, output);
2842            }
2843
2844            return this.localeData().postformat(output);
2845        },
2846
2847        add : function (input, val) {
2848            // supports only 2.0-style add(1, 's') or add(moment)
2849            var dur = moment.duration(input, val);
2850
2851            this._milliseconds += dur._milliseconds;
2852            this._days += dur._days;
2853            this._months += dur._months;
2854
2855            this._bubble();
2856
2857            return this;
2858        },
2859
2860        subtract : function (input, val) {
2861            var dur = moment.duration(input, val);
2862
2863            this._milliseconds -= dur._milliseconds;
2864            this._days -= dur._days;
2865            this._months -= dur._months;
2866
2867            this._bubble();
2868
2869            return this;
2870        },
2871
2872        get : function (units) {
2873            units = normalizeUnits(units);
2874            return this[units.toLowerCase() + 's']();
2875        },
2876
2877        as : function (units) {
2878            var days, months;
2879            units = normalizeUnits(units);
2880
2881            if (units === 'month' || units === 'year') {
2882                days = this._days + this._milliseconds / 864e5;
2883                months = this._months + daysToYears(days) * 12;
2884                return units === 'month' ? months : months / 12;
2885            } else {
2886                // handle milliseconds separately because of floating point math errors (issue #1867)
2887                days = this._days + Math.round(yearsToDays(this._months / 12));
2888                switch (units) {
2889                    case 'week': return days / 7 + this._milliseconds / 6048e5;
2890                    case 'day': return days + this._milliseconds / 864e5;
2891                    case 'hour': return days * 24 + this._milliseconds / 36e5;
2892                    case 'minute': return days * 24 * 60 + this._milliseconds / 6e4;
2893                    case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000;
2894                    // Math.floor prevents floating point math errors here
2895                    case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds;
2896                    default: throw new Error('Unknown unit ' + units);
2897                }
2898            }
2899        },
2900
2901        lang : moment.fn.lang,
2902        locale : moment.fn.locale,
2903
2904        toIsoString : deprecate(
2905            'toIsoString() is deprecated. Please use toISOString() instead ' +
2906            '(notice the capitals)',
2907            function () {
2908                return this.toISOString();
2909            }
2910        ),
2911
2912        toISOString : function () {
2913            // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
2914            var years = Math.abs(this.years()),
2915                months = Math.abs(this.months()),
2916                days = Math.abs(this.days()),
2917                hours = Math.abs(this.hours()),
2918                minutes = Math.abs(this.minutes()),
2919                seconds = Math.abs(this.seconds() + this.milliseconds() / 1000);
2920
2921            if (!this.asSeconds()) {
2922                // this is the same as C#'s (Noda) and python (isodate)...
2923                // but not other JS (goog.date)
2924                return 'P0D';
2925            }
2926
2927            return (this.asSeconds() < 0 ? '-' : '') +
2928                'P' +
2929                (years ? years + 'Y' : '') +
2930                (months ? months + 'M' : '') +
2931                (days ? days + 'D' : '') +
2932                ((hours || minutes || seconds) ? 'T' : '') +
2933                (hours ? hours + 'H' : '') +
2934                (minutes ? minutes + 'M' : '') +
2935                (seconds ? seconds + 'S' : '');
2936        },
2937
2938        localeData : function () {
2939            return this._locale;
2940        },
2941
2942        toJSON : function () {
2943            return this.toISOString();
2944        }
2945    });
2946
2947    moment.duration.fn.toString = moment.duration.fn.toISOString;
2948
2949    function makeDurationGetter(name) {
2950        moment.duration.fn[name] = function () {
2951            return this._data[name];
2952        };
2953    }
2954
2955    for (i in unitMillisecondFactors) {
2956        if (hasOwnProp(unitMillisecondFactors, i)) {
2957            makeDurationGetter(i.toLowerCase());
2958        }
2959    }
2960
2961    moment.duration.fn.asMilliseconds = function () {
2962        return this.as('ms');
2963    };
2964    moment.duration.fn.asSeconds = function () {
2965        return this.as('s');
2966    };
2967    moment.duration.fn.asMinutes = function () {
2968        return this.as('m');
2969    };
2970    moment.duration.fn.asHours = function () {
2971        return this.as('h');
2972    };
2973    moment.duration.fn.asDays = function () {
2974        return this.as('d');
2975    };
2976    moment.duration.fn.asWeeks = function () {
2977        return this.as('weeks');
2978    };
2979    moment.duration.fn.asMonths = function () {
2980        return this.as('M');
2981    };
2982    moment.duration.fn.asYears = function () {
2983        return this.as('y');
2984    };
2985
2986    /************************************
2987        Default Locale
2988    ************************************/
2989
2990
2991    // Set default locale, other locale will inherit from English.
2992    moment.locale('en', {
2993        ordinalParse: /\d{1,2}(th|st|nd|rd)/,
2994        ordinal : function (number) {
2995            var b = number % 10,
2996                output = (toInt(number % 100 / 10) === 1) ? 'th' :
2997                (b === 1) ? 'st' :
2998                (b === 2) ? 'nd' :
2999                (b === 3) ? 'rd' : 'th';
3000            return number + output;
3001        }
3002    });
3003
3004    // moment.js locale configuration
3005// locale : afrikaans (af)
3006// author : Werner Mollentze : https://github.com/wernerm
3007
3008(function (factory) {
3009    factory(moment);
3010}(function (moment) {
3011    return moment.defineLocale('af', {
3012        months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),
3013        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
3014        weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),
3015        weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
3016        weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
3017        meridiemParse: /vm|nm/i,
3018        isPM : function (input) {
3019            return /^nm$/i.test(input);
3020        },
3021        meridiem : function (hours, minutes, isLower) {
3022            if (hours < 12) {
3023                return isLower ? 'vm' : 'VM';
3024            } else {
3025                return isLower ? 'nm' : 'NM';
3026            }
3027        },
3028        longDateFormat : {
3029            LT : 'HH:mm',
3030            LTS : 'LT:ss',
3031            L : 'DD/MM/YYYY',
3032            LL : 'D MMMM YYYY',
3033            LLL : 'D MMMM YYYY LT',
3034            LLLL : 'dddd, D MMMM YYYY LT'
3035        },
3036        calendar : {
3037            sameDay : '[Vandag om] LT',
3038            nextDay : '[Môre om] LT',
3039            nextWeek : 'dddd [om] LT',
3040            lastDay : '[Gister om] LT',
3041            lastWeek : '[Laas] dddd [om] LT',
3042            sameElse : 'L'
3043        },
3044        relativeTime : {
3045            future : 'oor %s',
3046            past : '%s gelede',
3047            s : '\'n paar sekondes',
3048            m : '\'n minuut',
3049            mm : '%d minute',
3050            h : '\'n uur',
3051            hh : '%d ure',
3052            d : '\'n dag',
3053            dd : '%d dae',
3054            M : '\'n maand',
3055            MM : '%d maande',
3056            y : '\'n jaar',
3057            yy : '%d jaar'
3058        },
3059        ordinalParse: /\d{1,2}(ste|de)/,
3060        ordinal : function (number) {
3061            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter
3062        },
3063        week : {
3064            dow : 1, // Maandag is die eerste dag van die week.
3065            doy : 4  // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
3066        }
3067    });
3068}));
3069// moment.js locale configuration
3070// locale : Moroccan Arabic (ar-ma)
3071// author : ElFadili Yassine : https://github.com/ElFadiliY
3072// author : Abdel Said : https://github.com/abdelsaid
3073
3074(function (factory) {
3075    factory(moment);
3076}(function (moment) {
3077    return moment.defineLocale('ar-ma', {
3078        months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
3079        monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
3080        weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
3081        weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
3082        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
3083        longDateFormat : {
3084            LT : 'HH:mm',
3085            LTS : 'LT:ss',
3086            L : 'DD/MM/YYYY',
3087            LL : 'D MMMM YYYY',
3088            LLL : 'D MMMM YYYY LT',
3089            LLLL : 'dddd D MMMM YYYY LT'
3090        },
3091        calendar : {
3092            sameDay: '[اليوم على الساعة] LT',
3093            nextDay: '[غدا على الساعة] LT',
3094            nextWeek: 'dddd [على الساعة] LT',
3095            lastDay: '[أمس على الساعة] LT',
3096            lastWeek: 'dddd [على الساعة] LT',
3097            sameElse: 'L'
3098        },
3099        relativeTime : {
3100            future : 'في %s',
3101            past : 'منذ %s',
3102            s : 'ثوان',
3103            m : 'دقيقة',
3104            mm : '%d دقائق',
3105            h : 'ساعة',
3106            hh : '%d ساعات',
3107            d : 'يوم',
3108            dd : '%d أيام',
3109            M : 'شهر',
3110            MM : '%d أشهر',
3111            y : 'سنة',
3112            yy : '%d سنوات'
3113        },
3114        week : {
3115            dow : 6, // Saturday is the first day of the week.
3116            doy : 12  // The week that contains Jan 1st is the first week of the year.
3117        }
3118    });
3119}));
3120// moment.js locale configuration
3121// locale : Arabic Saudi Arabia (ar-sa)
3122// author : Suhail Alkowaileet : https://github.com/xsoh
3123
3124(function (factory) {
3125    factory(moment);
3126}(function (moment) {
3127    var symbolMap = {
3128        '1': 'Ù¡',
3129        '2': 'Ù¢',
3130        '3': 'Ù£',
3131        '4': 'Ù¤',
3132        '5': 'Ù¥',
3133        '6': 'Ù¦',
3134        '7': 'Ù§',
3135        '8': 'Ù¨',
3136        '9': 'Ù©',
3137        '0': 'Ù '
3138    }, numberMap = {
3139        'Ù¡': '1',
3140        'Ù¢': '2',
3141        'Ù£': '3',
3142        'Ù¤': '4',
3143        'Ù¥': '5',
3144        'Ù¦': '6',
3145        'Ù§': '7',
3146        'Ù¨': '8',
3147        'Ù©': '9',
3148        'Ù ': '0'
3149    };
3150
3151    return moment.defineLocale('ar-sa', {
3152        months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
3153        monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
3154        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.
vendor: 56,149 bytes, lines 3154-4423
3154split('_'),
3155        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
3156        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
3157        longDateFormat : {
3158            LT : 'HH:mm',
3159            LTS : 'HH:mm:ss',
3160            L : 'DD/MM/YYYY',
3161            LL : 'D MMMM YYYY',
3162            LLL : 'D MMMM YYYY LT',
3163            LLLL : 'dddd D MMMM YYYY LT'
3164        },
3165        meridiemParse: /ص|م/,
3166        isPM : function (input) {
3167            return 'Ù…' === input;
3168        },
3169        meridiem : function (hour, minute, isLower) {
3170            if (hour < 12) {
3171                return 'ص';
3172            } else {
3173                return 'Ù…';
3174            }
3175        },
3176        calendar : {
3177            sameDay: '[اليوم على الساعة] LT',
3178            nextDay: '[غدا على الساعة] LT',
3179            nextWeek: 'dddd [على الساعة] LT',
3180            lastDay: '[أمس على الساعة] LT',
3181            lastWeek: 'dddd [على الساعة] LT',
3182            sameElse: 'L'
3183        },
3184        relativeTime : {
3185            future : 'في %s',
3186            past : 'منذ %s',
3187            s : 'ثوان',
3188            m : 'دقيقة',
3189            mm : '%d دقائق',
3190            h : 'ساعة',
3191            hh : '%d ساعات',
3192            d : 'يوم',
3193            dd : '%d أيام',
3194            M : 'شهر',
3195            MM : '%d أشهر',
3196            y : 'سنة',
3197            yy : '%d سنوات'
3198        },
3199        preparse: function (string) {
3200            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
3201                return numberMap[match];
3202            }).replace(/،/g, ',');
3203        },
3204        postformat: function (string) {
3205            return string.replace(/\d/g, function (match) {
3206                return symbolMap[match];
3207            }).replace(/,/g, '،');
3208        },
3209        week : {
3210            dow : 6, // Saturday is the first day of the week.
3211            doy : 12  // The week that contains Jan 1st is the first week of the year.
3212        }
3213    });
3214}));
3215// moment.js locale configuration
3216// locale  : Tunisian Arabic (ar-tn)
3217
3218(function (factory) {
3219    factory(moment);
3220}(function (moment) {
3221    return moment.defineLocale('ar-tn', {
3222        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
3223        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
3224        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
3225        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
3226        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
3227        longDateFormat: {
3228            LT: 'HH:mm',
3229            LTS: 'LT:ss',
3230            L: 'DD/MM/YYYY',
3231            LL: 'D MMMM YYYY',
3232            LLL: 'D MMMM YYYY LT',
3233            LLLL: 'dddd D MMMM YYYY LT'
3234        },
3235        calendar: {
3236            sameDay: '[اليوم على الساعة] LT',
3237            nextDay: '[غدا على الساعة] LT',
3238            nextWeek: 'dddd [على الساعة] LT',
3239            lastDay: '[أمس على الساعة] LT',
3240            lastWeek: 'dddd [على الساعة] LT',
3241            sameElse: 'L'
3242        },
3243        relativeTime: {
3244            future: 'في %s',
3245            past: 'منذ %s',
3246            s: 'ثوان',
3247            m: 'دقيقة',
3248            mm: '%d دقائق',
3249            h: 'ساعة',
3250            hh: '%d ساعات',
3251            d: 'يوم',
3252            dd: '%d أيام',
3253            M: 'شهر',
3254            MM: '%d أشهر',
3255            y: 'سنة',
3256            yy: '%d سنوات'
3257        },
3258        week: {
3259            dow: 1, // Monday is the first day of the week.
3260            doy: 4 // The week that contains Jan 4th is the first week of the year.
3261        }
3262    });
3263}));
3264// moment.js locale configuration
3265// Locale: Arabic (ar)
3266// Author: Abdel Said: https://github.com/abdelsaid
3267// Changes in months, weekdays: Ahmed Elkhatib
3268// Native plural forms: forabi https://github.com/forabi
3269
3270(function (factory) {
3271    factory(moment);
3272}(function (moment) {
3273    var symbolMap = {
3274        '1': 'Ù¡',
3275        '2': 'Ù¢',
3276        '3': 'Ù£',
3277        '4': 'Ù¤',
3278        '5': 'Ù¥',
3279        '6': 'Ù¦',
3280        '7': 'Ù§',
3281        '8': 'Ù¨',
3282        '9': 'Ù©',
3283        '0': 'Ù '
3284    }, numberMap = {
3285        'Ù¡': '1',
3286        'Ù¢': '2',
3287        'Ù£': '3',
3288        'Ù¤': '4',
3289        'Ù¥': '5',
3290        'Ù¦': '6',
3291        'Ù§': '7',
3292        'Ù¨': '8',
3293        'Ù©': '9',
3294        'Ù ': '0'
3295    }, pluralForm = function (n) {
3296        return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
3297    }, plurals = {
3298        s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
3299        m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
3300        h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
3301        d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
3302        M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
3303        y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
3304    }, pluralize = function (u) {
3305        return function (number, withoutSuffix, string, isFuture) {
3306            var f = pluralForm(number),
3307                str = plurals[u][pluralForm(number)];
3308            if (f === 2) {
3309                str = str[withoutSuffix ? 0 : 1];
3310            }
3311            return str.replace(/%d/i, number);
3312        };
3313    }, months = [
3314        'كانون الثاني يناير',
3315        'شباط فبراير',
3316        'آذار مارس',
3317        'نيسان أبريل',
3318        'أيار مايو',
3319        'حزيران يونيو',
3320        'تموز يوليو',
3321        'آب أغسطس',
3322        'أيلول سبتمبر',
3323        'تشرين الأول أكتوبر',
3324        'تشرين الثاني نوفمبر',
3325        'كانون الأول ديسمبر'
3326    ];
3327
3328    return moment.defineLocale('ar', {
3329        months : months,
3330        monthsShort : months,
3331        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
3332        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
3333        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
3334        longDateFormat : {
3335            LT : 'HH:mm',
3336            LTS : 'HH:mm:ss',
3337            L : 'DD/MM/YYYY',
3338            LL : 'D MMMM YYYY',
3339            LLL : 'D MMMM YYYY LT',
3340            LLLL : 'dddd D MMMM YYYY LT'
3341        },
3342        meridiemParse: /ص|م/,
3343        isPM : function (input) {
3344            return 'Ù…' === input;
3345        },
3346        meridiem : function (hour, minute, isLower) {
3347            if (hour < 12) {
3348                return 'ص';
3349            } else {
3350                return 'Ù…';
3351            }
3352        },
3353        calendar : {
3354            sameDay: '[اليوم عند الساعة] LT',
3355            nextDay: '[غدًا عند الساعة] LT',
3356            nextWeek: 'dddd [عند الساعة] LT',
3357            lastDay: '[أمس عند الساعة] LT',
3358            lastWeek: 'dddd [عند الساعة] LT',
3359            sameElse: 'L'
3360        },
3361        relativeTime : {
3362            future : 'بعد %s',
3363            past : 'منذ %s',
3364            s : pluralize('s'),
3365            m : pluralize('m'),
3366            mm : pluralize('m'),
3367            h : pluralize('h'),
3368            hh : pluralize('h'),
3369            d : pluralize('d'),
3370            dd : pluralize('d'),
3371            M : pluralize('M'),
3372            MM : pluralize('M'),
3373            y : pluralize('y'),
3374            yy : pluralize('y')
3375        },
3376        preparse: function (string) {
3377            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
3378                return numberMap[match];
3379            }).replace(/،/g, ',');
3380        },
3381        postformat: function (string) {
3382            return string.replace(/\d/g, function (match) {
3383                return symbolMap[match];
3384            }).replace(/,/g, '،');
3385        },
3386        week : {
3387            dow : 6, // Saturday is the first day of the week.
3388            doy : 12  // The week that contains Jan 1st is the first week of the year.
3389        }
3390    });
3391}));
3392// moment.js locale configuration
3393// locale : azerbaijani (az)
3394// author : topchiyev : https://github.com/topchiyev
3395
3396(function (factory) {
3397    factory(moment);
3398}(function (moment) {
3399    var suffixes = {
3400        1: '-inci',
3401        5: '-inci',
3402        8: '-inci',
3403        70: '-inci',
3404        80: '-inci',
3405
3406        2: '-nci',
3407        7: '-nci',
3408        20: '-nci',
3409        50: '-nci',
3410
3411        3: '-üncü',
3412        4: '-üncü',
3413        100: '-üncü',
3414
3415        6: '-ncı',
3416
3417        9: '-uncu',
3418        10: '-uncu',
3419        30: '-uncu',
3420
3421        60: '-ıncı',
3422        90: '-ıncı'
3423    };
3424    return moment.defineLocale('az', {
3425        months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),
3426        monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
3427        weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),
3428        weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
3429        weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
3430        longDateFormat : {
3431            LT : 'HH:mm',
3432            LTS : 'LT:ss',
3433            L : 'DD.MM.YYYY',
3434            LL : 'D MMMM YYYY',
3435            LLL : 'D MMMM YYYY LT',
3436            LLLL : 'dddd, D MMMM YYYY LT'
3437        },
3438        calendar : {
3439            sameDay : '[bugün saat] LT',
3440            nextDay : '[sabah saat] LT',
3441            nextWeek : '[gələn həftə] dddd [saat] LT',
3442            lastDay : '[dünən] LT',
3443            lastWeek : '[keçən həftə] dddd [saat] LT',
3444            sameElse : 'L'
3445        },
3446        relativeTime : {
3447            future : '%s sonra',
3448            past : '%s əvvəl',
3449            s : 'birneçə saniyyə',
3450            m : 'bir dəqiqə',
3451            mm : '%d dəqiqə',
3452            h : 'bir saat',
3453            hh : '%d saat',
3454            d : 'bir gün',
3455            dd : '%d gün',
3456            M : 'bir ay',
3457            MM : '%d ay',
3458            y : 'bir il',
3459            yy : '%d il'
3460        },
3461        meridiemParse: /gecə|səhər|gündüz|axşam/,
3462        isPM : function (input) {
3463            return /^(gündüz|axşam)$/.test(input);
3464        },
3465        meridiem : function (hour, minute, isLower) {
3466            if (hour < 4) {
3467                return 'gecÉ™';
3468            } else if (hour < 12) {
3469                return 'səhər';
3470            } else if (hour < 17) {
3471                return 'gündüz';
3472            } else {
3473                return 'axÅŸam';
3474            }
3475        },
3476        ordinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
3477        ordinal : function (number) {
3478            if (number === 0) {  // special case for zero
3479                return number + '-ıncı';
3480            }
3481            var a = number % 10,
3482                b = number % 100 - a,
3483                c = number >= 100 ? 100 : null;
3484
3485            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
3486        },
3487        week : {
3488            dow : 1, // Monday is the first day of the week.
3489            doy : 7  // The week that contains Jan 1st is the first week of the year.
3490        }
3491    });
3492}));
3493// moment.js locale configuration
3494// locale : belarusian (be)
3495// author : Dmitry Demidov : https://github.com/demidov91
3496// author: Praleska: http://praleska.pro/
3497// Author : Menelion Elensúle : https://github.com/Oire
3498
3499(function (factory) {
3500    factory(moment);
3501}(function (moment) {
3502    function plural(word, num) {
3503        var forms = word.split('_');
3504        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
3505    }
3506
3507    function relativeTimeWithPlural(number, withoutSuffix, key) {
3508        var format = {
3509            'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
3510            'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
3511            'dd': 'дзень_дні_дзён',
3512            'MM': 'месяц_месяцы_месяцаў',
3513            'yy': 'год_гады_гадоў'
3514        };
3515        if (key === 'm') {
3516            return withoutSuffix ? 'хвіліна' : 'хвіліну';
3517        }
3518        else if (key === 'h') {
3519            return withoutSuffix ? 'гадзіна' : 'гадзіну';
3520        }
3521        else {
3522            return number + ' ' + plural(format[key], +number);
3523        }
3524    }
3525
3526    function monthsCaseReplace(m, format) {
3527        var months = {
3528            'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'),
3529            'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_')
3530        },
3531
3532        nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
3533            'accusative' :
3534            'nominative';
3535
3536        return months[nounCase][m.month()];
3537    }
3538
3539    function weekdaysCaseReplace(m, format) {
3540        var weekdays = {
3541            'nominative': 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),
3542            'accusative': 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_')
3543        },
3544
3545        nounCase = (/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/).test(format) ?
3546            'accusative' :
3547            'nominative';
3548
3549        return weekdays[nounCase][m.day()];
3550    }
3551
3552    return moment.defineLocale('be', {
3553        months : monthsCaseReplace,
3554        monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
3555        weekdays : weekdaysCaseReplace,
3556        weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
3557        weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
3558        longDateFormat : {
3559            LT : 'HH:mm',
3560            LTS : 'LT:ss',
3561            L : 'DD.MM.YYYY',
3562            LL : 'D MMMM YYYY г.',
3563            LLL : 'D MMMM YYYY г., LT',
3564            LLLL : 'dddd, D MMMM YYYY г., LT'
3565        },
3566        calendar : {
3567            sameDay: '[Сёння ў] LT',
3568            nextDay: '[Заўтра ў] LT',
3569            lastDay: '[Учора ў] LT',
3570            nextWeek: function () {
3571                return '[У] dddd [ў] LT';
3572            },
3573            lastWeek: function () {
3574                switch (this.day()) {
3575                case 0:
3576                case 3:
3577                case 5:
3578                case 6:
3579                    return '[У мінулую] dddd [ў] LT';
3580                case 1:
3581                case 2:
3582                case 4:
3583                    return '[У мінулы] dddd [ў] LT';
3584                }
3585            },
3586            sameElse: 'L'
3587        },
3588        relativeTime : {
3589            future : 'праз %s',
3590            past : '%s таму',
3591            s : 'некалькі секунд',
3592            m : relativeTimeWithPlural,
3593            mm : relativeTimeWithPlural,
3594            h : relativeTimeWithPlural,
3595            hh : relativeTimeWithPlural,
3596            d : 'дзень',
3597            dd : relativeTimeWithPlural,
3598            M : 'месяц',
3599            MM : relativeTimeWithPlural,
3600            y : 'год',
3601            yy : relativeTimeWithPlural
3602        },
3603        meridiemParse: /ночы|раніцы|дня|вечара/,
3604        isPM : function (input) {
3605            return /^(дня|вечара)$/.test(input);
3606        },
3607        meridiem : function (hour, minute, isLower) {
3608            if (hour < 4) {
3609                return 'ночы';
3610            } else if (hour < 12) {
3611                return 'раніцы';
3612            } else if (hour < 17) {
3613                return 'дня';
3614            } else {
3615                return 'вечара';
3616            }
3617        },
3618
3619        ordinalParse: /\d{1,2}-(і|ы|га)/,
3620        ordinal: function (number, period) {
3621            switch (period) {
3622            case 'M':
3623            case 'd':
3624            case 'DDD':
3625            case 'w':
3626            case 'W':
3627                return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-Ñ–' : number + '-Ñ‹';
3628            case 'D':
3629                return number + '-га';
3630            default:
3631                return number;
3632            }
3633        },
3634
3635        week : {
3636            dow : 1, // Monday is the first day of the week.
3637            doy : 7  // The week that contains Jan 1st is the first week of the year.
3638        }
3639    });
3640}));
3641// moment.js locale configuration
3642// locale : bulgarian (bg)
3643// author : Krasen Borisov : https://github.com/kraz
3644
3645(function (factory) {
3646    factory(moment);
3647}(function (moment) {
3648    return moment.defineLocale('bg', {
3649        months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),
3650        monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
3651        weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),
3652        weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
3653        weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
3654        longDateFormat : {
3655            LT : 'H:mm',
3656            LTS : 'LT:ss',
3657            L : 'D.MM.YYYY',
3658            LL : 'D MMMM YYYY',
3659            LLL : 'D MMMM YYYY LT',
3660            LLLL : 'dddd, D MMMM YYYY LT'
3661        },
3662        calendar : {
3663            sameDay : '[Днес в] LT',
3664            nextDay : '[Утре в] LT',
3665            nextWeek : 'dddd [в] LT',
3666            lastDay : '[Вчера в] LT',
3667            lastWeek : function () {
3668                switch (this.day()) {
3669                case 0:
3670                case 3:
3671                case 6:
3672                    return '[В изминалата] dddd [в] LT';
3673                case 1:
3674                case 2:
3675                case 4:
3676                case 5:
3677                    return '[В изминалия] dddd [в] LT';
3678                }
3679            },
3680            sameElse : 'L'
3681        },
3682        relativeTime : {
3683            future : 'след %s',
3684            past : 'преди %s',
3685            s : 'няколко секунди',
3686            m : 'минута',
3687            mm : '%d минути',
3688            h : 'час',
3689            hh : '%d часа',
3690            d : 'ден',
3691            dd : '%d дни',
3692            M : 'месец',
3693            MM : '%d месеца',
3694            y : 'година',
3695            yy : '%d години'
3696        },
3697        ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
3698        ordinal : function (number) {
3699            var lastDigit = number % 10,
3700                last2Digits = number % 100;
3701            if (number === 0) {
3702                return number + '-ев';
3703            } else if (last2Digits === 0) {
3704                return number + '-ен';
3705            } else if (last2Digits > 10 && last2Digits < 20) {
3706                return number + '-ти';
3707            } else if (lastDigit === 1) {
3708                return number + '-ви';
3709            } else if (lastDigit === 2) {
3710                return number + '-ри';
3711            } else if (lastDigit === 7 || lastDigit === 8) {
3712                return number + '-ми';
3713            } else {
3714                return number + '-ти';
3715            }
3716        },
3717        week : {
3718            dow : 1, // Monday is the first day of the week.
3719            doy : 7  // The week that contains Jan 1st is the first week of the year.
3720        }
3721    });
3722}));
3723// moment.js locale configuration
3724// locale : Bengali (bn)
3725// author : Kaushik Gandhi : https://github.com/kaushikgandhi
3726
3727(function (factory) {
3728    factory(moment);
3729}(function (moment) {
3730    var symbolMap = {
3731        '1': 'à§§',
3732        '2': '২',
3733        '3': 'à§©',
3734        '4': '৪',
3735        '5': 'à§«',
3736        '6': '৬',
3737        '7': 'à§­',
3738        '8': 'à§®',
3739        '9': '৯',
3740        '0': '০'
3741    },
3742    numberMap = {
3743        'à§§': '1',
3744        '২': '2',
3745        'à§©': '3',
3746        '৪': '4',
3747        'à§«': '5',
3748        '৬': '6',
3749        'à§­': '7',
3750        'à§®': '8',
3751        '৯': '9',
3752        '০': '0'
3753    };
3754
3755    return moment.defineLocale('bn', {
3756        months : 'জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
3757        monthsShort : 'জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্'.split('_'),
3758        weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার'.split('_'),
3759        weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি'.split('_'),
3760        weekdaysMin : 'রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি'.split('_'),
3761        longDateFormat : {
3762            LT : 'A h:mm সময়',
3763            LTS : 'A h:mm:ss সময়',
3764            L : 'DD/MM/YYYY',
3765            LL : 'D MMMM YYYY',
3766            LLL : 'D MMMM YYYY, LT',
3767            LLLL : 'dddd, D MMMM YYYY, LT'
3768        },
3769        calendar : {
3770            sameDay : '[আজ] LT',
3771            nextDay : '[আগামীকাল] LT',
3772            nextWeek : 'dddd, LT',
3773            lastDay : '[গতকাল] LT',
3774            lastWeek : '[গত] dddd, LT',
3775            sameElse : 'L'
3776        },
3777        relativeTime : {
3778            future : '%s পরে',
3779            past : '%s আগে',
3780            s : 'কএক সেকেন্ড',
3781            m : 'এক মিনিট',
3782            mm : '%d মিনিট',
3783            h : 'এক ঘন্টা',
3784            hh : '%d ঘন্টা',
3785            d : 'এক দিন',
3786            dd : '%d দিন',
3787            M : 'এক মাস',
3788            MM : '%d মাস',
3789            y : 'এক বছর',
3790            yy : '%d বছর'
3791        },
3792        preparse: function (string) {
3793            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
3794                return numberMap[match];
3795            });
3796        },
3797        postformat: function (string) {
3798            return string.replace(/\d/g, function (match) {
3799                return symbolMap[match];
3800            });
3801        },
3802        meridiemParse: /রাত|শকাল|দুপুর|বিকেল|রাত/,
3803        isPM: function (input) {
3804            return /^(দুপুর|বিকেল|রাত)$/.test(input);
3805        },
3806        //Bengali is a vast language its spoken
3807        //in different forms in various parts of the world.
3808        //I have just generalized with most common one used
3809        meridiem : function (hour, minute, isLower) {
3810            if (hour < 4) {
3811                return 'রাত';
3812            } else if (hour < 10) {
3813                return 'শকাল';
3814            } else if (hour < 17) {
3815                return 'দুপুর';
3816            } else if (hour < 20) {
3817                return 'বিকেল';
3818            } else {
3819                return 'রাত';
3820            }
3821        },
3822        week : {
3823            dow : 0, // Sunday is the first day of the week.
3824            doy : 6  // The week that contains Jan 1st is the first week of the year.
3825        }
3826    });
3827}));
3828// moment.js locale configuration
3829// locale : tibetan (bo)
3830// author : Thupten N. Chakrishar : https://github.com/vajradog
3831
3832(function (factory) {
3833    factory(moment);
3834}(function (moment) {
3835    var symbolMap = {
3836        '1': '༡',
3837        '2': '༢',
3838        '3': '༣',
3839        '4': '༤',
3840        '5': '༥',
3841        '6': '༦',
3842        '7': '༧',
3843        '8': '༨',
3844        '9': '༩',
3845        '0': '༠'
3846    },
3847    numberMap = {
3848        '༡': '1',
3849        '༢': '2',
3850        '༣': '3',
3851        '༤': '4',
3852        '༥': '5',
3853        '༦': '6',
3854        '༧': '7',
3855        '༨': '8',
3856        '༩': '9',
3857        '༠': '0'
3858    };
3859
3860    return moment.defineLocale('bo', {
3861        months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
3862        monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
3863        weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),
3864        weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
3865        weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
3866        longDateFormat : {
3867            LT : 'A h:mm',
3868            LTS : 'LT:ss',
3869            L : 'DD/MM/YYYY',
3870            LL : 'D MMMM YYYY',
3871            LLL : 'D MMMM YYYY, LT',
3872            LLLL : 'dddd, D MMMM YYYY, LT'
3873        },
3874        calendar : {
3875            sameDay : '[དི་རིང] LT',
3876            nextDay : '[སང་ཉིན] LT',
3877            nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',
3878            lastDay : '[ཁ་སང] LT',
3879            lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
3880            sameElse : 'L'
3881        },
3882        relativeTime : {
3883            future : '%s ལ་',
3884            past : '%s སྔན་ལ',
3885            s : 'ལམ་སང',
3886            m : 'སྐར་མ་གཅིག',
3887            mm : '%d སྐར་མ',
3888            h : 'ཆུ་ཚོད་གཅིག',
3889            hh : '%d ཆུ་ཚོད',
3890            d : 'ཉིན་གཅིག',
3891            dd : '%d ཉིན་',
3892            M : 'ཟླ་བ་གཅིག',
3893            MM : '%d ཟླ་བ',
3894            y : 'ལོ་གཅིག',
3895            yy : '%d ལོ'
3896        },
3897        preparse: function (string) {
3898            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
3899                return numberMap[match];
3900            });
3901        },
3902        postformat: function (string) {
3903            return string.replace(/\d/g, function (match) {
3904                return symbolMap[match];
3905            });
3906        },
3907        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
3908        isPM: function (input) {
3909            return /^(ཉིན་གུང|དགོང་དག|མཚན་མོ)$/.test(input);
3910        },
3911        meridiem : function (hour, minute, isLower) {
3912            if (hour < 4) {
3913                return 'མཚན་མོ';
3914            } else if (hour < 10) {
3915                return 'ཞོགས་ཀས';
3916            } else if (hour < 17) {
3917                return 'ཉིན་གུང';
3918            } else if (hour < 20) {
3919                return 'དགོང་དག';
3920            } else {
3921                return 'མཚན་མོ';
3922            }
3923        },
3924        week : {
3925            dow : 0, // Sunday is the first day of the week.
3926            doy : 6  // The week that contains Jan 1st is the first week of the year.
3927        }
3928    });
3929}));
3930// moment.js locale configuration
3931// locale : breton (br)
3932// author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
3933
3934(function (factory) {
3935    factory(moment);
3936}(function (moment) {
3937    function relativeTimeWithMutation(number, withoutSuffix, key) {
3938        var format = {
3939            'mm': 'munutenn',
3940            'MM': 'miz',
3941            'dd': 'devezh'
3942        };
3943        return number + ' ' + mutation(format[key], number);
3944    }
3945
3946    function specialMutationForYears(number) {
3947        switch (lastNumber(number)) {
3948        case 1:
3949        case 3:
3950        case 4:
3951        case 5:
3952        case 9:
3953            return number + ' bloaz';
3954        default:
3955            return number + ' vloaz';
3956        }
3957    }
3958
3959    function lastNumber(number) {
3960        if (number > 9) {
3961            return lastNumber(number % 10);
3962        }
3963        return number;
3964    }
3965
3966    function mutation(text, number) {
3967        if (number === 2) {
3968            return softMutation(text);
3969        }
3970        return text;
3971    }
3972
3973    function softMutation(text) {
3974        var mutationTable = {
3975            'm': 'v',
3976            'b': 'v',
3977            'd': 'z'
3978        };
3979        if (mutationTable[text.charAt(0)] === undefined) {
3980            return text;
3981        }
3982        return mutationTable[text.charAt(0)] + text.substring(1);
3983    }
3984
3985    return moment.defineLocale('br', {
3986        months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),
3987        monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
3988        weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'),
3989        weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
3990        weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
3991        longDateFormat : {
3992            LT : 'h[e]mm A',
3993            LTS : 'h[e]mm:ss A',
3994            L : 'DD/MM/YYYY',
3995            LL : 'D [a viz] MMMM YYYY',
3996            LLL : 'D [a viz] MMMM YYYY LT',
3997            LLLL : 'dddd, D [a viz] MMMM YYYY LT'
3998        },
3999        calendar : {
4000            sameDay : '[Hiziv da] LT',
4001            nextDay : '[Warc\'hoazh da] LT',
4002            nextWeek : 'dddd [da] LT',
4003            lastDay : '[Dec\'h da] LT',
4004            lastWeek : 'dddd [paset da] LT',
4005            sameElse : 'L'
4006        },
4007        relativeTime : {
4008            future : 'a-benn %s',
4009            past : '%s \'zo',
4010            s : 'un nebeud segondennoù',
4011            m : 'ur vunutenn',
4012            mm : relativeTimeWithMutation,
4013            h : 'un eur',
4014            hh : '%d eur',
4015            d : 'un devezh',
4016            dd : relativeTimeWithMutation,
4017            M : 'ur miz',
4018            MM : relativeTimeWithMutation,
4019            y : 'ur bloaz',
4020            yy : specialMutationForYears
4021        },
4022        ordinalParse: /\d{1,2}(añ|vet)/,
4023        ordinal : function (number) {
4024            var output = (number === 1) ? 'añ' : 'vet';
4025            return number + output;
4026        },
4027        week : {
4028            dow : 1, // Monday is the first day of the week.
4029            doy : 4  // The week that contains Jan 4th is the first week of the year.
4030        }
4031    });
4032}));
4033// moment.js locale configuration
4034// locale : bosnian (bs)
4035// author : Nedim Cholich : https://github.com/frontyard
4036// based on (hr) translation by Bojan Marković
4037
4038(function (factory) {
4039    factory(moment);
4040}(function (moment) {
4041    function translate(number, withoutSuffix, key) {
4042        var result = number + ' ';
4043        switch (key) {
4044        case 'm':
4045            return withoutSuffix ? 'jedna minuta' : 'jedne minute';
4046        case 'mm':
4047            if (number === 1) {
4048                result += 'minuta';
4049            } else if (number === 2 || number === 3 || number === 4) {
4050                result += 'minute';
4051            } else {
4052                result += 'minuta';
4053            }
4054            return result;
4055        case 'h':
4056            return withoutSuffix ? 'jedan sat' : 'jednog sata';
4057        case 'hh':
4058            if (number === 1) {
4059                result += 'sat';
4060            } else if (number === 2 || number === 3 || number === 4) {
4061                result += 'sata';
4062            } else {
4063                result += 'sati';
4064            }
4065            return result;
4066        case 'dd':
4067            if (number === 1) {
4068                result += 'dan';
4069            } else {
4070                result += 'dana';
4071            }
4072            return result;
4073        case 'MM':
4074            if (number === 1) {
4075                result += 'mjesec';
4076            } else if (number === 2 || number === 3 || number === 4) {
4077                result += 'mjeseca';
4078            } else {
4079                result += 'mjeseci';
4080            }
4081            return result;
4082        case 'yy':
4083            if (number === 1) {
4084                result += 'godina';
4085            } else if (number === 2 || number === 3 || number === 4) {
4086                result += 'godine';
4087            } else {
4088                result += 'godina';
4089            }
4090            return result;
4091        }
4092    }
4093
4094    return moment.defineLocale('bs', {
4095        months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),
4096        monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),
4097        weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
4098        weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
4099        weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
4100        longDateFormat : {
4101            LT : 'H:mm',
4102            LTS : 'LT:ss',
4103            L : 'DD. MM. YYYY',
4104            LL : 'D. MMMM YYYY',
4105            LLL : 'D. MMMM YYYY LT',
4106            LLLL : 'dddd, D. MMMM YYYY LT'
4107        },
4108        calendar : {
4109            sameDay  : '[danas u] LT',
4110            nextDay  : '[sutra u] LT',
4111
4112            nextWeek : function () {
4113                switch (this.day()) {
4114                case 0:
4115                    return '[u] [nedjelju] [u] LT';
4116                case 3:
4117                    return '[u] [srijedu] [u] LT';
4118                case 6:
4119                    return '[u] [subotu] [u] LT';
4120                case 1:
4121                case 2:
4122                case 4:
4123                case 5:
4124                    return '[u] dddd [u] LT';
4125                }
4126            },
4127            lastDay  : '[jučer u] LT',
4128            lastWeek : function () {
4129                switch (this.day()) {
4130                case 0:
4131                case 3:
4132                    return '[prošlu] dddd [u] LT';
4133                case 6:
4134                    return '[prošle] [subote] [u] LT';
4135                case 1:
4136                case 2:
4137                case 4:
4138                case 5:
4139                    return '[prošli] dddd [u] LT';
4140                }
4141            },
4142            sameElse : 'L'
4143        },
4144        relativeTime : {
4145            future : 'za %s',
4146            past   : 'prije %s',
4147            s      : 'par sekundi',
4148            m      : translate,
4149            mm     : translate,
4150            h      : translate,
4151            hh     : translate,
4152            d      : 'dan',
4153            dd     : translate,
4154            M      : 'mjesec',
4155            MM     : translate,
4156            y      : 'godinu',
4157            yy     : translate
4158        },
4159        ordinalParse: /\d{1,2}\./,
4160        ordinal : '%d.',
4161        week : {
4162            dow : 1, // Monday is the first day of the week.
4163            doy : 7  // The week that contains Jan 1st is the first week of the year.
4164        }
4165    });
4166}));
4167// moment.js locale configuration
4168// locale : catalan (ca)
4169// author : Juan G. Hurtado : https://github.com/juanghurtado
4170
4171(function (factory) {
4172    factory(moment);
4173}(function (moment) {
4174    return moment.defineLocale('ca', {
4175        months : 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),
4176        monthsShort : 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.'.split('_'),
4177        weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),
4178        weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
4179        weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'),
4180        longDateFormat : {
4181            LT : 'H:mm',
4182            LTS : 'LT:ss',
4183            L : 'DD/MM/YYYY',
4184            LL : 'D MMMM YYYY',
4185            LLL : 'D MMMM YYYY LT',
4186            LLLL : 'dddd D MMMM YYYY LT'
4187        },
4188        calendar : {
4189            sameDay : function () {
4190                return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
4191            },
4192            nextDay : function () {
4193                return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
4194            },
4195            nextWeek : function () {
4196                return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
4197            },
4198            lastDay : function () {
4199                return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
4200            },
4201            lastWeek : function () {
4202                return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
4203            },
4204            sameElse : 'L'
4205        },
4206        relativeTime : {
4207            future : 'en %s',
4208            past : 'fa %s',
4209            s : 'uns segons',
4210            m : 'un minut',
4211            mm : '%d minuts',
4212            h : 'una hora',
4213            hh : '%d hores',
4214            d : 'un dia',
4215            dd : '%d dies',
4216            M : 'un mes',
4217            MM : '%d mesos',
4218            y : 'un any',
4219            yy : '%d anys'
4220        },
4221        ordinalParse: /\d{1,2}(r|n|t|è|a)/,
4222        ordinal : function (number, period) {
4223            var output = (number === 1) ? 'r' :
4224                (number === 2) ? 'n' :
4225                (number === 3) ? 'r' :
4226                (number === 4) ? 't' : 'è';
4227            if (period === 'w' || period === 'W') {
4228                output = 'a';
4229            }
4230            return number + output;
4231        },
4232        week : {
4233            dow : 1, // Monday is the first day of the week.
4234            doy : 4  // The week that contains Jan 4th is the first week of the year.
4235        }
4236    });
4237}));
4238// moment.js locale configuration
4239// locale : czech (cs)
4240// author : petrbela : https://github.com/petrbela
4241
4242(function (factory) {
4243    factory(moment);
4244}(function (moment) {
4245    var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),
4246        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');
4247
4248    function plural(n) {
4249        return (n > 1) && (n < 5) && (~~(n / 10) !== 1);
4250    }
4251
4252    function translate(number, withoutSuffix, key, isFuture) {
4253        var result = number + ' ';
4254        switch (key) {
4255        case 's':  // a few seconds / in a few seconds / a few seconds ago
4256            return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';
4257        case 'm':  // a minute / in a minute / a minute ago
4258            return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');
4259        case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
4260            if (withoutSuffix || isFuture) {
4261                return result + (plural(number) ? 'minuty' : 'minut');
4262            } else {
4263                return result + 'minutami';
4264            }
4265            break;
4266        case 'h':  // an hour / in an hour / an hour ago
4267            return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
4268        case 'hh': // 9 hours / in 9 hours / 9 hours ago
4269            if (withoutSuffix || isFuture) {
4270                return result + (plural(number) ? 'hodiny' : 'hodin');
4271            } else {
4272                return result + 'hodinami';
4273            }
4274            break;
4275        case 'd':  // a day / in a day / a day ago
4276            return (withoutSuffix || isFuture) ? 'den' : 'dnem';
4277        case 'dd': // 9 days / in 9 days / 9 days ago
4278            if (withoutSuffix || isFuture) {
4279                return result + (plural(number) ? 'dny' : 'dní');
4280            } else {
4281                return result + 'dny';
4282            }
4283            break;
4284        case 'M':  // a month / in a month / a month ago
4285            return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';
4286        case 'MM': // 9 months / in 9 months / 9 months ago
4287            if (withoutSuffix || isFuture) {
4288                return result + (plural(number) ? 'měsíce' : 'měsíců');
4289            } else {
4290                return result + 'měsíci';
4291            }
4292            break;
4293        case 'y':  // a year / in a year / a year ago
4294            return (withoutSuffix || isFuture) ? 'rok' : 'rokem';
4295        case 'yy': // 9 years / in 9 years / 9 years ago
4296            if (withoutSuffix || isFuture) {
4297                return result + (plural(number) ? 'roky' : 'let');
4298            } else {
4299                return result + 'lety';
4300            }
4301            break;
4302        }
4303    }
4304
4305    return moment.defineLocale('cs', {
4306        months : months,
4307        monthsShort : monthsShort,
4308        monthsParse : (function (months, monthsShort) {
4309            var i, _monthsParse = [];
4310            for (i = 0; i < 12; i++) {
4311                // use custom parser to solve problem with July (červenec)
4312                _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
4313            }
4314            return _monthsParse;
4315        }(months, monthsShort)),
4316        weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
4317        weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),
4318        weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),
4319        longDateFormat : {
4320            LT: 'H:mm',
4321            LTS : 'LT:ss',
4322            L : 'DD.MM.YYYY',
4323            LL : 'D. MMMM YYYY',
4324            LLL : 'D. MMMM YYYY LT',
4325            LLLL : 'dddd D. MMMM YYYY LT'
4326        },
4327        calendar : {
4328            sameDay: '[dnes v] LT',
4329            nextDay: '[zítra v] LT',
4330            nextWeek: function () {
4331                switch (this.day()) {
4332                case 0:
4333                    return '[v neděli v] LT';
4334                case 1:
4335                case 2:
4336                    return '[v] dddd [v] LT';
4337                case 3:
4338                    return '[ve středu v] LT';
4339                case 4:
4340                    return '[ve čtvrtek v] LT';
4341                case 5:
4342                    return '[v pátek v] LT';
4343                case 6:
4344                    return '[v sobotu v] LT';
4345                }
4346            },
4347            lastDay: '[včera v] LT',
4348            lastWeek: function () {
4349                switch (this.day()) {
4350                case 0:
4351                    return '[minulou neděli v] LT';
4352                case 1:
4353                case 2:
4354                    return '[minulé] dddd [v] LT';
4355                case 3:
4356                    return '[minulou středu v] LT';
4357                case 4:
4358                case 5:
4359                    return '[minulý] dddd [v] LT';
4360                case 6:
4361                    return '[minulou sobotu v] LT';
4362                }
4363            },
4364            sameElse: 'L'
4365        },
4366        relativeTime : {
4367            future : 'za %s',
4368            past : 'před %s',
4369            s : translate,
4370            m : translate,
4371            mm : translate,
4372            h : translate,
4373            hh : translate,
4374            d : translate,
4375            dd : translate,
4376            M : translate,
4377            MM : translate,
4378            y : translate,
4379            yy : translate
4380        },
4381        ordinalParse : /\d{1,2}\./,
4382        ordinal : '%d.',
4383        week : {
4384            dow : 1, // Monday is the first day of the week.
4385            doy : 4  // The week that contains Jan 4th is the first week of the year.
4386        }
4387    });
4388}));
4389// moment.js locale configuration
4390// locale : chuvash (cv)
4391// author : Anatoly Mironov : https://github.com/mirontoli
4392
4393(function (factory) {
4394    factory(moment);
4395}(function (moment) {
4396    return moment.defineLocale('cv', {
4397        months : 'кăрлач_нарăс_пуш_ака_май_çĕртме_утă_çурла_авăн_юпа_чӳк_раштав'.split('_'),
4398        monthsShort : 'кăр_нар_пуш_ака_май_çĕр_утă_çур_ав_юпа_чӳк_раш'.split('_'),
4399        weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кĕçнерникун_эрнекун_шăматкун'.split('_'),
4400        weekdaysShort : 'выр_тун_ытл_юн_кĕç_эрн_шăм'.split('_'),
4401        weekdaysMin : 'вр_тн_ыт_юн_кç_эр_шм'.split('_'),
4402        longDateFormat : {
4403            LT : 'HH:mm',
4404            LTS : 'LT:ss',
4405            L : 'DD-MM-YYYY',
4406            LL : 'YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ]',
4407            LLL : 'YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT',
4408            LLLL : 'dddd, YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT'
4409        },
4410        calendar : {
4411            sameDay: '[Паян] LT [сехетре]',
4412            nextDay: '[Ыран] LT [сехетре]',
4413            lastDay: '[Ĕнер] LT [сехетре]',
4414            nextWeek: '[Çитес] dddd LT [сехетре]',
4415            lastWeek: '[Иртнĕ] dddd LT [сехетре]',
4416            sameElse: 'L'
4417        },
4418        relativeTime : {
4419            future : function (output) {
4420                var affix = /сехет$/i.exec(output) ? 'рен' : /çул$/i.exec(output) ? 'тан' : 'ран';
4421                return output + affix;
4422            },
4423            past : '%s каялла',
4424            s : 'пĕр-ик çеккунт',
4425            m : 'пĕр минут',
4426            mm : '%d минут',
4427            h : 'пĕр сехет',
4428            hh : '%d сехет',
4429            d : 'пĕр кун',
4430            dd : '%d кун',
4431            M : 'пĕр уйăх',
4432            MM : '%d уйăх',
4433            y : 'пĕр çул',
4434            yy : '%d çул'
4435        },
4436        ordinalParse: /\d{1,2}-мĕш/,
4437        ordinal : '%d-мĕш',
4438        week : {
4439            dow : 1, // Monday is the first day of the week.
4440            doy : 7  // The week that contains Jan 1st is the first week of the year.
4441        }
4442    });
4443}));
4444// moment.js locale configuration
4445// locale : Welsh (cy)
4446// author : Robert Allen
4447
4448(function (factory) {
4449    factory(moment);
4450}(function (moment) {
4451    return moment.defineLocale('cy', {
4452        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),
4453        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),
4454        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),
4455        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
4456        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
4457        // time formats are the same as en-gb
4458        longDateFormat: {
4459            LT: 'HH:mm',
4460            LTS : 'LT:ss',
4461            L: 'DD/MM/YYYY',
4462            LL: 'D MMMM YYYY',
4463            LLL: 'D MMMM YYYY LT',
4464            LLLL: 'dddd, D MMMM YYYY LT'
4465        },
4466        calendar: {
4467            sameDay: '[Heddiw am] LT',
4468            nextDay: '[Yfory am] LT',
4469            nextWeek: 'dddd [am] LT',
4470            lastDay: '[Ddoe am] LT',
4471            lastWeek: 'dddd [diwethaf am] LT',
4472            sameElse: 'L'
4473        },
4474        relativeTime: {
4475            future: 'mewn %s',
4476            past: '%s yn ôl',
4477            s: 'ychydig eiliadau',
4478            m: 'munud',
4479            mm: '%d munud',
4480            h: 'awr',
4481            hh: '%d awr',
4482            d: 'diwrnod',
4483            dd: '%d diwrnod',
4484            M: 'mis',
4485            MM: '%d mis',
4486            y: 'blwyddyn',
4487            yy: '%d flynedd'
4488        },
4489        ordinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
4490        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
4491        ordinal: function (number) {
4492            var b = number,
4493                output = '',
4494                lookup = [
vendor: 88,870 bytes, lines 4495-6692
4495                    '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed
4496                    'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed
4497                ];
4498
4499            if (b > 20) {
4500                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
4501                    output = 'fed'; // not 30ain, 70ain or 90ain
4502                } else {
4503                    output = 'ain';
4504                }
4505            } else if (b > 0) {
4506                output = lookup[b];
4507            }
4508
4509            return number + output;
4510        },
4511        week : {
4512            dow : 1, // Monday is the first day of the week.
4513            doy : 4  // The week that contains Jan 4th is the first week of the year.
4514        }
4515    });
4516}));
4517// moment.js locale configuration
4518// locale : danish (da)
4519// author : Ulrik Nielsen : https://github.com/mrbase
4520
4521(function (factory) {
4522    factory(moment);
4523}(function (moment) {
4524    return moment.defineLocale('da', {
4525        months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),
4526        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
4527        weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
4528        weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),
4529        weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
4530        longDateFormat : {
4531            LT : 'HH:mm',
4532            LTS : 'LT:ss',
4533            L : 'DD/MM/YYYY',
4534            LL : 'D. MMMM YYYY',
4535            LLL : 'D. MMMM YYYY LT',
4536            LLLL : 'dddd [d.] D. MMMM YYYY LT'
4537        },
4538        calendar : {
4539            sameDay : '[I dag kl.] LT',
4540            nextDay : '[I morgen kl.] LT',
4541            nextWeek : 'dddd [kl.] LT',
4542            lastDay : '[I går kl.] LT',
4543            lastWeek : '[sidste] dddd [kl] LT',
4544            sameElse : 'L'
4545        },
4546        relativeTime : {
4547            future : 'om %s',
4548            past : '%s siden',
4549            s : 'få sekunder',
4550            m : 'et minut',
4551            mm : '%d minutter',
4552            h : 'en time',
4553            hh : '%d timer',
4554            d : 'en dag',
4555            dd : '%d dage',
4556            M : 'en måned',
4557            MM : '%d måneder',
4558            y : 'et år',
4559            yy : '%d år'
4560        },
4561        ordinalParse: /\d{1,2}\./,
4562        ordinal : '%d.',
4563        week : {
4564            dow : 1, // Monday is the first day of the week.
4565            doy : 4  // The week that contains Jan 4th is the first week of the year.
4566        }
4567    });
4568}));
4569// moment.js locale configuration
4570// locale : austrian german (de-at)
4571// author : lluchs : https://github.com/lluchs
4572// author: Menelion Elensúle: https://github.com/Oire
4573// author : Martin Groller : https://github.com/MadMG
4574
4575(function (factory) {
4576    factory(moment);
4577}(function (moment) {
4578    function processRelativeTime(number, withoutSuffix, key, isFuture) {
4579        var format = {
4580            'm': ['eine Minute', 'einer Minute'],
4581            'h': ['eine Stunde', 'einer Stunde'],
4582            'd': ['ein Tag', 'einem Tag'],
4583            'dd': [number + ' Tage', number + ' Tagen'],
4584            'M': ['ein Monat', 'einem Monat'],
4585            'MM': [number + ' Monate', number + ' Monaten'],
4586            'y': ['ein Jahr', 'einem Jahr'],
4587            'yy': [number + ' Jahre', number + ' Jahren']
4588        };
4589        return withoutSuffix ? format[key][0] : format[key][1];
4590    }
4591
4592    return moment.defineLocale('de-at', {
4593        months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
4594        monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
4595        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
4596        weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
4597        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
4598        longDateFormat : {
4599            LT: 'HH:mm',
4600            LTS: 'HH:mm:ss',
4601            L : 'DD.MM.YYYY',
4602            LL : 'D. MMMM YYYY',
4603            LLL : 'D. MMMM YYYY LT',
4604            LLLL : 'dddd, D. MMMM YYYY LT'
4605        },
4606        calendar : {
4607            sameDay: '[Heute um] LT [Uhr]',
4608            sameElse: 'L',
4609            nextDay: '[Morgen um] LT [Uhr]',
4610            nextWeek: 'dddd [um] LT [Uhr]',
4611            lastDay: '[Gestern um] LT [Uhr]',
4612            lastWeek: '[letzten] dddd [um] LT [Uhr]'
4613        },
4614        relativeTime : {
4615            future : 'in %s',
4616            past : 'vor %s',
4617            s : 'ein paar Sekunden',
4618            m : processRelativeTime,
4619            mm : '%d Minuten',
4620            h : processRelativeTime,
4621            hh : '%d Stunden',
4622            d : processRelativeTime,
4623            dd : processRelativeTime,
4624            M : processRelativeTime,
4625            MM : processRelativeTime,
4626            y : processRelativeTime,
4627            yy : processRelativeTime
4628        },
4629        ordinalParse: /\d{1,2}\./,
4630        ordinal : '%d.',
4631        week : {
4632            dow : 1, // Monday is the first day of the week.
4633            doy : 4  // The week that contains Jan 4th is the first week of the year.
4634        }
4635    });
4636}));
4637// moment.js locale configuration
4638// locale : german (de)
4639// author : lluchs : https://github.com/lluchs
4640// author: Menelion Elensúle: https://github.com/Oire
4641
4642(function (factory) {
4643    factory(moment);
4644}(function (moment) {
4645    function processRelativeTime(number, withoutSuffix, key, isFuture) {
4646        var format = {
4647            'm': ['eine Minute', 'einer Minute'],
4648            'h': ['eine Stunde', 'einer Stunde'],
4649            'd': ['ein Tag', 'einem Tag'],
4650            'dd': [number + ' Tage', number + ' Tagen'],
4651            'M': ['ein Monat', 'einem Monat'],
4652            'MM': [number + ' Monate', number + ' Monaten'],
4653            'y': ['ein Jahr', 'einem Jahr'],
4654            'yy': [number + ' Jahre', number + ' Jahren']
4655        };
4656        return withoutSuffix ? format[key][0] : format[key][1];
4657    }
4658
4659    return moment.defineLocale('de', {
4660        months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
4661        monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
4662        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
4663        weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
4664        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
4665        longDateFormat : {
4666            LT: 'HH:mm',
4667            LTS: 'HH:mm:ss',
4668            L : 'DD.MM.YYYY',
4669            LL : 'D. MMMM YYYY',
4670            LLL : 'D. MMMM YYYY LT',
4671            LLLL : 'dddd, D. MMMM YYYY LT'
4672        },
4673        calendar : {
4674            sameDay: '[Heute um] LT [Uhr]',
4675            sameElse: 'L',
4676            nextDay: '[Morgen um] LT [Uhr]',
4677            nextWeek: 'dddd [um] LT [Uhr]',
4678            lastDay: '[Gestern um] LT [Uhr]',
4679            lastWeek: '[letzten] dddd [um] LT [Uhr]'
4680        },
4681        relativeTime : {
4682            future : 'in %s',
4683            past : 'vor %s',
4684            s : 'ein paar Sekunden',
4685            m : processRelativeTime,
4686            mm : '%d Minuten',
4687            h : processRelativeTime,
4688            hh : '%d Stunden',
4689            d : processRelativeTime,
4690            dd : processRelativeTime,
4691            M : processRelativeTime,
4692            MM : processRelativeTime,
4693            y : processRelativeTime,
4694            yy : processRelativeTime
4695        },
4696        ordinalParse: /\d{1,2}\./,
4697        ordinal : '%d.',
4698        week : {
4699            dow : 1, // Monday is the first day of the week.
4700            doy : 4  // The week that contains Jan 4th is the first week of the year.
4701        }
4702    });
4703}));
4704// moment.js locale configuration
4705// locale : modern greek (el)
4706// author : Aggelos Karalias : https://github.com/mehiel
4707
4708(function (factory) {
4709    factory(moment);
4710}(function (moment) {
4711    return moment.defineLocale('el', {
4712        monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),
4713        monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),
4714        months : function (momentToFormat, format) {
4715            if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'
4716                return this._monthsGenitiveEl[momentToFormat.month()];
4717            } else {
4718                return this._monthsNominativeEl[momentToFormat.month()];
4719            }
4720        },
4721        monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
4722        weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),
4723        weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
4724        weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
4725        meridiem : function (hours, minutes, isLower) {
4726            if (hours > 11) {
4727                return isLower ? 'μμ' : 'ΜΜ';
4728            } else {
4729                return isLower ? 'πμ' : 'ΠΜ';
4730            }
4731        },
4732        isPM : function (input) {
4733            return ((input + '').toLowerCase()[0] === 'μ');
4734        },
4735        meridiemParse : /[ΠΜ]\.?Μ?\.?/i,
4736        longDateFormat : {
4737            LT : 'h:mm A',
4738            LTS : 'h:mm:ss A',
4739            L : 'DD/MM/YYYY',
4740            LL : 'D MMMM YYYY',
4741            LLL : 'D MMMM YYYY LT',
4742            LLLL : 'dddd, D MMMM YYYY LT'
4743        },
4744        calendarEl : {
4745            sameDay : '[Σήμερα {}] LT',
4746            nextDay : '[Αύριο {}] LT',
4747            nextWeek : 'dddd [{}] LT',
4748            lastDay : '[Χθες {}] LT',
4749            lastWeek : function () {
4750                switch (this.day()) {
4751                    case 6:
4752                        return '[το προηγούμενο] dddd [{}] LT';
4753                    default:
4754                        return '[την προηγούμενη] dddd [{}] LT';
4755                }
4756            },
4757            sameElse : 'L'
4758        },
4759        calendar : function (key, mom) {
4760            var output = this._calendarEl[key],
4761                hours = mom && mom.hours();
4762
4763            if (typeof output === 'function') {
4764                output = output.apply(mom);
4765            }
4766
4767            return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));
4768        },
4769        relativeTime : {
4770            future : 'σε %s',
4771            past : '%s πριν',
4772            s : 'λίγα δευτερόλεπτα',
4773            m : 'ένα λεπτό',
4774            mm : '%d λεπτά',
4775            h : 'μία ώρα',
4776            hh : '%d ώρες',
4777            d : 'μία μέρα',
4778            dd : '%d μέρες',
4779            M : 'ένας μήνας',
4780            MM : '%d μήνες',
4781            y : 'ένας χρόνος',
4782            yy : '%d χρόνια'
4783        },
4784        ordinalParse: /\d{1,2}η/,
4785        ordinal: '%dη',
4786        week : {
4787            dow : 1, // Monday is the first day of the week.
4788            doy : 4  // The week that contains Jan 4st is the first week of the year.
4789        }
4790    });
4791}));
4792// moment.js locale configuration
4793// locale : australian english (en-au)
4794
4795(function (factory) {
4796    factory(moment);
4797}(function (moment) {
4798    return moment.defineLocale('en-au', {
4799        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
4800        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
4801        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
4802        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
4803        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
4804        longDateFormat : {
4805            LT : 'h:mm A',
4806            LTS : 'h:mm:ss A',
4807            L : 'DD/MM/YYYY',
4808            LL : 'D MMMM YYYY',
4809            LLL : 'D MMMM YYYY LT',
4810            LLLL : 'dddd, D MMMM YYYY LT'
4811        },
4812        calendar : {
4813            sameDay : '[Today at] LT',
4814            nextDay : '[Tomorrow at] LT',
4815            nextWeek : 'dddd [at] LT',
4816            lastDay : '[Yesterday at] LT',
4817            lastWeek : '[Last] dddd [at] LT',
4818            sameElse : 'L'
4819        },
4820        relativeTime : {
4821            future : 'in %s',
4822            past : '%s ago',
4823            s : 'a few seconds',
4824            m : 'a minute',
4825            mm : '%d minutes',
4826            h : 'an hour',
4827            hh : '%d hours',
4828            d : 'a day',
4829            dd : '%d days',
4830            M : 'a month',
4831            MM : '%d months',
4832            y : 'a year',
4833            yy : '%d years'
4834        },
4835        ordinalParse: /\d{1,2}(st|nd|rd|th)/,
4836        ordinal : function (number) {
4837            var b = number % 10,
4838                output = (~~(number % 100 / 10) === 1) ? 'th' :
4839                (b === 1) ? 'st' :
4840                (b === 2) ? 'nd' :
4841                (b === 3) ? 'rd' : 'th';
4842            return number + output;
4843        },
4844        week : {
4845            dow : 1, // Monday is the first day of the week.
4846            doy : 4  // The week that contains Jan 4th is the first week of the year.
4847        }
4848    });
4849}));
4850// moment.js locale configuration
4851// locale : canadian english (en-ca)
4852// author : Jonathan Abourbih : https://github.com/jonbca
4853
4854(function (factory) {
4855    factory(moment);
4856}(function (moment) {
4857    return moment.defineLocale('en-ca', {
4858        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
4859        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
4860        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
4861        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
4862        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
4863        longDateFormat : {
4864            LT : 'h:mm A',
4865            LTS : 'h:mm:ss A',
4866            L : 'YYYY-MM-DD',
4867            LL : 'D MMMM, YYYY',
4868            LLL : 'D MMMM, YYYY LT',
4869            LLLL : 'dddd, D MMMM, YYYY LT'
4870        },
4871        calendar : {
4872            sameDay : '[Today at] LT',
4873            nextDay : '[Tomorrow at] LT',
4874            nextWeek : 'dddd [at] LT',
4875            lastDay : '[Yesterday at] LT',
4876            lastWeek : '[Last] dddd [at] LT',
4877            sameElse : 'L'
4878        },
4879        relativeTime : {
4880            future : 'in %s',
4881            past : '%s ago',
4882            s : 'a few seconds',
4883            m : 'a minute',
4884            mm : '%d minutes',
4885            h : 'an hour',
4886            hh : '%d hours',
4887            d : 'a day',
4888            dd : '%d days',
4889            M : 'a month',
4890            MM : '%d months',
4891            y : 'a year',
4892            yy : '%d years'
4893        },
4894        ordinalParse: /\d{1,2}(st|nd|rd|th)/,
4895        ordinal : function (number) {
4896            var b = number % 10,
4897                output = (~~(number % 100 / 10) === 1) ? 'th' :
4898                (b === 1) ? 'st' :
4899                (b === 2) ? 'nd' :
4900                (b === 3) ? 'rd' : 'th';
4901            return number + output;
4902        }
4903    });
4904}));
4905// moment.js locale configuration
4906// locale : great britain english (en-gb)
4907// author : Chris Gedrim : https://github.com/chrisgedrim
4908
4909(function (factory) {
4910    factory(moment);
4911}(function (moment) {
4912    return moment.defineLocale('en-gb', {
4913        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
4914        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
4915        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
4916        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
4917        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
4918        longDateFormat : {
4919            LT : 'HH:mm',
4920            LTS : 'HH:mm:ss',
4921            L : 'DD/MM/YYYY',
4922            LL : 'D MMMM YYYY',
4923            LLL : 'D MMMM YYYY LT',
4924            LLLL : 'dddd, D MMMM YYYY LT'
4925        },
4926        calendar : {
4927            sameDay : '[Today at] LT',
4928            nextDay : '[Tomorrow at] LT',
4929            nextWeek : 'dddd [at] LT',
4930            lastDay : '[Yesterday at] LT',
4931            lastWeek : '[Last] dddd [at] LT',
4932            sameElse : 'L'
4933        },
4934        relativeTime : {
4935            future : 'in %s',
4936            past : '%s ago',
4937            s : 'a few seconds',
4938            m : 'a minute',
4939            mm : '%d minutes',
4940            h : 'an hour',
4941            hh : '%d hours',
4942            d : 'a day',
4943            dd : '%d days',
4944            M : 'a month',
4945            MM : '%d months',
4946            y : 'a year',
4947            yy : '%d years'
4948        },
4949        ordinalParse: /\d{1,2}(st|nd|rd|th)/,
4950        ordinal : function (number) {
4951            var b = number % 10,
4952                output = (~~(number % 100 / 10) === 1) ? 'th' :
4953                (b === 1) ? 'st' :
4954                (b === 2) ? 'nd' :
4955                (b === 3) ? 'rd' : 'th';
4956            return number + output;
4957        },
4958        week : {
4959            dow : 1, // Monday is the first day of the week.
4960            doy : 4  // The week that contains Jan 4th is the first week of the year.
4961        }
4962    });
4963}));
4964// moment.js locale configuration
4965// locale : esperanto (eo)
4966// author : Colin Dean : https://github.com/colindean
4967// komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko.
4968//          Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni!
4969
4970(function (factory) {
4971    factory(moment);
4972}(function (moment) {
4973    return moment.defineLocale('eo', {
4974        months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅ­gusto_septembro_oktobro_novembro_decembro'.split('_'),
4975        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aÅ­g_sep_okt_nov_dec'.split('_'),
4976        weekdays : 'Dimanĉo_Lundo_Mardo_Merkredo_Ĵaŭdo_Vendredo_Sabato'.split('_'),
4977        weekdaysShort : 'Dim_Lun_Mard_Merk_Ä´aÅ­_Ven_Sab'.split('_'),
4978        weekdaysMin : 'Di_Lu_Ma_Me_Ä´a_Ve_Sa'.split('_'),
4979        longDateFormat : {
4980            LT : 'HH:mm',
4981            LTS : 'LT:ss',
4982            L : 'YYYY-MM-DD',
4983            LL : 'D[-an de] MMMM, YYYY',
4984            LLL : 'D[-an de] MMMM, YYYY LT',
4985            LLLL : 'dddd, [la] D[-an de] MMMM, YYYY LT'
4986        },
4987        meridiemParse: /[ap]\.t\.m/i,
4988        isPM: function (input) {
4989            return input.charAt(0).toLowerCase() === 'p';
4990        },
4991        meridiem : function (hours, minutes, isLower) {
4992            if (hours > 11) {
4993                return isLower ? 'p.t.m.' : 'P.T.M.';
4994            } else {
4995                return isLower ? 'a.t.m.' : 'A.T.M.';
4996            }
4997        },
4998        calendar : {
4999            sameDay : '[HodiaÅ­ je] LT',
5000            nextDay : '[MorgaÅ­ je] LT',
5001            nextWeek : 'dddd [je] LT',
5002            lastDay : '[HieraÅ­ je] LT',
5003            lastWeek : '[pasinta] dddd [je] LT',
5004            sameElse : 'L'
5005        },
5006        relativeTime : {
5007            future : 'je %s',
5008            past : 'antaÅ­ %s',
5009            s : 'sekundoj',
5010            m : 'minuto',
5011            mm : '%d minutoj',
5012            h : 'horo',
5013            hh : '%d horoj',
5014            d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo
5015            dd : '%d tagoj',
5016            M : 'monato',
5017            MM : '%d monatoj',
5018            y : 'jaro',
5019            yy : '%d jaroj'
5020        },
5021        ordinalParse: /\d{1,2}a/,
5022        ordinal : '%da',
5023        week : {
5024            dow : 1, // Monday is the first day of the week.
5025            doy : 7  // The week that contains Jan 1st is the first week of the year.
5026        }
5027    });
5028}));
5029// moment.js locale configuration
5030// locale : spanish (es)
5031// author : Julio Napurí : https://github.com/julionc
5032
5033(function (factory) {
5034    factory(moment);
5035}(function (moment) {
5036    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
5037        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
5038
5039    return moment.defineLocale('es', {
5040        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
5041        monthsShort : function (m, format) {
5042            if (/-MMM-/.test(format)) {
5043                return monthsShort[m.month()];
5044            } else {
5045                return monthsShortDot[m.month()];
5046            }
5047        },
5048        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
5049        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
5050        weekdaysMin : 'Do_Lu_Ma_Mi_Ju_Vi_Sá'.split('_'),
5051        longDateFormat : {
5052            LT : 'H:mm',
5053            LTS : 'LT:ss',
5054            L : 'DD/MM/YYYY',
5055            LL : 'D [de] MMMM [de] YYYY',
5056            LLL : 'D [de] MMMM [de] YYYY LT',
5057            LLLL : 'dddd, D [de] MMMM [de] YYYY LT'
5058        },
5059        calendar : {
5060            sameDay : function () {
5061                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
5062            },
5063            nextDay : function () {
5064                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
5065            },
5066            nextWeek : function () {
5067                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
5068            },
5069            lastDay : function () {
5070                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
5071            },
5072            lastWeek : function () {
5073                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
5074            },
5075            sameElse : 'L'
5076        },
5077        relativeTime : {
5078            future : 'en %s',
5079            past : 'hace %s',
5080            s : 'unos segundos',
5081            m : 'un minuto',
5082            mm : '%d minutos',
5083            h : 'una hora',
5084            hh : '%d horas',
5085            d : 'un día',
5086            dd : '%d días',
5087            M : 'un mes',
5088            MM : '%d meses',
5089            y : 'un año',
5090            yy : '%d años'
5091        },
5092        ordinalParse : /\d{1,2}º/,
5093        ordinal : '%dº',
5094        week : {
5095            dow : 1, // Monday is the first day of the week.
5096            doy : 4  // The week that contains Jan 4th is the first week of the year.
5097        }
5098    });
5099}));
5100// moment.js locale configuration
5101// locale : estonian (et)
5102// author : Henry Kehlmann : https://github.com/madhenry
5103// improvements : Illimar Tambek : https://github.com/ragulka
5104
5105(function (factory) {
5106    factory(moment);
5107}(function (moment) {
5108    function processRelativeTime(number, withoutSuffix, key, isFuture) {
5109        var format = {
5110            's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
5111            'm' : ['ühe minuti', 'üks minut'],
5112            'mm': [number + ' minuti', number + ' minutit'],
5113            'h' : ['ühe tunni', 'tund aega', 'üks tund'],
5114            'hh': [number + ' tunni', number + ' tundi'],
5115            'd' : ['ühe päeva', 'üks päev'],
5116            'M' : ['kuu aja', 'kuu aega', 'üks kuu'],
5117            'MM': [number + ' kuu', number + ' kuud'],
5118            'y' : ['ühe aasta', 'aasta', 'üks aasta'],
5119            'yy': [number + ' aasta', number + ' aastat']
5120        };
5121        if (withoutSuffix) {
5122            return format[key][2] ? format[key][2] : format[key][1];
5123        }
5124        return isFuture ? format[key][0] : format[key][1];
5125    }
5126
5127    return moment.defineLocale('et', {
5128        months        : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),
5129        monthsShort   : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
5130        weekdays      : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),
5131        weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),
5132        weekdaysMin   : 'P_E_T_K_N_R_L'.split('_'),
5133        longDateFormat : {
5134            LT   : 'H:mm',
5135            LTS : 'LT:ss',
5136            L    : 'DD.MM.YYYY',
5137            LL   : 'D. MMMM YYYY',
5138            LLL  : 'D. MMMM YYYY LT',
5139            LLLL : 'dddd, D. MMMM YYYY LT'
5140        },
5141        calendar : {
5142            sameDay  : '[Täna,] LT',
5143            nextDay  : '[Homme,] LT',
5144            nextWeek : '[Järgmine] dddd LT',
5145            lastDay  : '[Eile,] LT',
5146            lastWeek : '[Eelmine] dddd LT',
5147            sameElse : 'L'
5148        },
5149        relativeTime : {
5150            future : '%s pärast',
5151            past   : '%s tagasi',
5152            s      : processRelativeTime,
5153            m      : processRelativeTime,
5154            mm     : processRelativeTime,
5155            h      : processRelativeTime,
5156            hh     : processRelativeTime,
5157            d      : processRelativeTime,
5158            dd     : '%d päeva',
5159            M      : processRelativeTime,
5160            MM     : processRelativeTime,
5161            y      : processRelativeTime,
5162            yy     : processRelativeTime
5163        },
5164        ordinalParse: /\d{1,2}\./,
5165        ordinal : '%d.',
5166        week : {
5167            dow : 1, // Monday is the first day of the week.
5168            doy : 4  // The week that contains Jan 4th is the first week of the year.
5169        }
5170    });
5171}));
5172// moment.js locale configuration
5173// locale : euskara (eu)
5174// author : Eneko Illarramendi : https://github.com/eillarra
5175
5176(function (factory) {
5177    factory(moment);
5178}(function (moment) {
5179    return moment.defineLocale('eu', {
5180        months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),
5181        monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),
5182        weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),
5183        weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),
5184        weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),
5185        longDateFormat : {
5186            LT : 'HH:mm',
5187            LTS : 'LT:ss',
5188            L : 'YYYY-MM-DD',
5189            LL : 'YYYY[ko] MMMM[ren] D[a]',
5190            LLL : 'YYYY[ko] MMMM[ren] D[a] LT',
5191            LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] LT',
5192            l : 'YYYY-M-D',
5193            ll : 'YYYY[ko] MMM D[a]',
5194            lll : 'YYYY[ko] MMM D[a] LT',
5195            llll : 'ddd, YYYY[ko] MMM D[a] LT'
5196        },
5197        calendar : {
5198            sameDay : '[gaur] LT[etan]',
5199            nextDay : '[bihar] LT[etan]',
5200            nextWeek : 'dddd LT[etan]',
5201            lastDay : '[atzo] LT[etan]',
5202            lastWeek : '[aurreko] dddd LT[etan]',
5203            sameElse : 'L'
5204        },
5205        relativeTime : {
5206            future : '%s barru',
5207            past : 'duela %s',
5208            s : 'segundo batzuk',
5209            m : 'minutu bat',
5210            mm : '%d minutu',
5211            h : 'ordu bat',
5212            hh : '%d ordu',
5213            d : 'egun bat',
5214            dd : '%d egun',
5215            M : 'hilabete bat',
5216            MM : '%d hilabete',
5217            y : 'urte bat',
5218            yy : '%d urte'
5219        },
5220        ordinalParse: /\d{1,2}\./,
5221        ordinal : '%d.',
5222        week : {
5223            dow : 1, // Monday is the first day of the week.
5224            doy : 7  // The week that contains Jan 1st is the first week of the year.
5225        }
5226    });
5227}));
5228// moment.js locale configuration
5229// locale : Persian (fa)
5230// author : Ebrahim Byagowi : https://github.com/ebraminio
5231
5232(function (factory) {
5233    factory(moment);
5234}(function (moment) {
5235    var symbolMap = {
5236        '1': 'Û±',
5237        '2': 'Û²',
5238        '3': 'Û³',
5239        '4': 'Û´',
5240        '5': 'Ûµ',
5241        '6': 'Û¶',
5242        '7': 'Û·',
5243        '8': 'Û¸',
5244        '9': 'Û¹',
5245        '0': 'Û°'
5246    }, numberMap = {
5247        'Û±': '1',
5248        'Û²': '2',
5249        'Û³': '3',
5250        'Û´': '4',
5251        'Ûµ': '5',
5252        'Û¶': '6',
5253        'Û·': '7',
5254        'Û¸': '8',
5255        'Û¹': '9',
5256        'Û°': '0'
5257    };
5258
5259    return moment.defineLocale('fa', {
5260        months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
5261        monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
5262        weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
5263        weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
5264        weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),
5265        longDateFormat : {
5266            LT : 'HH:mm',
5267            LTS : 'LT:ss',
5268            L : 'DD/MM/YYYY',
5269            LL : 'D MMMM YYYY',
5270            LLL : 'D MMMM YYYY LT',
5271            LLLL : 'dddd, D MMMM YYYY LT'
5272        },
5273        meridiemParse: /قبل از ظهر|بعد از ظهر/,
5274        isPM: function (input) {
5275            return /بعد از ظهر/.test(input);
5276        },
5277        meridiem : function (hour, minute, isLower) {
5278            if (hour < 12) {
5279                return 'قبل از ظهر';
5280            } else {
5281                return 'بعد از ظهر';
5282            }
5283        },
5284        calendar : {
5285            sameDay : '[امروز ساعت] LT',
5286            nextDay : '[فردا ساعت] LT',
5287            nextWeek : 'dddd [ساعت] LT',
5288            lastDay : '[دیروز ساعت] LT',
5289            lastWeek : 'dddd [پیش] [ساعت] LT',
5290            sameElse : 'L'
5291        },
5292        relativeTime : {
5293            future : 'در %s',
5294            past : '%s پیش',
5295            s : 'چندین ثانیه',
5296            m : 'یک دقیقه',
5297            mm : '%d دقیقه',
5298            h : 'یک ساعت',
5299            hh : '%d ساعت',
5300            d : 'یک روز',
5301            dd : '%d روز',
5302            M : 'یک ماه',
5303            MM : '%d ماه',
5304            y : 'یک سال',
5305            yy : '%d سال'
5306        },
5307        preparse: function (string) {
5308            return string.replace(/[Û°-Û¹]/g, function (match) {
5309                return numberMap[match];
5310            }).replace(/،/g, ',');
5311        },
5312        postformat: function (string) {
5313            return string.replace(/\d/g, function (match) {
5314                return symbolMap[match];
5315            }).replace(/,/g, '،');
5316        },
5317        ordinalParse: /\d{1,2}Ù…/,
5318        ordinal : '%dÙ…',
5319        week : {
5320            dow : 6, // Saturday is the first day of the week.
5321            doy : 12 // The week that contains Jan 1st is the first week of the year.
5322        }
5323    });
5324}));
5325// moment.js locale configuration
5326// locale : finnish (fi)
5327// author : Tarmo Aidantausta : https://github.com/bleadof
5328
5329(function (factory) {
5330    factory(moment);
5331}(function (moment) {
5332    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),
5333        numbersFuture = [
5334            'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
5335            numbersPast[7], numbersPast[8], numbersPast[9]
5336        ];
5337
5338    function translate(number, withoutSuffix, key, isFuture) {
5339        var result = '';
5340        switch (key) {
5341        case 's':
5342            return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
5343        case 'm':
5344            return isFuture ? 'minuutin' : 'minuutti';
5345        case 'mm':
5346            result = isFuture ? 'minuutin' : 'minuuttia';
5347            break;
5348        case 'h':
5349            return isFuture ? 'tunnin' : 'tunti';
5350        case 'hh':
5351            result = isFuture ? 'tunnin' : 'tuntia';
5352            break;
5353        case 'd':
5354            return isFuture ? 'päivän' : 'päivä';
5355        case 'dd':
5356            result = isFuture ? 'päivän' : 'päivää';
5357            break;
5358        case 'M':
5359            return isFuture ? 'kuukauden' : 'kuukausi';
5360        case 'MM':
5361            result = isFuture ? 'kuukauden' : 'kuukautta';
5362            break;
5363        case 'y':
5364            return isFuture ? 'vuoden' : 'vuosi';
5365        case 'yy':
5366            result = isFuture ? 'vuoden' : 'vuotta';
5367            break;
5368        }
5369        result = verbalNumber(number, isFuture) + ' ' + result;
5370        return result;
5371    }
5372
5373    function verbalNumber(number, isFuture) {
5374        return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;
5375    }
5376
5377    return moment.defineLocale('fi', {
5378        months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
5379        monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
5380        weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
5381        weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),
5382        weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),
5383        longDateFormat : {
5384            LT : 'HH.mm',
5385            LTS : 'HH.mm.ss',
5386            L : 'DD.MM.YYYY',
5387            LL : 'Do MMMM[ta] YYYY',
5388            LLL : 'Do MMMM[ta] YYYY, [klo] LT',
5389            LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] LT',
5390            l : 'D.M.YYYY',
5391            ll : 'Do MMM YYYY',
5392            lll : 'Do MMM YYYY, [klo] LT',
5393            llll : 'ddd, Do MMM YYYY, [klo] LT'
5394        },
5395        calendar : {
5396            sameDay : '[tänään] [klo] LT',
5397            nextDay : '[huomenna] [klo] LT',
5398            nextWeek : 'dddd [klo] LT',
5399            lastDay : '[eilen] [klo] LT',
5400            lastWeek : '[viime] dddd[na] [klo] LT',
5401            sameElse : 'L'
5402        },
5403        relativeTime : {
5404            future : '%s päästä',
5405            past : '%s sitten',
5406            s : translate,
5407            m : translate,
5408            mm : translate,
5409            h : translate,
5410            hh : translate,
5411            d : translate,
5412            dd : translate,
5413            M : translate,
5414            MM : translate,
5415            y : translate,
5416            yy : translate
5417        },
5418        ordinalParse: /\d{1,2}\./,
5419        ordinal : '%d.',
5420        week : {
5421            dow : 1, // Monday is the first day of the week.
5422            doy : 4  // The week that contains Jan 4th is the first week of the year.
5423        }
5424    });
5425}));
5426// moment.js locale configuration
5427// locale : faroese (fo)
5428// author : Ragnar Johannesen : https://github.com/ragnar123
5429
5430(function (factory) {
5431    factory(moment);
5432}(function (moment) {
5433    return moment.defineLocale('fo', {
5434        months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
5435        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
5436        weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),
5437        weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
5438        weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),
5439        longDateFormat : {
5440            LT : 'HH:mm',
5441            LTS : 'LT:ss',
5442            L : 'DD/MM/YYYY',
5443            LL : 'D MMMM YYYY',
5444            LLL : 'D MMMM YYYY LT',
5445            LLLL : 'dddd D. MMMM, YYYY LT'
5446        },
5447        calendar : {
5448            sameDay : '[Í dag kl.] LT',
5449            nextDay : '[Í morgin kl.] LT',
5450            nextWeek : 'dddd [kl.] LT',
5451            lastDay : '[Í gjár kl.] LT',
5452            lastWeek : '[síðstu] dddd [kl] LT',
5453            sameElse : 'L'
5454        },
5455        relativeTime : {
5456            future : 'um %s',
5457            past : '%s síðani',
5458            s : 'fá sekund',
5459            m : 'ein minutt',
5460            mm : '%d minuttir',
5461            h : 'ein tími',
5462            hh : '%d tímar',
5463            d : 'ein dagur',
5464            dd : '%d dagar',
5465            M : 'ein mánaði',
5466            MM : '%d mánaðir',
5467            y : 'eitt ár',
5468            yy : '%d ár'
5469        },
5470        ordinalParse: /\d{1,2}\./,
5471        ordinal : '%d.',
5472        week : {
5473            dow : 1, // Monday is the first day of the week.
5474            doy : 4  // The week that contains Jan 4th is the first week of the year.
5475        }
5476    });
5477}));
5478// moment.js locale configuration
5479// locale : canadian french (fr-ca)
5480// author : Jonathan Abourbih : https://github.com/jonbca
5481
5482(function (factory) {
5483    factory(moment);
5484}(function (moment) {
5485    return moment.defineLocale('fr-ca', {
5486        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
5487        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
5488        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
5489        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
5490        weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
5491        longDateFormat : {
5492            LT : 'HH:mm',
5493            LTS : 'LT:ss',
5494            L : 'YYYY-MM-DD',
5495            LL : 'D MMMM YYYY',
5496            LLL : 'D MMMM YYYY LT',
5497            LLLL : 'dddd D MMMM YYYY LT'
5498        },
5499        calendar : {
5500            sameDay: '[Aujourd\'hui à ] LT',
5501            nextDay: '[Demain à ] LT',
5502            nextWeek: 'dddd [Ã ] LT',
5503            lastDay: '[Hier à ] LT',
5504            lastWeek: 'dddd [dernier à ] LT',
5505            sameElse: 'L'
5506        },
5507        relativeTime : {
5508            future : 'dans %s',
5509            past : 'il y a %s',
5510            s : 'quelques secondes',
5511            m : 'une minute',
5512            mm : '%d minutes',
5513            h : 'une heure',
5514            hh : '%d heures',
5515            d : 'un jour',
5516            dd : '%d jours',
5517            M : 'un mois',
5518            MM : '%d mois',
5519            y : 'un an',
5520            yy : '%d ans'
5521        },
5522        ordinalParse: /\d{1,2}(er|)/,
5523        ordinal : function (number) {
5524            return number + (number === 1 ? 'er' : '');
5525        }
5526    });
5527}));
5528// moment.js locale configuration
5529// locale : french (fr)
5530// author : John Fischer : https://github.com/jfroffice
5531
5532(function (factory) {
5533    factory(moment);
5534}(function (moment) {
5535    return moment.defineLocale('fr', {
5536        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
5537        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
5538        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
5539        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
5540        weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
5541        longDateFormat : {
5542            LT : 'HH:mm',
5543            LTS : 'LT:ss',
5544            L : 'DD/MM/YYYY',
5545            LL : 'D MMMM YYYY',
5546            LLL : 'D MMMM YYYY LT',
5547            LLLL : 'dddd D MMMM YYYY LT'
5548        },
5549        calendar : {
5550            sameDay: '[Aujourd\'hui à ] LT',
5551            nextDay: '[Demain à ] LT',
5552            nextWeek: 'dddd [Ã ] LT',
5553            lastDay: '[Hier à ] LT',
5554            lastWeek: 'dddd [dernier à ] LT',
5555            sameElse: 'L'
5556        },
5557        relativeTime : {
5558            future : 'dans %s',
5559            past : 'il y a %s',
5560            s : 'quelques secondes',
5561            m : 'une minute',
5562            mm : '%d minutes',
5563            h : 'une heure',
5564            hh : '%d heures',
5565            d : 'un jour',
5566            dd : '%d jours',
5567            M : 'un mois',
5568            MM : '%d mois',
5569            y : 'un an',
5570            yy : '%d ans'
5571        },
5572        ordinalParse: /\d{1,2}(er|)/,
5573        ordinal : function (number) {
5574            return number + (number === 1 ? 'er' : '');
5575        },
5576        week : {
5577            dow : 1, // Monday is the first day of the week.
5578            doy : 4  // The week that contains Jan 4th is the first week of the year.
5579        }
5580    });
5581}));
5582// moment.js locale configuration
5583// locale : frisian (fy)
5584// author : Robin van der Vliet : https://github.com/robin0van0der0v
5585
5586(function (factory) {
5587    factory(moment);
5588}(function (moment) {
5589    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
5590        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
5591
5592    return moment.defineLocale('fy', {
5593        months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),
5594        monthsShort : function (m, format) {
5595            if (/-MMM-/.test(format)) {
5596                return monthsShortWithoutDots[m.month()];
5597            } else {
5598                return monthsShortWithDots[m.month()];
5599            }
5600        },
5601        weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),
5602        weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),
5603        weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
5604        longDateFormat : {
5605            LT : 'HH:mm',
5606            LTS : 'LT:ss',
5607            L : 'DD-MM-YYYY',
5608            LL : 'D MMMM YYYY',
5609            LLL : 'D MMMM YYYY LT',
5610            LLLL : 'dddd D MMMM YYYY LT'
5611        },
5612        calendar : {
5613            sameDay: '[hjoed om] LT',
5614            nextDay: '[moarn om] LT',
5615            nextWeek: 'dddd [om] LT',
5616            lastDay: '[juster om] LT',
5617            lastWeek: '[ôfrûne] dddd [om] LT',
5618            sameElse: 'L'
5619        },
5620        relativeTime : {
5621            future : 'oer %s',
5622            past : '%s lyn',
5623            s : 'in pear sekonden',
5624            m : 'ien minút',
5625            mm : '%d minuten',
5626            h : 'ien oere',
5627            hh : '%d oeren',
5628            d : 'ien dei',
5629            dd : '%d dagen',
5630            M : 'ien moanne',
5631            MM : '%d moannen',
5632            y : 'ien jier',
5633            yy : '%d jierren'
5634        },
5635        ordinalParse: /\d{1,2}(ste|de)/,
5636        ordinal : function (number) {
5637            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
5638        },
5639        week : {
5640            dow : 1, // Monday is the first day of the week.
5641            doy : 4  // The week that contains Jan 4th is the first week of the year.
5642        }
5643    });
5644}));
5645// moment.js locale configuration
5646// locale : galician (gl)
5647// author : Juan G. Hurtado : https://github.com/juanghurtado
5648
5649(function (factory) {
5650    factory(moment);
5651}(function (moment) {
5652    return moment.defineLocale('gl', {
5653        months : 'Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro'.split('_'),
5654        monthsShort : 'Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.'.split('_'),
5655        weekdays : 'Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado'.split('_'),
5656        weekdaysShort : 'Dom._Lun._Mar._Mér._Xov._Ven._Sáb.'.split('_'),
5657        weekdaysMin : 'Do_Lu_Ma_Mé_Xo_Ve_Sá'.split('_'),
5658        longDateFormat : {
5659            LT : 'H:mm',
5660            LTS : 'LT:ss',
5661            L : 'DD/MM/YYYY',
5662            LL : 'D MMMM YYYY',
5663            LLL : 'D MMMM YYYY LT',
5664            LLLL : 'dddd D MMMM YYYY LT'
5665        },
5666        calendar : {
5667            sameDay : function () {
5668                return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
5669            },
5670            nextDay : function () {
5671                return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
5672            },
5673            nextWeek : function () {
5674                return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
5675            },
5676            lastDay : function () {
5677                return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';
5678            },
5679            lastWeek : function () {
5680                return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
5681            },
5682            sameElse : 'L'
5683        },
5684        relativeTime : {
5685            future : function (str) {
5686                if (str === 'uns segundos') {
5687                    return 'nuns segundos';
5688                }
5689                return 'en ' + str;
5690            },
5691            past : 'hai %s',
5692            s : 'uns segundos',
5693            m : 'un minuto',
5694            mm : '%d minutos',
5695            h : 'unha hora',
5696            hh : '%d horas',
5697            d : 'un día',
5698            dd : '%d días',
5699            M : 'un mes',
5700            MM : '%d meses',
5701            y : 'un ano',
5702            yy : '%d anos'
5703        },
5704        ordinalParse : /\d{1,2}º/,
5705        ordinal : '%dº',
5706        week : {
5707            dow : 1, // Monday is the first day of the week.
5708            doy : 7  // The week that contains Jan 1st is the first week of the year.
5709        }
5710    });
5711}));
5712// moment.js locale configuration
5713// locale : Hebrew (he)
5714// author : Tomer Cohen : https://github.com/tomer
5715// author : Moshe Simantov : https://github.com/DevelopmentIL
5716// author : Tal Ater : https://github.com/TalAter
5717
5718(function (factory) {
5719    factory(moment);
5720}(function (moment) {
5721    return moment.defineLocale('he', {
5722        months : '×™× ×•××¨_פברואר_מרץ_אפריל_מאי_×™×•× ×™_יולי_אוגוסט_ספטמבר_אוקטובר_× ×•×‘×ž×‘×¨_דצמבר'.split('_'),
5723        monthsShort : '×™× ×•×³_פבר׳_מרץ_אפר׳_מאי_×™×•× ×™_יולי_אוג׳_ספט׳_אוק׳_× ×•×‘×³_דצמ׳'.split('_'),
5724        weekdays : 'ראשון_×©× ×™_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
5725        weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
5726        weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),
5727        longDateFormat : {
5728            LT : 'HH:mm',
5729            LTS : 'LT:ss',
5730            L : 'DD/MM/YYYY',
5731            LL : 'D [ב]MMMM YYYY',
5732            LLL : 'D [ב]MMMM YYYY LT',
5733            LLLL : 'dddd, D [ב]MMMM YYYY LT',
5734            l : 'D/M/YYYY',
5735            ll : 'D MMM YYYY',
5736            lll : 'D MMM YYYY LT',
5737            llll : 'ddd, D MMM YYYY LT'
5738        },
5739        calendar : {
5740            sameDay : '[היום ב־]LT',
5741            nextDay : '[מחר ב־]LT',
5742            nextWeek : 'dddd [בשעה] LT',
5743            lastDay : '[אתמול ב־]LT',
5744            lastWeek : '[ביום] dddd [האחרון בשעה] LT',
5745            sameElse : 'L'
5746        },
5747        relativeTime : {
5748            future : 'בעוד %s',
5749            past : '×œ×¤× ×™ %s',
5750            s : 'מספר ×©× ×™×•×ª',
5751            m : 'דקה',
5752            mm : '%d דקות',
5753            h : 'שעה',
5754            hh : function (number) {
5755                if (number === 2) {
5756                    return 'שעתיים';
5757                }
5758                return number + ' שעות';
5759            },
5760            d : 'יום',
5761            dd : function (number) {
5762                if (number === 2) {
5763                    return 'יומיים';
5764                }
5765                return number + ' ימים';
5766            },
5767            M : 'חודש',
5768            MM : function (number) {
5769                if (number === 2) {
5770                    return 'חודשיים';
5771                }
5772                return number + ' חודשים';
5773            },
5774            y : '×©× ×”',
5775            yy : function (number) {
5776                if (number === 2) {
5777                    return '×©× ×ª×™×™×';
5778                } else if (number % 10 === 0 && number !== 10) {
5779                    return number + ' ×©× ×”';
5780                }
5781                return number + ' ×©× ×™×';
5782            }
5783        }
5784    });
5785}));
5786// moment.js locale configuration
5787// locale : hindi (hi)
5788// author : Mayank Singhal : https://github.com/mayanksinghal
5789
5790(function (factory) {
5791    factory(moment);
5792}(function (moment) {
5793    var symbolMap = {
5794        '1': '१',
5795        '2': '२',
5796        '3': '३',
5797        '4': '४',
5798        '5': '५',
5799        '6': '६',
5800        '7': '७',
5801        '8': '८',
5802        '9': '९',
5803        '0': '०'
5804    },
5805    numberMap = {
5806        '१': '1',
5807        '२': '2',
5808        '३': '3',
5809        '४': '4',
5810        '५': '5',
5811        '६': '6',
5812        '७': '7',
5813        '८': '8',
5814        '९': '9',
5815        '०': '0'
5816    };
5817
5818    return moment.defineLocale('hi', {
5819        months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),
5820        monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
5821        weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
5822        weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
5823        weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
5824        longDateFormat : {
5825            LT : 'A h:mm बजे',
5826            LTS : 'A h:mm:ss बजे',
5827            L : 'DD/MM/YYYY',
5828            LL : 'D MMMM YYYY',
5829            LLL : 'D MMMM YYYY, LT',
5830            LLLL : 'dddd, D MMMM YYYY, LT'
5831        },
5832        calendar : {
5833            sameDay : '[आज] LT',
5834            nextDay : '[कल] LT',
5835            nextWeek : 'dddd, LT',
5836            lastDay : '[कल] LT',
5837            lastWeek : '[पिछले] dddd, LT',
5838            sameElse : 'L'
5839        },
5840        relativeTime : {
5841            future : '%s में',
5842            past : '%s पहले',
5843            s : 'कुछ ही क्षण',
5844            m : 'एक मिनट',
5845            mm : '%d मिनट',
5846            h : 'एक घंटा',
5847            hh : '%d घंटे',
5848            d : 'एक दिन',
5849            dd : '%d दिन',
5850            M : 'एक महीने',
5851            MM : '%d महीने',
5852            y : 'एक वर्ष',
5853            yy : '%d वर्ष'
5854        },
5855        preparse: function (string) {
5856            return string.replace(/[१२३४५६७८९०]/g, function (match) {
5857                return numberMap[match];
5858            });
5859        },
5860        postformat: function (string) {
5861            return string.replace(/\d/g, function (match) {
5862                return symbolMap[match];
5863            });
5864        },
5865        // Hindi notation for meridiems are quite fuzzy in practice. While there exists
5866        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
5867        meridiemParse: /रात|सुबह|दोपहर|शाम/,
5868        meridiemHour : function (hour, meridiem) {
5869            if (hour === 12) {
5870                hour = 0;
5871            }
5872            if (meridiem === 'रात') {
5873                return hour < 4 ? hour : hour + 12;
5874            } else if (meridiem === 'सुबह') {
5875                return hour;
5876            } else if (meridiem === 'दोपहर') {
5877                return hour >= 10 ? hour : hour + 12;
5878            } else if (meridiem === 'शाम') {
5879                return hour + 12;
5880            }
5881        },
5882        meridiem : function (hour, minute, isLower) {
5883            if (hour < 4) {
5884                return 'रात';
5885            } else if (hour < 10) {
5886                return 'सुबह';
5887            } else if (hour < 17) {
5888                return 'दोपहर';
5889            } else if (hour < 20) {
5890                return 'शाम';
5891            } else {
5892                return 'रात';
5893            }
5894        },
5895        week : {
5896            dow : 0, // Sunday is the first day of the week.
5897            doy : 6  // The week that contains Jan 1st is the first week of the year.
5898        }
5899    });
5900}));
5901// moment.js locale configuration
5902// locale : hrvatski (hr)
5903// author : Bojan Marković : https://github.com/bmarkovic
5904
5905// based on (sl) translation by Robert Sedovšek
5906
5907(function (factory) {
5908    factory(moment);
5909}(function (moment) {
5910    function translate(number, withoutSuffix, key) {
5911        var result = number + ' ';
5912        switch (key) {
5913        case 'm':
5914            return withoutSuffix ? 'jedna minuta' : 'jedne minute';
5915        case 'mm':
5916            if (number === 1) {
5917                result += 'minuta';
5918            } else if (number === 2 || number === 3 || number === 4) {
5919                result += 'minute';
5920            } else {
5921                result += 'minuta';
5922            }
5923            return result;
5924        case 'h':
5925            return withoutSuffix ? 'jedan sat' : 'jednog sata';
5926        case 'hh':
5927            if (number === 1) {
5928                result += 'sat';
5929            } else if (number === 2 || number === 3 || number === 4) {
5930                result += 'sata';
5931            } else {
5932                result += 'sati';
5933            }
5934            return result;
5935        case 'dd':
5936            if (number === 1) {
5937                result += 'dan';
5938            } else {
5939                result += 'dana';
5940            }
5941            return result;
5942        case 'MM':
5943            if (number === 1) {
5944                result += 'mjesec';
5945            } else if (number === 2 || number === 3 || number === 4) {
5946                result += 'mjeseca';
5947            } else {
5948                result += 'mjeseci';
5949            }
5950            return result;
5951        case 'yy':
5952            if (number === 1) {
5953                result += 'godina';
5954            } else if (number === 2 || number === 3 || number === 4) {
5955                result += 'godine';
5956            } else {
5957                result += 'godina';
5958            }
5959            return result;
5960        }
5961    }
5962
5963    return moment.defineLocale('hr', {
5964        months : 'sječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_'),
5965        monthsShort : 'sje._vel._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),
5966        weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
5967        weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
5968        weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
5969        longDateFormat : {
5970            LT : 'H:mm',
5971            LTS : 'LT:ss',
5972            L : 'DD. MM. YYYY',
5973            LL : 'D. MMMM YYYY',
5974            LLL : 'D. MMMM YYYY LT',
5975            LLLL : 'dddd, D. MMMM YYYY LT'
5976        },
5977        calendar : {
5978            sameDay  : '[danas u] LT',
5979            nextDay  : '[sutra u] LT',
5980
5981            nextWeek : function () {
5982                switch (this.day()) {
5983                case 0:
5984                    return '[u] [nedjelju] [u] LT';
5985                case 3:
5986                    return '[u] [srijedu] [u] LT';
5987                case 6:
5988                    return '[u] [subotu] [u] LT';
5989                case 1:
5990                case 2:
5991                case 4:
5992                case 5:
5993                    return '[u] dddd [u] LT';
5994                }
5995            },
5996            lastDay  : '[jučer u] LT',
5997            lastWeek : function () {
5998                switch (this.day()) {
5999                case 0:
6000                case 3:
6001                    return '[prošlu] dddd [u] LT';
6002                case 6:
6003                    return '[prošle] [subote] [u] LT';
6004                case 1:
6005                case 2:
6006                case 4:
6007                case 5:
6008                    return '[prošli] dddd [u] LT';
6009                }
6010            },
6011            sameElse : 'L'
6012        },
6013        relativeTime : {
6014            future : 'za %s',
6015            past   : 'prije %s',
6016            s      : 'par sekundi',
6017            m      : translate,
6018            mm     : translate,
6019            h      : translate,
6020            hh     : translate,
6021            d      : 'dan',
6022            dd     : translate,
6023            M      : 'mjesec',
6024            MM     : translate,
6025            y      : 'godinu',
6026            yy     : translate
6027        },
6028        ordinalParse: /\d{1,2}\./,
6029        ordinal : '%d.',
6030        week : {
6031            dow : 1, // Monday is the first day of the week.
6032            doy : 7  // The week that contains Jan 1st is the first week of the year.
6033        }
6034    });
6035}));
6036// moment.js locale configuration
6037// locale : hungarian (hu)
6038// author : Adam Brunner : https://github.com/adambrunner
6039
6040(function (factory) {
6041    factory(moment);
6042}(function (moment) {
6043    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
6044
6045    function translate(number, withoutSuffix, key, isFuture) {
6046        var num = number,
6047            suffix;
6048
6049        switch (key) {
6050        case 's':
6051            return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';
6052        case 'm':
6053            return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
6054        case 'mm':
6055            return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
6056        case 'h':
6057            return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
6058        case 'hh':
6059            return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
6060        case 'd':
6061            return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
6062        case 'dd':
6063            return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
6064        case 'M':
6065            return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
6066        case 'MM':
6067            return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
6068        case 'y':
6069            return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
6070        case 'yy':
6071            return num + (isFuture || withoutSuffix ? ' év' : ' éve');
6072        }
6073
6074        return '';
6075    }
6076
6077    function week(isFuture) {
6078        return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';
6079    }
6080
6081    return moment.defineLocale('hu', {
6082        months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),
6083        monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),
6084        weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
6085        weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
6086        weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),
6087        longDateFormat : {
6088            LT : 'H:mm',
6089            LTS : 'LT:ss',
6090            L : 'YYYY.MM.DD.',
6091            LL : 'YYYY. MMMM D.',
6092            LLL : 'YYYY. MMMM D., LT',
6093            LLLL : 'YYYY. MMMM D., dddd LT'
6094        },
6095        meridiemParse: /de|du/i,
6096        isPM: function (input) {
6097            return input.charAt(1).toLowerCase() === 'u';
6098        },
6099        meridiem : function (hours, minutes, isLower) {
6100            if (hours < 12) {
6101                return isLower === true ? 'de' : 'DE';
6102            } else {
6103                return isLower === true ? 'du' : 'DU';
6104            }
6105        },
6106        calendar : {
6107            sameDay : '[ma] LT[-kor]',
6108            nextDay : '[holnap] LT[-kor]',
6109            nextWeek : function () {
6110                return week.call(this, true);
6111            },
6112            lastDay : '[tegnap] LT[-kor]',
6113            lastWeek : function () {
6114                return week.call(this, false);
6115            },
6116            sameElse : 'L'
6117        },
6118        relativeTime : {
6119            future : '%s múlva',
6120            past : '%s',
6121            s : translate,
6122            m : translate,
6123            mm : translate,
6124            h : translate,
6125            hh : translate,
6126            d : translate,
6127            dd : translate,
6128            M : translate,
6129            MM : translate,
6130            y : translate,
6131            yy : translate
6132        },
6133        ordinalParse: /\d{1,2}\./,
6134        ordinal : '%d.',
6135        week : {
6136            dow : 1, // Monday is the first day of the week.
6137            doy : 7  // The week that contains Jan 1st is the first week of the year.
6138        }
6139    });
6140}));
6141// moment.js locale configuration
6142// locale : Armenian (hy-am)
6143// author : Armendarabyan : https://github.com/armendarabyan
6144
6145(function (factory) {
6146    factory(moment);
6147}(function (moment) {
6148    function monthsCaseReplace(m, format) {
6149        var months = {
6150            'nominative': 'Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€_Õ´Õ¡Ö€Õ¿_Õ¡ÕºÖ€Õ«Õ¬_Õ´Õ¡ÕµÕ«Õ½_Õ°Õ¸Ö‚Õ¶Õ«Õ½_Õ°Õ¸Ö‚Õ¬Õ«Õ½_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€'.split('_'),
6151            'accusative': 'Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€Õ«_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€Õ«_Õ´Õ¡Ö€Õ¿Õ«_Õ¡ÕºÖ€Õ«Õ¬Õ«_Õ´Õ¡ÕµÕ«Õ½Õ«_Õ°Õ¸Ö‚Õ¶Õ«Õ½Õ«_Õ°Õ¸Ö‚Õ¬Õ«Õ½Õ«_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½Õ«_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«'.split('_')
6152        },
6153
6154        nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
6155            'accusative' :
6156            'nominative';
6157
6158        return months[nounCase][m.month()];
6159    }
6160
6161    function monthsShortCaseReplace(m, format) {
6162        var monthsShort = 'Õ°Õ¶Õ¾_ÖƒÕ¿Ö€_Õ´Ö€Õ¿_Õ¡ÕºÖ€_Õ´ÕµÕ½_Õ°Õ¶Õ½_Õ°Õ¬Õ½_Ö…Õ£Õ½_Õ½ÕºÕ¿_Õ°Õ¯Õ¿_Õ¶Õ´Õ¢_Õ¤Õ¯Õ¿'.split('_');
6163
6164        return monthsShort[m.month()];
6165    }
6166
6167    function weekdaysCaseReplace(m, format) {
6168        var weekdays = 'Õ¯Õ«Ö€Õ¡Õ¯Õ«_Õ¥Ö€Õ¯Õ¸Ö‚Õ·Õ¡Õ¢Õ©Õ«_Õ¥Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«_Õ¹Õ¸Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«_Õ°Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«_Õ¸Ö‚Ö€Õ¢Õ¡Õ©_Õ·Õ¡Õ¢Õ¡Õ©'.split('_');
6169
6170        return weekdays[m.day()];
6171    }
6172
6173    return moment.defineLocale('hy-am', {
6174        months : monthsCaseReplace,
6175        monthsShort : monthsShortCaseReplace,
6176        weekdays : weekdaysCaseReplace,
6177        weekdaysShort : 'Õ¯Ö€Õ¯_Õ¥Ö€Õ¯_Õ¥Ö€Ö„_Õ¹Ö€Ö„_Õ°Õ¶Õ£_Õ¸Ö‚Ö€Õ¢_Õ·Õ¢Õ©'.split('_'),
6178        weekdaysMin : 'Õ¯Ö€Õ¯_Õ¥Ö€Õ¯_Õ¥Ö€Ö„_Õ¹Ö€Ö„_Õ°Õ¶Õ£_Õ¸Ö‚Ö€Õ¢_Õ·Õ¢Õ©'.split('_'),
6179        longDateFormat : {
6180            LT : 'HH:mm',
6181            LTS : 'LT:ss',
6182            L : 'DD.MM.YYYY',
6183            LL : 'D MMMM YYYY Õ©.',
6184            LLL : 'D MMMM YYYY Õ©., LT',
6185            LLLL : 'dddd, D MMMM YYYY Õ©., LT'
6186        },
6187        calendar : {
6188            sameDay: '[Õ¡ÕµÕ½Ö…Ö€] LT',
6189            nextDay: '[Õ¾Õ¡Õ²Õ¨] LT',
6190            lastDay: '[Õ¥Ö€Õ¥Õ¯] LT',
6191            nextWeek: function () {
6192                return 'dddd [Ö…Ö€Õ¨ ÕªÕ¡Õ´Õ¨] LT';
6193            },
6194            lastWeek: function () {
6195                return '[անցած] dddd [օրը ժամը] LT';
6196            },
6197            sameElse: 'L'
6198        },
6199        relativeTime : {
6200            future : '%s Õ°Õ¥Õ¿Õ¸',
6201            past : '%s Õ¡Õ¼Õ¡Õ»',
6202            s : 'Õ´Õ« Ö„Õ¡Õ¶Õ« Õ¾Õ¡ÕµÖ€Õ¯ÕµÕ¡Õ¶',
6203            m : 'Ö€Õ¸ÕºÕ¥',
6204            mm : '%d Ö€Õ¸ÕºÕ¥',
6205            h : 'ÕªÕ¡Õ´',
6206            hh : '%d ÕªÕ¡Õ´',
6207            d : 'Ö…Ö€',
6208            dd : '%d Ö…Ö€',
6209            M : 'Õ¡Õ´Õ«Õ½',
6210            MM : '%d Õ¡Õ´Õ«Õ½',
6211            y : 'Õ¿Õ¡Ö€Õ«',
6212            yy : '%d Õ¿Õ¡Ö€Õ«'
6213        },
6214
6215        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
6216        isPM: function (input) {
6217            return /^(ցերեկվա|երեկոյան)$/.test(input);
6218        },
6219        meridiem : function (hour) {
6220            if (hour < 4) {
6221                return 'Õ£Õ«Õ·Õ¥Ö€Õ¾Õ¡';
6222            } else if (hour < 12) {
6223                return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';
6224            } else if (hour < 17) {
6225                return 'ցերեկվա';
6226            } else {
6227                return 'Õ¥Ö€Õ¥Õ¯Õ¸ÕµÕ¡Õ¶';
6228            }
6229        },
6230
6231        ordinalParse: /\d{1,2}|\d{1,2}-(Õ«Õ¶|Ö€Õ¤)/,
6232        ordinal: function (number, period) {
6233            switch (period) {
6234            case 'DDD':
6235            case 'w':
6236            case 'W':
6237            case 'DDDo':
6238                if (number === 1) {
6239                    return number + '-Õ«Õ¶';
6240                }
6241                return number + '-Ö€Õ¤';
6242            default:
6243                return number;
6244            }
6245        },
6246
6247        week : {
6248            dow : 1, // Monday is the first day of the week.
6249            doy : 7  // The week that contains Jan 1st is the first week of the year.
6250        }
6251    });
6252}));
6253// moment.js locale configuration
6254// locale : Bahasa Indonesia (id)
6255// author : Mohammad Satrio Utomo : https://github.com/tyok
6256// reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
6257
6258(function (factory) {
6259    factory(moment);
6260}(function (moment) {
6261    return moment.defineLocale('id', {
6262        months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),
6263        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'),
6264        weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
6265        weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
6266        weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
6267        longDateFormat : {
6268            LT : 'HH.mm',
6269            LTS : 'LT.ss',
6270            L : 'DD/MM/YYYY',
6271            LL : 'D MMMM YYYY',
6272            LLL : 'D MMMM YYYY [pukul] LT',
6273            LLLL : 'dddd, D MMMM YYYY [pukul] LT'
6274        },
6275        meridiemParse: /pagi|siang|sore|malam/,
6276        meridiemHour : function (hour, meridiem) {
6277            if (hour === 12) {
6278                hour = 0;
6279            }
6280            if (meridiem === 'pagi') {
6281                return hour;
6282            } else if (meridiem === 'siang') {
6283                return hour >= 11 ? hour : hour + 12;
6284            } else if (meridiem === 'sore' || meridiem === 'malam') {
6285                return hour + 12;
6286            }
6287        },
6288        meridiem : function (hours, minutes, isLower) {
6289            if (hours < 11) {
6290                return 'pagi';
6291            } else if (hours < 15) {
6292                return 'siang';
6293            } else if (hours < 19) {
6294                return 'sore';
6295            } else {
6296                return 'malam';
6297            }
6298        },
6299        calendar : {
6300            sameDay : '[Hari ini pukul] LT',
6301            nextDay : '[Besok pukul] LT',
6302            nextWeek : 'dddd [pukul] LT',
6303            lastDay : '[Kemarin pukul] LT',
6304            lastWeek : 'dddd [lalu pukul] LT',
6305            sameElse : 'L'
6306        },
6307        relativeTime : {
6308            future : 'dalam %s',
6309            past : '%s yang lalu',
6310            s : 'beberapa detik',
6311            m : 'semenit',
6312            mm : '%d menit',
6313            h : 'sejam',
6314            hh : '%d jam',
6315            d : 'sehari',
6316            dd : '%d hari',
6317            M : 'sebulan',
6318            MM : '%d bulan',
6319            y : 'setahun',
6320            yy : '%d tahun'
6321        },
6322        week : {
6323            dow : 1, // Monday is the first day of the week.
6324            doy : 7  // The week that contains Jan 1st is the first week of the year.
6325        }
6326    });
6327}));
6328// moment.js locale configuration
6329// locale : icelandic (is)
6330// author : Hinrik Örn Sigurðsson : https://github.com/hinrik
6331
6332(function (factory) {
6333    factory(moment);
6334}(function (moment) {
6335    function plural(n) {
6336        if (n % 100 === 11) {
6337            return true;
6338        } else if (n % 10 === 1) {
6339            return false;
6340        }
6341        return true;
6342    }
6343
6344    function translate(number, withoutSuffix, key, isFuture) {
6345        var result = number + ' ';
6346        switch (key) {
6347        case 's':
6348            return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';
6349        case 'm':
6350            return withoutSuffix ? 'mínúta' : 'mínútu';
6351        case 'mm':
6352            if (plural(number)) {
6353                return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');
6354            } else if (withoutSuffix) {
6355                return result + 'mínúta';
6356            }
6357            return result + 'mínútu';
6358        case 'hh':
6359            if (plural(number)) {
6360                return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');
6361            }
6362            return result + 'klukkustund';
6363        case 'd':
6364            if (withoutSuffix) {
6365                return 'dagur';
6366            }
6367            return isFuture ? 'dag' : 'degi';
6368        case 'dd':
6369            if (plural(number)) {
6370                if (withoutSuffix) {
6371                    return result + 'dagar';
6372                }
6373                return result + (isFuture ? 'daga' : 'dögum');
6374            } else if (withoutSuffix) {
6375                return result + 'dagur';
6376            }
6377            return result + (isFuture ? 'dag' : 'degi');
6378        case 'M':
6379            if (withoutSuffix) {
6380                return 'mánuður';
6381            }
6382            return isFuture ? 'mánuð' : 'mánuði';
6383        case 'MM':
6384            if (plural(number)) {
6385                if (withoutSuffix) {
6386                    return result + 'mánuðir';
6387                }
6388                return result + (isFuture ? 'mánuði' : 'mánuðum');
6389            } else if (withoutSuffix) {
6390                return result + 'mánuður';
6391            }
6392            return result + (isFuture ? 'mánuð' : 'mánuði');
6393        case 'y':
6394            return withoutSuffix || isFuture ? 'ár' : 'ári';
6395        case 'yy':
6396            if (plural(number)) {
6397                return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
6398            }
6399            return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
6400        }
6401    }
6402
6403    return moment.defineLocale('is', {
6404        months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),
6405        monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
6406        weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),
6407        weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
6408        weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
6409        longDateFormat : {
6410            LT : 'H:mm',
6411            LTS : 'LT:ss',
6412            L : 'DD/MM/YYYY',
6413            LL : 'D. MMMM YYYY',
6414            LLL : 'D. MMMM YYYY [kl.] LT',
6415            LLLL : 'dddd, D. MMMM YYYY [kl.] LT'
6416        },
6417        calendar : {
6418            sameDay : '[í dag kl.] LT',
6419            nextDay : '[á morgun kl.] LT',
6420            nextWeek : 'dddd [kl.] LT',
6421            lastDay : '[í gær kl.] LT',
6422            lastWeek : '[síðasta] dddd [kl.] LT',
6423            sameElse : 'L'
6424        },
6425        relativeTime : {
6426            future : 'eftir %s',
6427            past : 'fyrir %s síðan',
6428            s : translate,
6429            m : translate,
6430            mm : translate,
6431            h : 'klukkustund',
6432            hh : translate,
6433            d : translate,
6434            dd : translate,
6435            M : translate,
6436            MM : translate,
6437            y : translate,
6438            yy : translate
6439        },
6440        ordinalParse: /\d{1,2}\./,
6441        ordinal : '%d.',
6442        week : {
6443            dow : 1, // Monday is the first day of the week.
6444            doy : 4  // The week that contains Jan 4th is the first week of the year.
6445        }
6446    });
6447}));
6448// moment.js locale configuration
6449// locale : italian (it)
6450// author : Lorenzo : https://github.com/aliem
6451// author: Mattia Larentis: https://github.com/nostalgiaz
6452
6453(function (factory) {
6454    factory(moment);
6455}(function (moment) {
6456    return moment.defineLocale('it', {
6457        months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
6458        monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
6459        weekdays : 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato'.split('_'),
6460        weekdaysShort : 'Dom_Lun_Mar_Mer_Gio_Ven_Sab'.split('_'),
6461        weekdaysMin : 'D_L_Ma_Me_G_V_S'.split('_'),
6462        longDateFormat : {
6463            LT : 'HH:mm',
6464            LTS : 'LT:ss',
6465            L : 'DD/MM/YYYY',
6466            LL : 'D MMMM YYYY',
6467            LLL : 'D MMMM YYYY LT',
6468            LLLL : 'dddd, D MMMM YYYY LT'
6469        },
6470        calendar : {
6471            sameDay: '[Oggi alle] LT',
6472            nextDay: '[Domani alle] LT',
6473            nextWeek: 'dddd [alle] LT',
6474            lastDay: '[Ieri alle] LT',
6475            lastWeek: function () {
6476                switch (this.day()) {
6477                    case 0:
6478                        return '[la scorsa] dddd [alle] LT';
6479                    default:
6480                        return '[lo scorso] dddd [alle] LT';
6481                }
6482            },
6483            sameElse: 'L'
6484        },
6485        relativeTime : {
6486            future : function (s) {
6487                return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;
6488            },
6489            past : '%s fa',
6490            s : 'alcuni secondi',
6491            m : 'un minuto',
6492            mm : '%d minuti',
6493            h : 'un\'ora',
6494            hh : '%d ore',
6495            d : 'un giorno',
6496            dd : '%d giorni',
6497            M : 'un mese',
6498            MM : '%d mesi',
6499            y : 'un anno',
6500            yy : '%d anni'
6501        },
6502        ordinalParse : /\d{1,2}º/,
6503        ordinal: '%dº',
6504        week : {
6505            dow : 1, // Monday is the first day of the week.
6506            doy : 4  // The week that contains Jan 4th is the first week of the year.
6507        }
6508    });
6509}));
6510// moment.js locale configuration
6511// locale : japanese (ja)
6512// author : LI Long : https://github.com/baryon
6513
6514(function (factory) {
6515    factory(moment);
6516}(function (moment) {
6517    return moment.defineLocale('ja', {
6518        months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
6519        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
6520        weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
6521        weekdaysShort : '日_月_火_水_木_金_土'.split('_'),
6522        weekdaysMin : '日_月_火_水_木_金_土'.split('_'),
6523        longDateFormat : {
6524            LT : 'Ah時m分',
6525            LTS : 'LTsç§’',
6526            L : 'YYYY/MM/DD',
6527            LL : 'YYYY年M月D日',
6528            LLL : 'YYYY年M月D日LT',
6529            LLLL : 'YYYY年M月D日LT dddd'
6530        },
6531        meridiemParse: /午前|午後/i,
6532        isPM : function (input) {
6533            return input === '午後';
6534        },
6535        meridiem : function (hour, minute, isLower) {
6536            if (hour < 12) {
6537                return '午前';
6538            } else {
6539                return '午後';
6540            }
6541        },
6542        calendar : {
6543            sameDay : '[今日] LT',
6544            nextDay : '[明日] LT',
6545            nextWeek : '[来週]dddd LT',
6546            lastDay : '[昨日] LT',
6547            lastWeek : '[前週]dddd LT',
6548            sameElse : 'L'
6549        },
6550        relativeTime : {
6551            future : '%s後',
6552            past : '%s前',
6553            s : 'æ•°ç§’',
6554            m : '1分',
6555            mm : '%d分',
6556            h : '1時間',
6557            hh : '%d時間',
6558            d : '1æ—¥',
6559            dd : '%dæ—¥',
6560            M : '1ヶ月',
6561            MM : '%dヶ月',
6562            y : '1å¹´',
6563            yy : '%då¹´'
6564        }
6565    });
6566}));
6567// moment.js locale configuration
6568// locale : Georgian (ka)
6569// author : Irakli Janiashvili : https://github.com/irakli-janiashvili
6570
6571(function (factory) {
6572    factory(moment);
6573}(function (moment) {
6574    function monthsCaseReplace(m, format) {
6575        var months = {
6576            'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
6577            'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')
6578        },
6579
6580        nounCase = (/D[oD] *MMMM?/).test(format) ?
6581            'accusative' :
6582            'nominative';
6583
6584        return months[nounCase][m.month()];
6585    }
6586
6587    function weekdaysCaseReplace(m, format) {
6588        var weekdays = {
6589            'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
6590            'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_')
6591        },
6592
6593        nounCase = (/(წინა|შემდეგ)/).test(format) ?
6594            'accusative' :
6595            'nominative';
6596
6597        return weekdays[nounCase][m.day()];
6598    }
6599
6600    return moment.defineLocale('ka', {
6601        months : monthsCaseReplace,
6602        monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
6603        weekdays : weekdaysCaseReplace,
6604        weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
6605        weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
6606        longDateFormat : {
6607            LT : 'h:mm A',
6608            LTS : 'h:mm:ss A',
6609            L : 'DD/MM/YYYY',
6610            LL : 'D MMMM YYYY',
6611            LLL : 'D MMMM YYYY LT',
6612            LLLL : 'dddd, D MMMM YYYY LT'
6613        },
6614        calendar : {
6615            sameDay : '[დღეს] LT[-ზე]',
6616            nextDay : '[ხვალ] LT[-ზე]',
6617            lastDay : '[გუშინ] LT[-ზე]',
6618            nextWeek : '[შემდეგ] dddd LT[-ზე]',
6619            lastWeek : '[წინა] dddd LT-ზე',
6620            sameElse : 'L'
6621        },
6622        relativeTime : {
6623            future : function (s) {
6624                return (/(წამი|წუთი|საათი|წელი)/).test(s) ?
6625                    s.replace(/ი$/, 'ში') :
6626                    s + 'ში';
6627            },
6628            past : function (s) {
6629                if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {
6630                    return s.replace(/(ი|ე)$/, 'ის წინ');
6631                }
6632                if ((/წელი/).test(s)) {
6633                    return s.replace(/წელი$/, 'წლის წინ');
6634                }
6635            },
6636            s : 'რამდენიმე წამი',
6637            m : 'წუთი',
6638            mm : '%d წუთი',
6639            h : 'საათი',
6640            hh : '%d საათი',
6641            d : 'დღე',
6642            dd : '%d დღე',
6643            M : 'თვე',
6644            MM : '%d თვე',
6645            y : 'წელი',
6646            yy : '%d წელი'
6647        },
6648        ordinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
6649        ordinal : function (number) {
6650            if (number === 0) {
6651                return number;
6652            }
6653
6654            if (number === 1) {
6655                return number + '-ლი';
6656            }
6657
6658            if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {
6659                return 'მე-' + number;
6660            }
6661
6662            return number + '-ე';
6663        },
6664        week : {
6665            dow : 1,
6666            doy : 7
6667        }
6668    });
6669}));
6670// moment.js locale configuration
6671// locale : khmer (km)
6672// author : Kruy Vanna : https://github.com/kruyvanna
6673
6674(function (factory) {
6675    factory(moment);
6676}(function (moment) {
6677    return moment.defineLocale('km', {
6678        months: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
6679        monthsShort: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
6680        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
6681        weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
6682        weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
6683        longDateFormat: {
6684            LT: 'HH:mm',
6685            LTS : 'LT:ss',
6686            L: 'DD/MM/YYYY',
6687            LL: 'D MMMM YYYY',
6688            LLL: 'D MMMM YYYY LT',
6689            LLLL: 'dddd, D MMMM YYYY LT'
6690        },
6691        calendar: {
6692            sameDay: '[ថ្ងៃនៈ ម៉ោង] LT',
6693            nextDay: '[ស្អែក ម៉ោង] LT',
6694            nextWeek: 'dddd [ម៉ោង] LT',
6695            lastDay: '[ម្សិលមិញ ម៉ោង] LT',
6696            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
6697            sameElse: 'L'
6698        },
6699        relativeTime: {
6700            future: '%sទៀត',
6701            past: '%sមុន',
6702            s: 'ប៉ុន្មានវិនាទី',
6703            m: 'មួយនាទី',
6704            mm: '%d នាទី',
6705            h: 'មួយម៉ោង',
6706            hh: '%d ម៉ោង',
6707            d: 'មួយថ្ងៃ',
6708            dd: '%d ថ្ងៃ',
6709            M: 'មួយខែ',
6710            MM: '%d ខែ',
6711            y: 'មួយឆ្នាំ',
6712            yy: '%d ឆ្នាំ'
6713        },
6714        week: {
6715            dow: 1, // Monday is the first day of the week.
6716            doy: 4 // The week that contains Jan 4th is the first week of the year.
6717        }
6718    });
6719}));
6720// moment.js locale configuration
6721// locale : korean (ko)
6722//
6723// authors
6724//
6725// - Kyungwook, Park : https://github.com/kyungw00k
6726// - Jeeeyul Lee <[email protected]>
6727(function (factory) {
6728    factory(moment);
6729}(function (moment) {
6730    return moment.defineLocale('ko', {
6731        months : '1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”'.split('_'),
6732        monthsShort : '1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”'.split('_'),
6733        weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_í† ìš”ì¼'.split('_'),
6734        weekdaysShort : '일_ì›”_í™”_수_목_금_í† '.split('_'),
6735        weekdaysMin : '일_ì›”_í™”_수_목_금_í† '.split('_'),
6736        longDateFormat : {
6737            LT : 'A h시 m분',
6738            LTS : 'A h시 m분 s초',
6739            L : 'YYYY.MM.DD',
6740            LL : 'YYYY년 MMMM D일',
6741            LLL : 'YYYY년 MMMM D일 LT',
6742            LLLL : 'YYYY년 MMMM D일 dddd LT'
6743        },
6744        calendar : {
6745            sameDay : '오늘 LT',
6746            nextDay : '내일 LT',
6747            nextWeek : 'dddd LT',
6748            lastDay : 'ì–´ì œ LT',
6749            lastWeek : '지난주 dddd LT',
6750            sameElse : 'L'
6751        },
6752        relativeTime : {
6753            future : '%s 후',
6754            past : '%s ì „',
6755            s : '몇초',
6756            ss : '%dì´ˆ',
6757            m : '일분',
6758            mm : '%dë¶„',
6759            h : '한시간',
6760            hh : '%d시간',
6761            d : '하루',
6762            dd : '%d일',
6763            M : '한달',
6764            MM : '%d달',
6765            y : '일년',
6766            yy : '%dë…„'
6767        },
6768        ordinalParse : /\d{1,2}일/,
6769        ordinal : '%d일',
6770        meridiemParse : /ì˜¤ì „|오후/,
6771        isPM : function (token) {
6772            return token === '오후';
6773        },
6774        meridiem : function (hour, minute, isUpper) {
6775            return hour < 12 ? 'ì˜¤ì „' : '오후';
6776        }
6777    });
6778}));
6779// moment.js locale configuration
6780// locale : Luxembourgish (lb)
6781// author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz
6782
6783// Note: Luxembourgish has a very particular phonological rule ('Eifeler Regel') that causes the
6784// deletion of the final 'n' in certain contexts. That's what the 'eifelerRegelAppliesToWeekday'
6785// and 'eifelerRegelAppliesToNumber' methods are meant for
6786
6787(function (factory) {
6788    factory(moment);
6789}(function (moment) {
6790    function processRelativeTime(number, withoutSuffix, key, isFuture) {
6791        var format = {
6792            'm': ['eng Minutt', 'enger Minutt'],
6793            'h': ['eng Stonn', 'enger Stonn'],
6794            'd': ['een Dag', 'engem Dag'],
6795            'M': ['ee Mount', 'engem Mount'],
6796            'y': ['ee Joer', 'engem Joer']
6797        };
6798        return withoutSuffix ? format[key][0] : format[key][1];
6799    }
6800
vendor: 4,364 bytes, lines 6801-6923
6801    function processFutureTime(string) {
6802        var number = string.substr(0, string.indexOf(' '));
6803        if (eifelerRegelAppliesToNumber(number)) {
6804            return 'a ' + string;
6805        }
6806        return 'an ' + string;
6807    }
6808
6809    function processPastTime(string) {
6810        var number = string.substr(0, string.indexOf(' '));
6811        if (eifelerRegelAppliesToNumber(number)) {
6812            return 'viru ' + string;
6813        }
6814        return 'virun ' + string;
6815    }
6816
6817    /**
6818     * Returns true if the word before the given number loses the '-n' ending.
6819     * e.g. 'an 10 Deeg' but 'a 5 Deeg'
6820     *
6821     * @param number {integer}
6822     * @returns {boolean}
6823     */
6824    function eifelerRegelAppliesToNumber(number) {
6825        number = parseInt(number, 10);
6826        if (isNaN(number)) {
6827            return false;
6828        }
6829        if (number < 0) {
6830            // Negative Number --> always true
6831            return true;
6832        } else if (number < 10) {
6833            // Only 1 digit
6834            if (4 <= number && number <= 7) {
6835                return true;
6836            }
6837            return false;
6838        } else if (number < 100) {
6839            // 2 digits
6840            var lastDigit = number % 10, firstDigit = number / 10;
6841            if (lastDigit === 0) {
6842                return eifelerRegelAppliesToNumber(firstDigit);
6843            }
6844            return eifelerRegelAppliesToNumber(lastDigit);
6845        } else if (number < 10000) {
6846            // 3 or 4 digits --> recursively check first digit
6847            while (number >= 10) {
6848                number = number / 10;
6849            }
6850            return eifelerRegelAppliesToNumber(number);
6851        } else {
6852            // Anything larger than 4 digits: recursively check first n-3 digits
6853            number = number / 1000;
6854            return eifelerRegelAppliesToNumber(number);
6855        }
6856    }
6857
6858    return moment.defineLocale('lb', {
6859        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6860        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
6861        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),
6862        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
6863        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
6864        longDateFormat: {
6865            LT: 'H:mm [Auer]',
6866            LTS: 'H:mm:ss [Auer]',
6867            L: 'DD.MM.YYYY',
6868            LL: 'D. MMMM YYYY',
6869            LLL: 'D. MMMM YYYY LT',
6870            LLLL: 'dddd, D. MMMM YYYY LT'
6871        },
6872        calendar: {
6873            sameDay: '[Haut um] LT',
6874            sameElse: 'L',
6875            nextDay: '[Muer um] LT',
6876            nextWeek: 'dddd [um] LT',
6877            lastDay: '[Gëschter um] LT',
6878            lastWeek: function () {
6879                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
6880                switch (this.day()) {
6881                    case 2:
6882                    case 4:
6883                        return '[Leschten] dddd [um] LT';
6884                    default:
6885                        return '[Leschte] dddd [um] LT';
6886                }
6887            }
6888        },
6889        relativeTime : {
6890            future : processFutureTime,
6891            past : processPastTime,
6892            s : 'e puer Sekonnen',
6893            m : processRelativeTime,
6894            mm : '%d Minutten',
6895            h : processRelativeTime,
6896            hh : '%d Stonnen',
6897            d : processRelativeTime,
6898            dd : '%d Deeg',
6899            M : processRelativeTime,
6900            MM : '%d Méint',
6901            y : processRelativeTime,
6902            yy : '%d Joer'
6903        },
6904        ordinalParse: /\d{1,2}\./,
6905        ordinal: '%d.',
6906        week: {
6907            dow: 1, // Monday is the first day of the week.
6908            doy: 4  // The week that contains Jan 4th is the first week of the year.
6909        }
6910    });
6911}));
6912// moment.js locale configuration
6913// locale : Lithuanian (lt)
6914// author : Mindaugas Mozūras : https://github.com/mmozuras
6915
6916(function (factory) {
6917    factory(moment);
6918}(function (moment) {
6919    var units = {
6920        'm' : 'minutÄ—_minutÄ—s_minutÄ™',
6921        'mm': 'minutės_minučių_minutes',
6922        'h' : 'valanda_valandos_valandÄ…',
6923        'hh': 'valandos_valandų_valandas',
6924        'd' : 'diena_dienos_dienÄ…',
6925        'dd': 'dienos_dienų_dienas',
6926        'M' : 'mėnuo_mėnesio_mėnesį',
6927        'MM': 'mėnesiai_mėnesių_mėnesius',
6928        'y' : 'metai_metų_metus',
6929        'yy': 'metai_metų_metus'
6930    },
6931    weekDays = 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_');
6932
6933    function translateSeconds(number, withoutSuffix, key, isFuture) {
6934        if (withoutSuffix) {
6935            return 'kelios sekundÄ—s';
6936        } else {
6937            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
6938        }
6939    }
6940
6941    function translateSingular(number, withoutSuffix, key, isFuture) {
6942        return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);
6943    }
6944
6945    function special(number) {
6946        return number % 10 === 0 || (number > 10 && number < 20);
6947    }
6948
6949    function forms(key) {
6950        return units[key].split('_');
6951    }
6952
6953    function translate(number, withoutSuffix, key, isFuture) {
6954        var result = number + ' ';
6955        if (number === 1) {
6956            return result + translateSingular(number, withoutSuffix, key[0], isFuture);
6957        } else if (withoutSuffix) {
6958            return result + (special(number) ? forms(key)[1] : forms(key)[0]);
6959        } else {
6960            if (isFuture) {
6961                return result + forms(key)[1];
6962            } else {
6963                return result + (special(number) ? forms(key)[1] : forms(key)[2]);
6964            }
6965        }
6966    }
6967
6968    function relativeWeekDay(moment, format) {
6969        var nominative = format.indexOf('dddd HH:mm') === -1,
6970            weekDay = weekDays[moment.day()];
6971
6972        return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + 'į';
6973    }
6974
6975    return moment.defineLocale('lt', {
6976        months : 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),
6977        monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
6978        weekdays : relativeWeekDay,
6979        weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
6980        weekdaysMin : 'S_P_A_T_K_Pn_Å '.split('_'),
6981        longDateFormat : {
6982            LT : 'HH:mm',
6983            LTS : 'LT:ss',
6984            L : 'YYYY-MM-DD',
6985            LL : 'YYYY [m.] MMMM D [d.]',
6986            LLL : 'YYYY [m.] MMMM D [d.], LT [val.]',
6987            LLLL : 'YYYY [m.] MMMM D [d.], dddd, LT [val.]',
6988            l : 'YYYY-MM-DD',
6989            ll : 'YYYY [m.] MMMM D [d.]',
6990            lll : 'YYYY [m.] MMMM D [d.], LT [val.]',
6991            llll : 'YYYY [m.] MMMM D [d.], ddd, LT [val.]'
6992        },
6993        calendar : {
6994            sameDay : '[Å iandien] LT',
6995            nextDay : '[Rytoj] LT',
6996            nextWeek : 'dddd LT',
6997            lastDay : '[Vakar] LT',
6998            lastWeek : '[Praėjusį] dddd LT',
6999            sameElse : 'L'
7000        },
7001        relativeTime : {
7002            future : 'po %s',
7003            past : 'prieš %s',
7004            s : translateSeconds,
7005            m : translateSingular,
7006            mm : translate,
7007            h : translateSingular,
7008            hh : translate,
7009            d : translateSingular,
7010            dd : translate,
7011            M : translateSingular,
7012            MM : translate,
7013            y : translateSingular,
7014            yy : translate
7015        },
7016        ordinalParse: /\d{1,2}-oji/,
7017        ordinal : function (number) {
7018            return number + '-oji';
7019        },
7020        week : {
7021            dow : 1, // Monday is the first day of the week.
7022            doy : 4  // The week that contains Jan 4th is the first week of the year.
7023        }
7024    });
7025}));
7026// moment.js locale configuration
7027// locale : latvian (lv)
7028// author : Kristaps Karlsons : https://github.com/skakri
7029
7030(function (factory) {
7031    factory(moment);
7032}(function (moment) {
7033    var units = {
7034        'mm': 'minūti_minūtes_minūte_minūtes',
7035        'hh': 'stundu_stundas_stunda_stundas',
7036        'dd': 'dienu_dienas_diena_dienas',
7037        'MM': 'mēnesi_mēnešus_mēnesis_mēneši',
7038        'yy': 'gadu_gadus_gads_gadi'
7039    };
7040
7041    function format(word, number, withoutSuffix) {
7042        var forms = word.split('_');
7043        if (withoutSuffix) {
7044            return number % 10 === 1 && number !== 11 ? forms[2] : forms[3];
7045        } else {
7046            return number % 10 === 1 && number !== 11 ? forms[0] : forms[1];
7047        }
7048    }
7049
7050    function relativeTimeWithPlural(number, withoutSuffix, key) {
7051        return number + ' ' + format(units[key], number, withoutSuffix);
7052    }
7053
7054    return moment.defineLocale('lv', {
7055        months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),
7056        monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
7057        weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),
7058        weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),
7059        weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),
7060        longDateFormat : {
7061            LT : 'HH:mm',
7062            LTS : 'LT:ss',
7063            L : 'DD.MM.YYYY',
7064            LL : 'YYYY. [gada] D. MMMM',
7065            LLL : 'YYYY. [gada] D. MMMM, LT',
7066            LLLL : 'YYYY. [gada] D. MMMM, dddd, LT'
7067        },
7068        calendar : {
7069            sameDay : '[Å odien pulksten] LT',
7070            nextDay : '[Rīt pulksten] LT',
7071            nextWeek : 'dddd [pulksten] LT',
7072            lastDay : '[Vakar pulksten] LT',
7073            lastWeek : '[Pagājušā] dddd [pulksten] LT',
7074            sameElse : 'L'
7075        },
7076        relativeTime : {
7077            future : '%s vēlāk',
7078            past : '%s agrāk',
7079            s : 'dažas sekundes',
7080            m : 'minūti',
7081            mm : relativeTimeWithPlural,
7082            h : 'stundu',
7083            hh : relativeTimeWithPlural,
7084            d : 'dienu',
7085            dd : relativeTimeWithPlural,
7086            M : 'mēnesi',
7087            MM : relativeTimeWithPlural,
7088            y : 'gadu',
7089            yy : relativeTimeWithPlural
7090        },
7091        ordinalParse: /\d{1,2}\./,
7092        ordinal : '%d.',
7093        week : {
7094            dow : 1, // Monday is the first day of the week.
7095            doy : 4  // The week that contains Jan 4th is the first week of the year.
7096        }
7097    });
7098}));
7099// moment.js locale configuration
7100// locale : macedonian (mk)
7101// author : Borislav Mickov : https://github.com/B0k0
7102
7103(function (factory) {
7104    factory(moment);
7105}(function (moment) {
7106    return moment.defineLocale('mk', {
7107        months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),
7108        monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
7109        weekdays : 'недела_понеделник_вторник_среда_
vendor: 15,552 bytes, lines 7109-7422
7109четврток_петок_сабота'.split('_'),
7110        weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
7111        weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),
7112        longDateFormat : {
7113            LT : 'H:mm',
7114            LTS : 'LT:ss',
7115            L : 'D.MM.YYYY',
7116            LL : 'D MMMM YYYY',
7117            LLL : 'D MMMM YYYY LT',
7118            LLLL : 'dddd, D MMMM YYYY LT'
7119        },
7120        calendar : {
7121            sameDay : '[Денес во] LT',
7122            nextDay : '[Утре во] LT',
7123            nextWeek : 'dddd [во] LT',
7124            lastDay : '[Вчера во] LT',
7125            lastWeek : function () {
7126                switch (this.day()) {
7127                case 0:
7128                case 3:
7129                case 6:
7130                    return '[Во изминатата] dddd [во] LT';
7131                case 1:
7132                case 2:
7133                case 4:
7134                case 5:
7135                    return '[Во изминатиот] dddd [во] LT';
7136                }
7137            },
7138            sameElse : 'L'
7139        },
7140        relativeTime : {
7141            future : 'после %s',
7142            past : 'пред %s',
7143            s : 'неколку секунди',
7144            m : 'минута',
7145            mm : '%d минути',
7146            h : 'час',
7147            hh : '%d часа',
7148            d : 'ден',
7149            dd : '%d дена',
7150            M : 'месец',
7151            MM : '%d месеци',
7152            y : 'година',
7153            yy : '%d години'
7154        },
7155        ordinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
7156        ordinal : function (number) {
7157            var lastDigit = number % 10,
7158                last2Digits = number % 100;
7159            if (number === 0) {
7160                return number + '-ев';
7161            } else if (last2Digits === 0) {
7162                return number + '-ен';
7163            } else if (last2Digits > 10 && last2Digits < 20) {
7164                return number + '-ти';
7165            } else if (lastDigit === 1) {
7166                return number + '-ви';
7167            } else if (lastDigit === 2) {
7168                return number + '-ри';
7169            } else if (lastDigit === 7 || lastDigit === 8) {
7170                return number + '-ми';
7171            } else {
7172                return number + '-ти';
7173            }
7174        },
7175        week : {
7176            dow : 1, // Monday is the first day of the week.
7177            doy : 7  // The week that contains Jan 1st is the first week of the year.
7178        }
7179    });
7180}));
7181// moment.js locale configuration
7182// locale : malayalam (ml)
7183// author : Floyd Pink : https://github.com/floydpink
7184
7185(function (factory) {
7186    factory(moment);
7187}(function (moment) {
7188    return moment.defineLocale('ml', {
7189        months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),
7190        monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),
7191        weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),
7192        weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
7193        weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
7194        longDateFormat : {
7195            LT : 'A h:mm -നു',
7196            LTS : 'A h:mm:ss -നു',
7197            L : 'DD/MM/YYYY',
7198            LL : 'D MMMM YYYY',
7199            LLL : 'D MMMM YYYY, LT',
7200            LLLL : 'dddd, D MMMM YYYY, LT'
7201        },
7202        calendar : {
7203            sameDay : '[ഇന്ന്] LT',
7204            nextDay : '[നാളെ] LT',
7205            nextWeek : 'dddd, LT',
7206            lastDay : '[ഇന്നലെ] LT',
7207            lastWeek : '[കഴിഞ്ഞ] dddd, LT',
7208            sameElse : 'L'
7209        },
7210        relativeTime : {
7211            future : '%s കഴിഞ്ഞ്',
7212            past : '%s മുൻപ്',
7213            s : 'അൽപ നിമിഷങ്ങൾ',
7214            m : 'ഒരു മിനിറ്റ്',
7215            mm : '%d മിനിറ്റ്',
7216            h : 'ഒരു മണിക്കൂർ',
7217            hh : '%d മണിക്കൂർ',
7218            d : 'ഒരു ദിവസം',
7219            dd : '%d ദിവസം',
7220            M : 'ഒരു മാസം',
7221            MM : '%d മാസം',
7222            y : 'ഒരു വർഷം',
7223            yy : '%d വർഷം'
7224        },
7225        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
7226        isPM : function (input) {
7227            return /^(ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി)$/.test(input);
7228        },
7229        meridiem : function (hour, minute, isLower) {
7230            if (hour < 4) {
7231                return 'രാത്രി';
7232            } else if (hour < 12) {
7233                return 'രാവിലെ';
7234            } else if (hour < 17) {
7235                return 'ഉച്ച കഴിഞ്ഞ്';
7236            } else if (hour < 20) {
7237                return 'വൈകുന്നേരം';
7238            } else {
7239                return 'രാത്രി';
7240            }
7241        }
7242    });
7243}));
7244// moment.js locale configuration
7245// locale : Marathi (mr)
7246// author : Harshad Kale : https://github.com/kalehv
7247
7248(function (factory) {
7249    factory(moment);
7250}(function (moment) {
7251    var symbolMap = {
7252        '1': '१',
7253        '2': '२',
7254        '3': '३',
7255        '4': '४',
7256        '5': '५',
7257        '6': '६',
7258        '7': '७',
7259        '8': '८',
7260        '9': '९',
7261        '0': '०'
7262    },
7263    numberMap = {
7264        '१': '1',
7265        '२': '2',
7266        '३': '3',
7267        '४': '4',
7268        '५': '5',
7269        '६': '6',
7270        '७': '7',
7271        '८': '8',
7272        '९': '9',
7273        '०': '0'
7274    };
7275
7276    return moment.defineLocale('mr', {
7277        months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),
7278        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),
7279        weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
7280        weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
7281        weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
7282        longDateFormat : {
7283            LT : 'A h:mm वाजता',
7284            LTS : 'A h:mm:ss वाजता',
7285            L : 'DD/MM/YYYY',
7286            LL : 'D MMMM YYYY',
7287            LLL : 'D MMMM YYYY, LT',
7288            LLLL : 'dddd, D MMMM YYYY, LT'
7289        },
7290        calendar : {
7291            sameDay : '[आज] LT',
7292            nextDay : '[उद्या] LT',
7293            nextWeek : 'dddd, LT',
7294            lastDay : '[काल] LT',
7295            lastWeek: '[मागील] dddd, LT',
7296            sameElse : 'L'
7297        },
7298        relativeTime : {
7299            future : '%s नंतर',
7300            past : '%s पूर्वी',
7301            s : 'सेकंद',
7302            m: 'एक मिनिट',
7303            mm: '%d मिनिटे',
7304            h : 'एक तास',
7305            hh : '%d तास',
7306            d : 'एक दिवस',
7307            dd : '%d दिवस',
7308            M : 'एक महिना',
7309            MM : '%d महिने',
7310            y : 'एक वर्ष',
7311            yy : '%d वर्षे'
7312        },
7313        preparse: function (string) {
7314            return string.replace(/[१२३४५६७८९०]/g, function (match) {
7315                return numberMap[match];
7316            });
7317        },
7318        postformat: function (string) {
7319            return string.replace(/\d/g, function (match) {
7320                return symbolMap[match];
7321            });
7322        },
7323        meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,
7324        meridiemHour : function (hour, meridiem) {
7325            if (hour === 12) {
7326                hour = 0;
7327            }
7328            if (meridiem === 'रात्री') {
7329                return hour < 4 ? hour : hour + 12;
7330            } else if (meridiem === 'सकाळी') {
7331                return hour;
7332            } else if (meridiem === 'दुपारी') {
7333                return hour >= 10 ? hour : hour + 12;
7334            } else if (meridiem === 'सायंकाळी') {
7335                return hour + 12;
7336            }
7337        },
7338        meridiem: function (hour, minute, isLower)
7339        {
7340            if (hour < 4) {
7341                return 'रात्री';
7342            } else if (hour < 10) {
7343                return 'सकाळी';
7344            } else if (hour < 17) {
7345                return 'दुपारी';
7346            } else if (hour < 20) {
7347                return 'सायंकाळी';
7348            } else {
7349                return 'रात्री';
7350            }
7351        },
7352        week : {
7353            dow : 0, // Sunday is the first day of the week.
7354            doy : 6  // The week that contains Jan 1st is the first week of the year.
7355        }
7356    });
7357}));
7358// moment.js locale configuration
7359// locale : Bahasa Malaysia (ms-MY)
7360// author : Weldan Jamili : https://github.com/weldan
7361
7362(function (factory) {
7363    factory(moment);
7364}(function (moment) {
7365    return moment.defineLocale('ms-my', {
7366        months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
7367        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
7368        weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
7369        weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
7370        weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
7371        longDateFormat : {
7372            LT : 'HH.mm',
7373            LTS : 'LT.ss',
7374            L : 'DD/MM/YYYY',
7375            LL : 'D MMMM YYYY',
7376            LLL : 'D MMMM YYYY [pukul] LT',
7377            LLLL : 'dddd, D MMMM YYYY [pukul] LT'
7378        },
7379        meridiemParse: /pagi|tengahari|petang|malam/,
7380        meridiemHour: function (hour, meridiem) {
7381            if (hour === 12) {
7382                hour = 0;
7383            }
7384            if (meridiem === 'pagi') {
7385                return hour;
7386            } else if (meridiem === 'tengahari') {
7387                return hour >= 11 ? hour : hour + 12;
7388            } else if (meridiem === 'petang' || meridiem === 'malam') {
7389                return hour + 12;
7390            }
7391        },
7392        meridiem : function (hours, minutes, isLower) {
7393            if (hours < 11) {
7394                return 'pagi';
7395            } else if (hours < 15) {
7396                return 'tengahari';
7397            } else if (hours < 19) {
7398                return 'petang';
7399            } else {
7400                return 'malam';
7401            }
7402        },
7403        calendar : {
7404            sameDay : '[Hari ini pukul] LT',
7405            nextDay : '[Esok pukul] LT',
7406            nextWeek : 'dddd [pukul] LT',
7407            lastDay : '[Kelmarin pukul] LT',
7408            lastWeek : 'dddd [lepas pukul] LT',
7409            sameElse : 'L'
7410        },
7411        relativeTime : {
7412            future : 'dalam %s',
7413            past : '%s yang lepas',
7414            s : 'beberapa saat',
7415            m : 'seminit',
7416            mm : '%d minit',
7417            h : 'sejam',
7418            hh : '%d jam',
7419            d : 'sehari',
7420            dd : '%d hari',
7421            M : 'sebulan',
7422            MM : '%d bulan',
7423            y : 'setahun',
7424            yy : '%d tahun'
7425        },
7426        week : {
7427            dow : 1, // Monday is the first day of the week.
7428            doy : 7  // The week that contains Jan 1st is the first week of the year.
7429        }
7430    });
7431}));
7432// moment.js locale configuration
7433// locale : Burmese (my)
7434// author : Squar team, mysquar.com
7435
7436(function (factory) {
7437    factory(moment);
7438}(function (moment) {
7439    var symbolMap = {
7440        '1': '၁',
7441        '2': '၂',
7442        '3': '၃',
7443        '4': '၄',
7444        '5': '၅',
7445        '6': '၆',
7446        '7': '၇',
7447        '8': '၈',
7448        '9': '၉',
7449        '0': '၀'
7450    }, numberMap = {
7451        '၁': '1',
7452        '၂': '2',
7453        '၃': '3',
7454        '၄': '4',
7455        '၅': '5',
7456        '၆': '6',
7457        '၇': '7',
7458        '၈': '8',
7459        '၉': '9',
7460        '၀': '0'
7461    };
7462    return moment.defineLocale('my', {
7463        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),
7464        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
7465        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),
7466        weekdaysShort: 'နွေ_လာ_င်္ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
7467        weekdaysMin: 'နွေ_လာ_င်္ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
7468        longDateFormat: {
7469            LT: 'HH:mm',
7470            LTS: 'HH:mm:ss',
7471            L: 'DD/MM/YYYY',
7472            LL: 'D MMMM YYYY',
7473            LLL: 'D MMMM YYYY LT',
7474            LLLL: 'dddd D MMMM YYYY LT'
7475        },
7476        calendar: {
7477            sameDay: '[ယနေ.] LT [မှာ]',
7478            nextDay: '[မနက်ဖြန်] LT [မှာ]',
7479            nextWeek: 'dddd LT [မှာ]',
7480            lastDay: '[မနေ.က] LT [မှာ]',
7481            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
7482            sameElse: 'L'
7483        },
7484        relativeTime: {
7485            future: 'လာမည့် %s မှာ',
7486            past: 'လွန်ခဲ့သော %s က',
7487            s: 'စက္ကန်.အနည်းငယ်',
7488            m: 'တစ်မိနစ်',
7489            mm: '%d မိနစ်',
7490            h: 'တစ်နာရီ',
7491            hh: '%d နာရီ',
7492            d: 'တစ်ရက်',
7493            dd: '%d ရက်',
7494            M: 'တစ်လ',
7495            MM: '%d လ',
7496            y: 'တစ်နှစ်',
7497            yy: '%d နှစ်'
7498        },
7499        preparse: function (string) {
7500            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
7501                return numberMap[match];
7502            });
7503        },
7504        postformat: function (string) {
7505            return string.replace(/\d/g, function (match) {
7506                return symbolMap[match];
7507            });
7508        },
7509        week: {
7510            dow: 1, // Monday is the first day of the week.
7511            doy: 4 // The week that contains Jan 1st is the first week of the year.
7512        }
7513    });
7514}));
7515// moment.js locale configuration
vendor: 63,470 bytes, lines 7516-9011
7516// locale : norwegian bokmål (nb)
7517// authors : Espen Hovlandsdal : https://github.com/rexxars
7518//           Sigurd Gartmann : https://github.com/sigurdga
7519
7520(function (factory) {
7521    factory(moment);
7522}(function (moment) {
7523    return moment.defineLocale('nb', {
7524        months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
7525        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
7526        weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
7527        weekdaysShort : 'søn_man_tirs_ons_tors_fre_lør'.split('_'),
7528        weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
7529        longDateFormat : {
7530            LT : 'H.mm',
7531            LTS : 'LT.ss',
7532            L : 'DD.MM.YYYY',
7533            LL : 'D. MMMM YYYY',
7534            LLL : 'D. MMMM YYYY [kl.] LT',
7535            LLLL : 'dddd D. MMMM YYYY [kl.] LT'
7536        },
7537        calendar : {
7538            sameDay: '[i dag kl.] LT',
7539            nextDay: '[i morgen kl.] LT',
7540            nextWeek: 'dddd [kl.] LT',
7541            lastDay: '[i går kl.] LT',
7542            lastWeek: '[forrige] dddd [kl.] LT',
7543            sameElse: 'L'
7544        },
7545        relativeTime : {
7546            future : 'om %s',
7547            past : 'for %s siden',
7548            s : 'noen sekunder',
7549            m : 'ett minutt',
7550            mm : '%d minutter',
7551            h : 'en time',
7552            hh : '%d timer',
7553            d : 'en dag',
7554            dd : '%d dager',
7555            M : 'en måned',
7556            MM : '%d måneder',
7557            y : 'ett år',
7558            yy : '%d år'
7559        },
7560        ordinalParse: /\d{1,2}\./,
7561        ordinal : '%d.',
7562        week : {
7563            dow : 1, // Monday is the first day of the week.
7564            doy : 4  // The week that contains Jan 4th is the first week of the year.
7565        }
7566    });
7567}));
7568// moment.js locale configuration
7569// locale : nepali/nepalese
7570// author : suvash : https://github.com/suvash
7571
7572(function (factory) {
7573    factory(moment);
7574}(function (moment) {
7575    var symbolMap = {
7576        '1': '१',
7577        '2': '२',
7578        '3': '३',
7579        '4': '४',
7580        '5': '५',
7581        '6': '६',
7582        '7': '७',
7583        '8': '८',
7584        '9': '९',
7585        '0': '०'
7586    },
7587    numberMap = {
7588        '१': '1',
7589        '२': '2',
7590        '३': '3',
7591        '४': '4',
7592        '५': '5',
7593        '६': '6',
7594        '७': '7',
7595        '८': '8',
7596        '९': '9',
7597        '०': '0'
7598    };
7599
7600    return moment.defineLocale('ne', {
7601        months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),
7602        monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),
7603        weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),
7604        weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
7605        weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split('_'),
7606        longDateFormat : {
7607            LT : 'Aको h:mm बजे',
7608            LTS : 'Aको h:mm:ss बजे',
7609            L : 'DD/MM/YYYY',
7610            LL : 'D MMMM YYYY',
7611            LLL : 'D MMMM YYYY, LT',
7612            LLLL : 'dddd, D MMMM YYYY, LT'
7613        },
7614        preparse: function (string) {
7615            return string.replace(/[१२३४५६७८९०]/g, function (match) {
7616                return numberMap[match];
7617            });
7618        },
7619        postformat: function (string) {
7620            return string.replace(/\d/g, function (match) {
7621                return symbolMap[match];
7622            });
7623        },
7624        meridiemParse: /राती|बिहान|दिउँसो|बेलुका|साँझ|राती/,
7625        meridiemHour : function (hour, meridiem) {
7626            if (hour === 12) {
7627                hour = 0;
7628            }
7629            if (meridiem === 'राती') {
7630                return hour < 3 ? hour : hour + 12;
7631            } else if (meridiem === 'बिहान') {
7632                return hour;
7633            } else if (meridiem === 'दिउँसो') {
7634                return hour >= 10 ? hour : hour + 12;
7635            } else if (meridiem === 'बेलुका' || meridiem === 'साँझ') {
7636                return hour + 12;
7637            }
7638        },
7639        meridiem : function (hour, minute, isLower) {
7640            if (hour < 3) {
7641                return 'राती';
7642            } else if (hour < 10) {
7643                return 'बिहान';
7644            } else if (hour < 15) {
7645                return 'दिउँसो';
7646            } else if (hour < 18) {
7647                return 'बेलुका';
7648            } else if (hour < 20) {
7649                return 'साँझ';
7650            } else {
7651                return 'राती';
7652            }
7653        },
7654        calendar : {
7655            sameDay : '[आज] LT',
7656            nextDay : '[भोली] LT',
7657            nextWeek : '[आउँदो] dddd[,] LT',
7658            lastDay : '[हिजो] LT',
7659            lastWeek : '[गएको] dddd[,] LT',
7660            sameElse : 'L'
7661        },
7662        relativeTime : {
7663            future : '%sमा',
7664            past : '%s अगाडी',
7665            s : 'केही समय',
7666            m : 'एक मिनेट',
7667            mm : '%d मिनेट',
7668            h : 'एक घण्टा',
7669            hh : '%d घण्टा',
7670            d : 'एक दिन',
7671            dd : '%d दिन',
7672            M : 'एक महिना',
7673            MM : '%d महिना',
7674            y : 'एक बर्ष',
7675            yy : '%d बर्ष'
7676        },
7677        week : {
7678            dow : 1, // Monday is the first day of the week.
7679            doy : 7  // The week that contains Jan 1st is the first week of the year.
7680        }
7681    });
7682}));
7683// moment.js locale configuration
7684// locale : dutch (nl)
7685// author : Joris Röling : https://github.com/jjupiter
7686
7687(function (factory) {
7688    factory(moment);
7689}(function (moment) {
7690    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
7691        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
7692
7693    return moment.defineLocale('nl', {
7694        months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
7695        monthsShort : function (m, format) {
7696            if (/-MMM-/.test(format)) {
7697                return monthsShortWithoutDots[m.month()];
7698            } else {
7699                return monthsShortWithDots[m.month()];
7700            }
7701        },
7702        weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
7703        weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
7704        weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),
7705        longDateFormat : {
7706            LT : 'HH:mm',
7707            LTS : 'LT:ss',
7708            L : 'DD-MM-YYYY',
7709            LL : 'D MMMM YYYY',
7710            LLL : 'D MMMM YYYY LT',
7711            LLLL : 'dddd D MMMM YYYY LT'
7712        },
7713        calendar : {
7714            sameDay: '[vandaag om] LT',
7715            nextDay: '[morgen om] LT',
7716            nextWeek: 'dddd [om] LT',
7717            lastDay: '[gisteren om] LT',
7718            lastWeek: '[afgelopen] dddd [om] LT',
7719            sameElse: 'L'
7720        },
7721        relativeTime : {
7722            future : 'over %s',
7723            past : '%s geleden',
7724            s : 'een paar seconden',
7725            m : 'één minuut',
7726            mm : '%d minuten',
7727            h : 'één uur',
7728            hh : '%d uur',
7729            d : 'één dag',
7730            dd : '%d dagen',
7731            M : 'één maand',
7732            MM : '%d maanden',
7733            y : 'één jaar',
7734            yy : '%d jaar'
7735        },
7736        ordinalParse: /\d{1,2}(ste|de)/,
7737        ordinal : function (number) {
7738            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
7739        },
7740        week : {
7741            dow : 1, // Monday is the first day of the week.
7742            doy : 4  // The week that contains Jan 4th is the first week of the year.
7743        }
7744    });
7745}));
7746// moment.js locale configuration
7747// locale : norwegian nynorsk (nn)
7748// author : https://github.com/mechuwind
7749
7750(function (factory) {
7751    factory(moment);
7752}(function (moment) {
7753    return moment.defineLocale('nn', {
7754        months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
7755        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
7756        weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
7757        weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),
7758        weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),
7759        longDateFormat : {
7760            LT : 'HH:mm',
7761            LTS : 'LT:ss',
7762            L : 'DD.MM.YYYY',
7763            LL : 'D MMMM YYYY',
7764            LLL : 'D MMMM YYYY LT',
7765            LLLL : 'dddd D MMMM YYYY LT'
7766        },
7767        calendar : {
7768            sameDay: '[I dag klokka] LT',
7769            nextDay: '[I morgon klokka] LT',
7770            nextWeek: 'dddd [klokka] LT',
7771            lastDay: '[I går klokka] LT',
7772            lastWeek: '[Føregåande] dddd [klokka] LT',
7773            sameElse: 'L'
7774        },
7775        relativeTime : {
7776            future : 'om %s',
7777            past : 'for %s sidan',
7778            s : 'nokre sekund',
7779            m : 'eit minutt',
7780            mm : '%d minutt',
7781            h : 'ein time',
7782            hh : '%d timar',
7783            d : 'ein dag',
7784            dd : '%d dagar',
7785            M : 'ein månad',
7786            MM : '%d månader',
7787            y : 'eit år',
7788            yy : '%d år'
7789        },
7790        ordinalParse: /\d{1,2}\./,
7791        ordinal : '%d.',
7792        week : {
7793            dow : 1, // Monday is the first day of the week.
7794            doy : 4  // The week that contains Jan 4th is the first week of the year.
7795        }
7796    });
7797}));
7798// moment.js locale configuration
7799// locale : polish (pl)
7800// author : Rafal Hirsz : https://github.com/evoL
7801
7802(function (factory) {
7803    factory(moment);
7804}(function (moment) {
7805    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),
7806        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');
7807
7808    function plural(n) {
7809        return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);
7810    }
7811
7812    function translate(number, withoutSuffix, key) {
7813        var result = number + ' ';
7814        switch (key) {
7815        case 'm':
7816            return withoutSuffix ? 'minuta' : 'minutÄ™';
7817        case 'mm':
7818            return result + (plural(number) ? 'minuty' : 'minut');
7819        case 'h':
7820            return withoutSuffix  ? 'godzina'  : 'godzinÄ™';
7821        case 'hh':
7822            return result + (plural(number) ? 'godziny' : 'godzin');
7823        case 'MM':
7824            return result + (plural(number) ? 'miesiące' : 'miesięcy');
7825        case 'yy':
7826            return result + (plural(number) ? 'lata' : 'lat');
7827        }
7828    }
7829
7830    return moment.defineLocale('pl', {
7831        months : function (momentToFormat, format) {
7832            if (/D MMMM/.test(format)) {
7833                return monthsSubjective[momentToFormat.month()];
7834            } else {
7835                return monthsNominative[momentToFormat.month()];
7836            }
7837        },
7838        monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
7839        weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
7840        weekdaysShort : 'nie_pon_wt_śr_czw_pt_sb'.split('_'),
7841        weekdaysMin : 'N_Pn_Wt_Åšr_Cz_Pt_So'.split('_'),
7842        longDateFormat : {
7843            LT : 'HH:mm',
7844            LTS : 'LT:ss',
7845            L : 'DD.MM.YYYY',
7846            LL : 'D MMMM YYYY',
7847            LLL : 'D MMMM YYYY LT',
7848            LLLL : 'dddd, D MMMM YYYY LT'
7849        },
7850        calendar : {
7851            sameDay: '[DziÅ› o] LT',
7852            nextDay: '[Jutro o] LT',
7853            nextWeek: '[W] dddd [o] LT',
7854            lastDay: '[Wczoraj o] LT',
7855            lastWeek: function () {
7856                switch (this.day()) {
7857                case 0:
7858                    return '[W zeszłą niedzielę o] LT';
7859                case 3:
7860                    return '[W zeszłą środę o] LT';
7861                case 6:
7862                    return '[W zeszłą sobotę o] LT';
7863                default:
7864                    return '[W zeszły] dddd [o] LT';
7865                }
7866            },
7867            sameElse: 'L'
7868        },
7869        relativeTime : {
7870            future : 'za %s',
7871            past : '%s temu',
7872            s : 'kilka sekund',
7873            m : translate,
7874            mm : translate,
7875            h : translate,
7876            hh : translate,
7877            d : '1 dzień',
7878            dd : '%d dni',
7879            M : 'miesiÄ…c',
7880            MM : translate,
7881            y : 'rok',
7882            yy : translate
7883        },
7884        ordinalParse: /\d{1,2}\./,
7885        ordinal : '%d.',
7886        week : {
7887            dow : 1, // Monday is the first day of the week.
7888            doy : 4  // The week that contains Jan 4th is the first week of the year.
7889        }
7890    });
7891}));
7892// moment.js locale configuration
7893// locale : brazilian portuguese (pt-br)
7894// author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
7895
7896(function (factory) {
7897    factory(moment);
7898}(function (moment) {
7899    return moment.defineLocale('pt-br', {
7900        months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),
7901        monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
7902        weekdays : 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'),
7903        weekdaysShort : 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
7904        weekdaysMin : 'dom_2ª_3ª_4ª_5ª_6ª_sáb'.split('_'),
7905        longDateFormat : {
7906            LT : 'HH:mm',
7907            LTS : 'LT:ss',
7908            L : 'DD/MM/YYYY',
7909            LL : 'D [de] MMMM [de] YYYY',
7910            LLL : 'D [de] MMMM [de] YYYY [Ã s] LT',
7911            LLLL : 'dddd, D [de] MMMM [de] YYYY [Ã s] LT'
7912        },
7913        calendar : {
7914            sameDay: '[Hoje à s] LT',
7915            nextDay: '[Amanhã à s] LT',
7916            nextWeek: 'dddd [Ã s] LT',
7917            lastDay: '[Ontem à s] LT',
7918            lastWeek: function () {
7919                return (this.day() === 0 || this.day() === 6) ?
7920                    '[Último] dddd [à s] LT' : // Saturday + Sunday
7921                    '[Última] dddd [à s] LT'; // Monday - Friday
7922            },
7923            sameElse: 'L'
7924        },
7925        relativeTime : {
7926            future : 'em %s',
7927            past : '%s atrás',
7928            s : 'segundos',
7929            m : 'um minuto',
7930            mm : '%d minutos',
7931            h : 'uma hora',
7932            hh : '%d horas',
7933            d : 'um dia',
7934            dd : '%d dias',
7935            M : 'um mês',
7936            MM : '%d meses',
7937            y : 'um ano',
7938            yy : '%d anos'
7939        },
7940        ordinalParse: /\d{1,2}º/,
7941        ordinal : '%dº'
7942    });
7943}));
7944// moment.js locale configuration
7945// locale : portuguese (pt)
7946// author : Jefferson : https://github.com/jalex79
7947
7948(function (factory) {
7949    factory(moment);
7950}(function (moment) {
7951    return moment.defineLocale('pt', {
7952        months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),
7953        monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
7954        weekdays : 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'),
7955        weekdaysShort : 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
7956        weekdaysMin : 'dom_2ª_3ª_4ª_5ª_6ª_sáb'.split('_'),
7957        longDateFormat : {
7958            LT : 'HH:mm',
7959            LTS : 'LT:ss',
7960            L : 'DD/MM/YYYY',
7961            LL : 'D [de] MMMM [de] YYYY',
7962            LLL : 'D [de] MMMM [de] YYYY LT',
7963            LLLL : 'dddd, D [de] MMMM [de] YYYY LT'
7964        },
7965        calendar : {
7966            sameDay: '[Hoje à s] LT',
7967            nextDay: '[Amanhã à s] LT',
7968            nextWeek: 'dddd [Ã s] LT',
7969            lastDay: '[Ontem à s] LT',
7970            lastWeek: function () {
7971                return (this.day() === 0 || this.day() === 6) ?
7972                    '[Último] dddd [à s] LT' : // Saturday + Sunday
7973                    '[Última] dddd [à s] LT'; // Monday - Friday
7974            },
7975            sameElse: 'L'
7976        },
7977        relativeTime : {
7978            future : 'em %s',
7979            past : 'há %s',
7980            s : 'segundos',
7981            m : 'um minuto',
7982            mm : '%d minutos',
7983            h : 'uma hora',
7984            hh : '%d horas',
7985            d : 'um dia',
7986            dd : '%d dias',
7987            M : 'um mês',
7988            MM : '%d meses',
7989            y : 'um ano',
7990            yy : '%d anos'
7991        },
7992        ordinalParse: /\d{1,2}º/,
7993        ordinal : '%dº',
7994        week : {
7995            dow : 1, // Monday is the first day of the week.
7996            doy : 4  // The week that contains Jan 4th is the first week of the year.
7997        }
7998    });
7999}));
8000// moment.js locale configuration
8001// locale : romanian (ro)
8002// author : Vlad Gurdiga : https://github.com/gurdiga
8003// author : Valentin Agachi : https://github.com/avaly
8004
8005(function (factory) {
8006    factory(moment);
8007}(function (moment) {
8008    function relativeTimeWithPlural(number, withoutSuffix, key) {
8009        var format = {
8010                'mm': 'minute',
8011                'hh': 'ore',
8012                'dd': 'zile',
8013                'MM': 'luni',
8014                'yy': 'ani'
8015            },
8016            separator = ' ';
8017        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
8018            separator = ' de ';
8019        }
8020
8021        return number + separator + format[key];
8022    }
8023
8024    return moment.defineLocale('ro', {
8025        months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),
8026        monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),
8027        weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
8028        weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
8029        weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
8030        longDateFormat : {
8031            LT : 'H:mm',
8032            LTS : 'LT:ss',
8033            L : 'DD.MM.YYYY',
8034            LL : 'D MMMM YYYY',
8035            LLL : 'D MMMM YYYY H:mm',
8036            LLLL : 'dddd, D MMMM YYYY H:mm'
8037        },
8038        calendar : {
8039            sameDay: '[azi la] LT',
8040            nextDay: '[mâine la] LT',
8041            nextWeek: 'dddd [la] LT',
8042            lastDay: '[ieri la] LT',
8043            lastWeek: '[fosta] dddd [la] LT',
8044            sameElse: 'L'
8045        },
8046        relativeTime : {
8047            future : 'peste %s',
8048            past : '%s în urmă',
8049            s : 'câteva secunde',
8050            m : 'un minut',
8051            mm : relativeTimeWithPlural,
8052            h : 'o oră',
8053            hh : relativeTimeWithPlural,
8054            d : 'o zi',
8055            dd : relativeTimeWithPlural,
8056            M : 'o lună',
8057            MM : relativeTimeWithPlural,
8058            y : 'un an',
8059            yy : relativeTimeWithPlural
8060        },
8061        week : {
8062            dow : 1, // Monday is the first day of the week.
8063            doy : 7  // The week that contains Jan 1st is the first week of the year.
8064        }
8065    });
8066}));
8067// moment.js locale configuration
8068// locale : russian (ru)
8069// author : Viktorminator : https://github.com/Viktorminator
8070// Author : Menelion Elensúle : https://github.com/Oire
8071
8072(function (factory) {
8073    factory(moment);
8074}(function (moment) {
8075    function plural(word, num) {
8076        var forms = word.split('_');
8077        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
8078    }
8079
8080    function relativeTimeWithPlural(number, withoutSuffix, key) {
8081        var format = {
8082            'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
8083            'hh': 'час_часа_часов',
8084            'dd': 'день_дня_дней',
8085            'MM': 'месяц_месяца_месяцев',
8086            'yy': 'год_года_лет'
8087        };
8088        if (key === 'm') {
8089            return withoutSuffix ? 'минута' : 'минуту';
8090        }
8091        else {
8092            return number + ' ' + plural(format[key], +number);
8093        }
8094    }
8095
8096    function monthsCaseReplace(m, format) {
8097        var months = {
8098            'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
8099            'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_')
8100        },
8101
8102        nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
8103            'accusative' :
8104            'nominative';
8105
8106        return months[nounCase][m.month()];
8107    }
8108
8109    function monthsShortCaseReplace(m, format) {
8110        var monthsShort = {
8111            'nominative': 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
8112            'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_')
8113        },
8114
8115        nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
8116            'accusative' :
8117            'nominative';
8118
8119        return monthsShort[nounCase][m.month()];
8120    }
8121
8122    function weekdaysCaseReplace(m, format) {
8123        var weekdays = {
8124            'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),
8125            'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_')
8126        },
8127
8128        nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/).test(format) ?
8129            'accusative' :
8130            'nominative';
8131
8132        return weekdays[nounCase][m.day()];
8133    }
8134
8135    return moment.defineLocale('ru', {
8136        months : monthsCaseReplace,
8137        monthsShort : monthsShortCaseReplace,
8138        weekdays : weekdaysCaseReplace,
8139        weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
8140        weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
8141        monthsParse : [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i],
8142        longDateFormat : {
8143            LT : 'HH:mm',
8144            LTS : 'LT:ss',
8145            L : 'DD.MM.YYYY',
8146            LL : 'D MMMM YYYY г.',
8147            LLL : 'D MMMM YYYY г., LT',
8148            LLLL : 'dddd, D MMMM YYYY г., LT'
8149        },
8150        calendar : {
8151            sameDay: '[Сегодня в] LT',
8152            nextDay: '[Завтра в] LT',
8153            lastDay: '[Вчера в] LT',
8154            nextWeek: function () {
8155                return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT';
8156            },
8157            lastWeek: function (now) {
8158                if (now.week() !== this.week()) {
8159                    switch (this.day()) {
8160                    case 0:
8161                        return '[В прошлое] dddd [в] LT';
8162                    case 1:
8163                    case 2:
8164                    case 4:
8165                        return '[В прошлый] dddd [в] LT';
8166                    case 3:
8167                    case 5:
8168                    case 6:
8169                        return '[В прошлую] dddd [в] LT';
8170                    }
8171                } else {
8172                    if (this.day() === 2) {
8173                        return '[Во] dddd [в] LT';
8174                    } else {
8175                        return '[В] dddd [в] LT';
8176                    }
8177                }
8178            },
8179            sameElse: 'L'
8180        },
8181        relativeTime : {
8182            future : 'через %s',
8183            past : '%s назад',
8184            s : 'несколько секунд',
8185            m : relativeTimeWithPlural,
8186            mm : relativeTimeWithPlural,
8187            h : 'час',
8188            hh : relativeTimeWithPlural,
8189            d : 'день',
8190            dd : relativeTimeWithPlural,
8191            M : 'месяц',
8192            MM : relativeTimeWithPlural,
8193            y : 'год',
8194            yy : relativeTimeWithPlural
8195        },
8196
8197        meridiemParse: /ночи|утра|дня|вечера/i,
8198        isPM : function (input) {
8199            return /^(дня|вечера)$/.test(input);
8200        },
8201
8202        meridiem : function (hour, minute, isLower) {
8203            if (hour < 4) {
8204                return 'ночи';
8205            } else if (hour < 12) {
8206                return 'утра';
8207            } else if (hour < 17) {
8208                return 'дня';
8209            } else {
8210                return 'вечера';
8211            }
8212        },
8213
8214        ordinalParse: /\d{1,2}-(й|го|я)/,
8215        ordinal: function (number, period) {
8216            switch (period) {
8217            case 'M':
8218            case 'd':
8219            case 'DDD':
8220                return number + '-й';
8221            case 'D':
8222                return number + '-го';
8223            case 'w':
8224            case 'W':
8225                return number + '-я';
8226            default:
8227                return number;
8228            }
8229        },
8230
8231        week : {
8232            dow : 1, // Monday is the first day of the week.
8233            doy : 7  // The week that contains Jan 1st is the first week of the year.
8234        }
8235    });
8236}));
8237// moment.js locale configuration
8238// locale : slovak (sk)
8239// author : Martin Minka : https://github.com/k2s
8240// based on work of petrbela : https://github.com/petrbela
8241
8242(function (factory) {
8243    factory(moment);
8244}(function (moment) {
8245    var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),
8246        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
8247
8248    function plural(n) {
8249        return (n > 1) && (n < 5);
8250    }
8251
8252    function translate(number, withoutSuffix, key, isFuture) {
8253        var result = number + ' ';
8254        switch (key) {
8255        case 's':  // a few seconds / in a few seconds / a few seconds ago
8256            return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';
8257        case 'm':  // a minute / in a minute / a minute ago
8258            return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');
8259        case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
8260            if (withoutSuffix || isFuture) {
8261                return result + (plural(number) ? 'minúty' : 'minút');
8262            } else {
8263                return result + 'minútami';
8264            }
8265            break;
8266        case 'h':  // an hour / in an hour / an hour ago
8267            return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
8268        case 'hh': // 9 hours / in 9 hours / 9 hours ago
8269            if (withoutSuffix || isFuture) {
8270                return result + (plural(number) ? 'hodiny' : 'hodín');
8271            } else {
8272                return result + 'hodinami';
8273            }
8274            break;
8275        case 'd':  // a day / in a day / a day ago
8276            return (withoutSuffix || isFuture) ? 'deň' : 'dňom';
8277        case 'dd': // 9 days / in 9 days / 9 days ago
8278            if (withoutSuffix || isFuture) {
8279                return result + (plural(number) ? 'dni' : 'dní');
8280            } else {
8281                return result + 'dňami';
8282            }
8283            break;
8284        case 'M':  // a month / in a month / a month ago
8285            return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';
8286        case 'MM': // 9 months / in 9 months / 9 months ago
8287            if (withoutSuffix || isFuture) {
8288                return result + (plural(number) ? 'mesiace' : 'mesiacov');
8289            } else {
8290                return result + 'mesiacmi';
8291            }
8292            break;
8293        case 'y':  // a year / in a year / a year ago
8294            return (withoutSuffix || isFuture) ? 'rok' : 'rokom';
8295        case 'yy': // 9 years / in 9 years / 9 years ago
8296            if (withoutSuffix || isFuture) {
8297                return result + (plural(number) ? 'roky' : 'rokov');
8298            } else {
8299                return result + 'rokmi';
8300            }
8301            break;
8302        }
8303    }
8304
8305    return moment.defineLocale('sk', {
8306        months : months,
8307        monthsShort : monthsShort,
8308        monthsParse : (function (months, monthsShort) {
8309            var i, _monthsParse = [];
8310            for (i = 0; i < 12; i++) {
8311                // use custom parser to solve problem with July (červenec)
8312                _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i');
8313            }
8314            return _monthsParse;
8315        }(months, monthsShort)),
8316        weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
8317        weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),
8318        weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),
8319        longDateFormat : {
8320            LT: 'H:mm',
8321            LTS : 'LT:ss',
8322            L : 'DD.MM.YYYY',
8323            LL : 'D. MMMM YYYY',
8324            LLL : 'D. MMMM YYYY LT',
8325            LLLL : 'dddd D. MMMM YYYY LT'
8326        },
8327        calendar : {
8328            sameDay: '[dnes o] LT',
8329            nextDay: '[zajtra o] LT',
8330            nextWeek: function () {
8331                switch (this.day()) {
8332                case 0:
8333                    return '[v nedeľu o] LT';
8334                case 1:
8335                case 2:
8336                    return '[v] dddd [o] LT';
8337                case 3:
8338                    return '[v stredu o] LT';
8339                case 4:
8340                    return '[vo štvrtok o] LT';
8341                case 5:
8342                    return '[v piatok o] LT';
8343                case 6:
8344                    return '[v sobotu o] LT';
8345                }
8346            },
8347            lastDay: '[včera o] LT',
8348            lastWeek: function () {
8349                switch (this.day()) {
8350                case 0:
8351                    return '[minulú nedeľu o] LT';
8352                case 1:
8353                case 2:
8354                    return '[minulý] dddd [o] LT';
8355                case 3:
8356                    return '[minulú stredu o] LT';
8357                case 4:
8358                case 5:
8359                    return '[minulý] dddd [o] LT';
8360                case 6:
8361                    return '[minulú sobotu o] LT';
8362                }
8363            },
8364            sameElse: 'L'
8365        },
8366        relativeTime : {
8367            future : 'za %s',
8368            past : 'pred %s',
8369            s : translate,
8370            m : translate,
8371            mm : translate,
8372            h : translate,
8373            hh : translate,
8374            d : translate,
8375            dd : translate,
8376            M : translate,
8377            MM : translate,
8378            y : translate,
8379            yy : translate
8380        },
8381        ordinalParse: /\d{1,2}\./,
8382        ordinal : '%d.',
8383        week : {
8384            dow : 1, // Monday is the first day of the week.
8385            doy : 4  // The week that contains Jan 4th is the first week of the year.
8386        }
8387    });
8388}));
8389// moment.js locale configuration
8390// locale : slovenian (sl)
8391// author : Robert Sedovšek : https://github.com/sedovsek
8392
8393(function (factory) {
8394    factory(moment);
8395}(function (moment) {
8396    function translate(number, withoutSuffix, key) {
8397        var result = number + ' ';
8398        switch (key) {
8399        case 'm':
8400            return withoutSuffix ? 'ena minuta' : 'eno minuto';
8401        case 'mm':
8402            if (number === 1) {
8403                result += 'minuta';
8404            } else if (number === 2) {
8405                result += 'minuti';
8406            } else if (number === 3 || number === 4) {
8407                result += 'minute';
8408            } else {
8409                result += 'minut';
8410            }
8411            return result;
8412        case 'h':
8413            return withoutSuffix ? 'ena ura' : 'eno uro';
8414        case 'hh':
8415            if (number === 1) {
8416                result += 'ura';
8417            } else if (number === 2) {
8418                result += 'uri';
8419            } else if (number === 3 || number === 4) {
8420                result += 'ure';
8421            } else {
8422                result += 'ur';
8423            }
8424            return result;
8425        case 'dd':
8426            if (number === 1) {
8427                result += 'dan';
8428            } else {
8429                result += 'dni';
8430            }
8431            return result;
8432        case 'MM':
8433            if (number === 1) {
8434                result += 'mesec';
8435            } else if (number === 2) {
8436                result += 'meseca';
8437            } else if (number === 3 || number === 4) {
8438                result += 'mesece';
8439            } else {
8440                result += 'mesecev';
8441            }
8442            return result;
8443        case 'yy':
8444            if (number === 1) {
8445                result += 'leto';
8446            } else if (number === 2) {
8447                result += 'leti';
8448            } else if (number === 3 || number === 4) {
8449                result += 'leta';
8450            } else {
8451                result += 'let';
8452            }
8453            return result;
8454        }
8455    }
8456
8457    return moment.defineLocale('sl', {
8458        months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),
8459        monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),
8460        weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
8461        weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
8462        weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),
8463        longDateFormat : {
8464            LT : 'H:mm',
8465            LTS : 'LT:ss',
8466            L : 'DD. MM. YYYY',
8467            LL : 'D. MMMM YYYY',
8468            LLL : 'D. MMMM YYYY LT',
8469            LLLL : 'dddd, D. MMMM YYYY LT'
8470        },
8471        calendar : {
8472            sameDay  : '[danes ob] LT',
8473            nextDay  : '[jutri ob] LT',
8474
8475            nextWeek : function () {
8476                switch (this.day()) {
8477                case 0:
8478                    return '[v] [nedeljo] [ob] LT';
8479                case 3:
8480                    return '[v] [sredo] [ob] LT';
8481                case 6:
8482                    return '[v] [soboto] [ob] LT';
8483                case 1:
8484                case 2:
8485                case 4:
8486                case 5:
8487                    return '[v] dddd [ob] LT';
8488                }
8489            },
8490            lastDay  : '[včeraj ob] LT',
8491            lastWeek : function () {
8492                switch (this.day()) {
8493                case 0:
8494                case 3:
8495                case 6:
8496                    return '[prejšnja] dddd [ob] LT';
8497                case 1:
8498                case 2:
8499                case 4:
8500                case 5:
8501                    return '[prejšnji] dddd [ob] LT';
8502                }
8503            },
8504            sameElse : 'L'
8505        },
8506        relativeTime : {
8507            future : 'čez %s',
8508            past   : '%s nazaj',
8509            s      : 'nekaj sekund',
8510            m      : translate,
8511            mm     : translate,
8512            h      : translate,
8513            hh     : translate,
8514            d      : 'en dan',
8515            dd     : translate,
8516            M      : 'en mesec',
8517            MM     : translate,
8518            y      : 'eno leto',
8519            yy     : translate
8520        },
8521        ordinalParse: /\d{1,2}\./,
8522        ordinal : '%d.',
8523        week : {
8524            dow : 1, // Monday is the first day of the week.
8525            doy : 7  // The week that contains Jan 1st is the first week of the year.
8526        }
8527    });
8528}));
8529// moment.js locale configuration
8530// locale : Albanian (sq)
8531// author : Flakërim Ismani : https://github.com/flakerimi
8532// author: Menelion Elensúle: https://github.com/Oire (tests)
8533// author : Oerd Cukalla : https://github.com/oerd (fixes)
8534
8535(function (factory) {
8536    factory(moment);
8537}(function (moment) {
8538    return moment.defineLocale('sq', {
8539        months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),
8540        monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
8541        weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),
8542        weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
8543        weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),
8544        meridiemParse: /PD|MD/,
8545        isPM: function (input) {
8546            return input.charAt(0) === 'M';
8547        },
8548        meridiem : function (hours, minutes, isLower) {
8549            return hours < 12 ? 'PD' : 'MD';
8550        },
8551        longDateFormat : {
8552            LT : 'HH:mm',
8553            LTS : 'LT:ss',
8554            L : 'DD/MM/YYYY',
8555            LL : 'D MMMM YYYY',
8556            LLL : 'D MMMM YYYY LT',
8557            LLLL : 'dddd, D MMMM YYYY LT'
8558        },
8559        calendar : {
8560            sameDay : '[Sot në] LT',
8561            nextDay : '[Nesër në] LT',
8562            nextWeek : 'dddd [në] LT',
8563            lastDay : '[Dje në] LT',
8564            lastWeek : 'dddd [e kaluar në] LT',
8565            sameElse : 'L'
8566        },
8567        relativeTime : {
8568            future : 'në %s',
8569            past : '%s më parë',
8570            s : 'disa sekonda',
8571            m : 'një minutë',
8572            mm : '%d minuta',
8573            h : 'një orë',
8574            hh : '%d orë',
8575            d : 'një ditë',
8576            dd : '%d ditë',
8577            M : 'një muaj',
8578            MM : '%d muaj',
8579            y : 'një vit',
8580            yy : '%d vite'
8581        },
8582        ordinalParse: /\d{1,2}\./,
8583        ordinal : '%d.',
8584        week : {
8585            dow : 1, // Monday is the first day of the week.
8586            doy : 4  // The week that contains Jan 4th is the first week of the year.
8587        }
8588    });
8589}));
8590// moment.js locale configuration
8591// locale : Serbian-cyrillic (sr-cyrl)
8592// author : Milan Janačković<[email protected]> : https://github.com/milan-j
8593
8594(function (factory) {
8595    factory(moment);
8596}(function (moment) {
8597    var translator = {
8598        words: { //Different grammatical cases
8599            m: ['један минут', 'једне минуте'],
8600            mm: ['минут', 'минуте', 'минута'],
8601            h: ['један сат', 'једног сата'],
8602            hh: ['сат', 'сата', 'сати'],
8603            dd: ['дан', 'дана', 'дана'],
8604            MM: ['месец', 'месеца', 'месеци'],
8605            yy: ['година', 'године', 'година']
8606        },
8607        correctGrammaticalCase: function (number, wordKey) {
8608            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
8609        },
8610        translate: function (number, withoutSuffix, key) {
8611            var wordKey = translator.words[key];
8612            if (key.length === 1) {
8613                return withoutSuffix ? wordKey[0] : wordKey[1];
8614            } else {
8615                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
8616            }
8617        }
8618    };
8619
8620    return moment.defineLocale('sr-cyrl', {
8621        months: ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'],
8622        monthsShort: ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'],
8623        weekdays: ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'],
8624        weekdaysShort: ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'],
8625        weekdaysMin: ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'],
8626        longDateFormat: {
8627            LT: 'H:mm',
8628            LTS : 'LT:ss',
8629            L: 'DD. MM. YYYY',
8630            LL: 'D. MMMM YYYY',
8631            LLL: 'D. MMMM YYYY LT',
8632            LLLL: 'dddd, D. MMMM YYYY LT'
8633        },
8634        calendar: {
8635            sameDay: '[данас у] LT',
8636            nextDay: '[сутра у] LT',
8637
8638            nextWeek: function () {
8639                switch (this.day()) {
8640                case 0:
8641                    return '[у] [недељу] [у] LT';
8642                case 3:
8643                    return '[у] [среду] [у] LT';
8644                case 6:
8645                    return '[у] [суботу] [у] LT';
8646                case 1:
8647                case 2:
8648                case 4:
8649                case 5:
8650                    return '[у] dddd [у] LT';
8651                }
8652            },
8653            lastDay  : '[јуче у] LT',
8654            lastWeek : function () {
8655                var lastWeekDays = [
8656                    '[прошле] [недеље] [у] LT',
8657                    '[прошлог] [понедељка] [у] LT',
8658                    '[прошлог] [уторка] [у] LT',
8659                    '[прошле] [среде] [у] LT',
8660                    '[прошлог] [четвртка] [у] LT',
8661                    '[прошлог] [петка] [у] LT',
8662                    '[прошле] [суботе] [у] LT'
8663                ];
8664                return lastWeekDays[this.day()];
8665            },
8666            sameElse : 'L'
8667        },
8668        relativeTime : {
8669            future : 'за %s',
8670            past   : 'пре %s',
8671            s      : 'неколико секунди',
8672            m      : translator.translate,
8673            mm     : translator.translate,
8674            h      : translator.translate,
8675            hh     : translator.translate,
8676            d      : 'дан',
8677            dd     : translator.translate,
8678            M      : 'месец',
8679            MM     : translator.translate,
8680            y      : 'годину',
8681            yy     : translator.translate
8682        },
8683        ordinalParse: /\d{1,2}\./,
8684        ordinal : '%d.',
8685        week : {
8686            dow : 1, // Monday is the first day of the week.
8687            doy : 7  // The week that contains Jan 1st is the first week of the year.
8688        }
8689    });
8690}));
8691// moment.js locale configuration
8692// locale : Serbian-latin (sr)
8693// author : Milan Janačković<[email protected]> : https://github.com/milan-j
8694
8695(function (factory) {
8696    factory(moment);
8697}(function (moment) {
8698    var translator = {
8699        words: { //Different grammatical cases
8700            m: ['jedan minut', 'jedne minute'],
8701            mm: ['minut', 'minute', 'minuta'],
8702            h: ['jedan sat', 'jednog sata'],
8703            hh: ['sat', 'sata', 'sati'],
8704            dd: ['dan', 'dana', 'dana'],
8705            MM: ['mesec', 'meseca', 'meseci'],
8706            yy: ['godina', 'godine', 'godina']
8707        },
8708        correctGrammaticalCase: function (number, wordKey) {
8709            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
8710        },
8711        translate: function (number, withoutSuffix, key) {
8712            var wordKey = translator.words[key];
8713            if (key.length === 1) {
8714                return withoutSuffix ? wordKey[0] : wordKey[1];
8715            } else {
8716                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
8717            }
8718        }
8719    };
8720
8721    return moment.defineLocale('sr', {
8722        months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'],
8723        monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'],
8724        weekdays: ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'],
8725        weekdaysShort: ['ned.', 'pon.', 'uto.', 'sre.', 'čet.', 'pet.', 'sub.'],
8726        weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'],
8727        longDateFormat: {
8728            LT: 'H:mm',
8729            LTS : 'LT:ss',
8730            L: 'DD. MM. YYYY',
8731            LL: 'D. MMMM YYYY',
8732            LLL: 'D. MMMM YYYY LT',
8733            LLLL: 'dddd, D. MMMM YYYY LT'
8734        },
8735        calendar: {
8736            sameDay: '[danas u] LT',
8737            nextDay: '[sutra u] LT',
8738
8739            nextWeek: function () {
8740                switch (this.day()) {
8741                case 0:
8742                    return '[u] [nedelju] [u] LT';
8743                case 3:
8744                    return '[u] [sredu] [u] LT';
8745                case 6:
8746                    return '[u] [subotu] [u] LT';
8747                case 1:
8748                case 2:
8749                case 4:
8750                case 5:
8751                    return '[u] dddd [u] LT';
8752                }
8753            },
8754            lastDay  : '[juče u] LT',
8755            lastWeek : function () {
8756                var lastWeekDays = [
8757                    '[prošle] [nedelje] [u] LT',
8758                    '[prošlog] [ponedeljka] [u] LT',
8759                    '[prošlog] [utorka] [u] LT',
8760                    '[prošle] [srede] [u] LT',
8761                    '[prošlog] [četvrtka] [u] LT',
8762                    '[prošlog] [petka] [u] LT',
8763                    '[prošle] [subote] [u] LT'
8764                ];
8765                return lastWeekDays[this.day()];
8766            },
8767            sameElse : 'L'
8768        },
8769        relativeTime : {
8770            future : 'za %s',
8771            past   : 'pre %s',
8772            s      : 'nekoliko sekundi',
8773            m      : translator.translate,
8774            mm     : translator.translate,
8775            h      : translator.translate,
8776            hh     : translator.translate,
8777            d      : 'dan',
8778            dd     : translator.translate,
8779            M      : 'mesec',
8780            MM     : translator.translate,
8781            y      : 'godinu',
8782            yy     : translator.translate
8783        },
8784        ordinalParse: /\d{1,2}\./,
8785        ordinal : '%d.',
8786        week : {
8787            dow : 1, // Monday is the first day of the week.
8788            doy : 7  // The week that contains Jan 1st is the first week of the year.
8789        }
8790    });
8791}));
8792// moment.js locale configuration
8793// locale : swedish (sv)
8794// author : Jens Alm : https://github.com/ulmus
8795
8796(function (factory) {
8797    factory(moment);
8798}(function (moment) {
8799    return moment.defineLocale('sv', {
8800        months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
8801        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
8802        weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
8803        weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
8804        weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),
8805        longDateFormat : {
8806            LT : 'HH:mm',
8807            LTS : 'LT:ss',
8808            L : 'YYYY-MM-DD',
8809            LL : 'D MMMM YYYY',
8810            LLL : 'D MMMM YYYY LT',
8811            LLLL : 'dddd D MMMM YYYY LT'
8812        },
8813        calendar : {
8814            sameDay: '[Idag] LT',
8815            nextDay: '[Imorgon] LT',
8816            lastDay: '[Igår] LT',
8817            nextWeek: 'dddd LT',
8818            lastWeek: '[Förra] dddd[en] LT',
8819            sameElse: 'L'
8820        },
8821        relativeTime : {
8822            future : 'om %s',
8823            past : 'för %s sedan',
8824            s : 'några sekunder',
8825            m : 'en minut',
8826            mm : '%d minuter',
8827            h : 'en timme',
8828            hh : '%d timmar',
8829            d : 'en dag',
8830            dd : '%d dagar',
8831            M : 'en månad',
8832            MM : '%d månader',
8833            y : 'ett år',
8834            yy : '%d år'
8835        },
8836        ordinalParse: /\d{1,2}(e|a)/,
8837        ordinal : function (number) {
8838            var b = number % 10,
8839                output = (~~(number % 100 / 10) === 1) ? 'e' :
8840                (b === 1) ? 'a' :
8841                (b === 2) ? 'a' :
8842                (b === 3) ? 'e' : 'e';
8843            return number + output;
8844        },
8845        week : {
8846            dow : 1, // Monday is the first day of the week.
8847            doy : 4  // The week that contains Jan 4th is the first week of the year.
8848        }
8849    });
8850}));
8851// moment.js locale configuration
8852// locale : tamil (ta)
8853// author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
8854
8855(function (factory) {
8856    factory(moment);
8857}(function (moment) {
8858    /*var symbolMap = {
8859            '1': '௧',
8860            '2': '௨',
8861            '3': '௩',
8862            '4': '௪',
8863            '5': '௫',
8864            '6': '௬',
8865            '7': '௭',
8866            '8': '௮',
8867            '9': '௯',
8868            '0': '௦'
8869        },
8870        numberMap = {
8871            '௧': '1',
8872            '௨': '2',
8873            '௩': '3',
8874            '௪': '4',
8875            '௫': '5',
8876            '௬': '6',
8877            '௭': '7',
8878            '௮': '8',
8879            '௯': '9',
8880            '௦': '0'
8881        }; */
8882
8883    return moment.defineLocale('ta', {
8884        months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
8885        monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
8886        weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),
8887        weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),
8888        weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
8889        longDateFormat : {
8890            LT : 'HH:mm',
8891            LTS : 'LT:ss',
8892            L : 'DD/MM/YYYY',
8893            LL : 'D MMMM YYYY',
8894            LLL : 'D MMMM YYYY, LT',
8895            LLLL : 'dddd, D MMMM YYYY, LT'
8896        },
8897        calendar : {
8898            sameDay : '[இன்று] LT',
8899            nextDay : '[நாளை] LT',
8900            nextWeek : 'dddd, LT',
8901            lastDay : '[நேற்று] LT',
8902            lastWeek : '[கடந்த வாரம்] dddd, LT',
8903            sameElse : 'L'
8904        },
8905        relativeTime : {
8906            future : '%s இல்',
8907            past : '%s முன்',
8908            s : 'ஒரு சில விநாடிகள்',
8909            m : 'ஒரு நிமிடம்',
8910            mm : '%d நிமிடங்கள்',
8911            h : 'ஒரு மணி நேரம்',
8912            hh : '%d மணி நேரம்',
8913            d : 'ஒரு நாள்',
8914            dd : '%d நாட்கள்',
8915            M : 'ஒரு மாதம்',
8916            MM : '%d மாதங்கள்',
8917            y : 'ஒரு வருடம்',
8918            yy : '%d ஆண்டுகள்'
8919        },
8920/*        preparse: function (string) {
8921            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
8922                return numberMap[match];
8923            });
8924        },
8925        postformat: function (string) {
8926            return string.replace(/\d/g, function (match) {
8927                return symbolMap[match];
8928            });
8929        },*/
8930        ordinalParse: /\d{1,2}வது/,
8931        ordinal : function (number) {
8932            return number + 'வது';
8933        },
8934
8935
8936        // refer http://ta.wikipedia.org/s/1er1
8937        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
8938        meridiem : function (hour, minute, isLower) {
8939            if (hour < 2) {
8940                return ' யாமம்';
8941            } else if (hour < 6) {
8942                return ' வைகறை';  // வைகறை
8943            } else if (hour < 10) {
8944                return ' காலை'; // காலை
8945            } else if (hour < 14) {
8946                return ' நண்பகல்'; // நண்பகல்
8947            } else if (hour < 18) {
8948                return ' எற்பாடு'; // எற்பாடு
8949            } else if (hour < 22) {
8950                return ' மாலை'; // மாலை
8951            } else {
8952                return ' யாமம்';
8953            }
8954        },
8955        meridiemHour : function (hour, meridiem) {
8956            if (hour === 12) {
8957                hour = 0;
8958            }
8959            if (meridiem === 'யாமம்') {
8960                return hour < 2 ? hour : hour + 12;
8961            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
8962                return hour;
8963            } else if (meridiem === 'நண்பகல்') {
8964                return hour >= 10 ? hour : hour + 12;
8965            } else {
8966                return hour + 12;
8967            }
8968        },
8969        week : {
8970            dow : 0, // Sunday is the first day of the week.
8971            doy : 6  // The week that contains Jan 1st is the first week of the year.
8972        }
8973    });
8974}));
8975// moment.js locale configuration
8976// locale : thai (th)
8977// author : Kridsada Thanabulpong : https://github.com/sirn
8978
8979(function (factory) {
8980    factory(moment);
8981}(function (moment) {
8982    return moment.defineLocale('th', {
8983        months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),
8984        monthsShort : 'มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา'.split('_'),
8985        weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
8986        weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
8987        weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
8988        longDateFormat : {
8989            LT : 'H นาฬิกา m นาที',
8990            LTS : 'LT s วินาที',
8991            L : 'YYYY/MM/DD',
8992            LL : 'D MMMM YYYY',
8993            LLL : 'D MMMM YYYY เวลา LT',
8994            LLLL : 'วันddddที่ D MMMM YYYY เวลา LT'
8995        },
8996        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
8997        isPM: function (input) {
8998            return input === 'หลังเที่ยง';
8999        },
9000        meridiem : function (hour, minute, isLower) {
9001            if (hour < 12) {
9002                return 'ก่อนเที่ยง';
9003            } else {
9004                return 'หลังเที่ยง';
9005            }
9006        },
9007        calendar : {
9008            sameDay : '[วันนี้ เวลา] LT',
9009            nextDay : '[พรุ่งนี้ เวลา] LT',
9010            nextWeek : 'dddd[หน้า เวลา] LT',
9011            lastDay : '[เมื่อวานนี้ เวลา] LT',
9012            lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',
9013            sameElse : 'L'
9014        },
9015        relativeTime : {
9016            future : 'อีก %s',
9017            past : '%sที่แล้ว',
9018            s : 'ไม่กี่วินาที',
9019            m : '1 นาที',
9020            mm : '%d นาที',
9021            h : '1 ชั่วโมง',
9022            hh : '%d ชั่วโมง',
9023            d : '1 วัน',
9024            dd : '%d วัน',
9025            M : '1 เดือน',
9026            MM : '%d เดือน',
9027            y : '1 ปี',
9028            yy : '%d ปี'
9029        }
9030    });
9031}));
9032// moment.js locale configuration
9033// locale : Tagalog/Filipino (tl-ph)
9034// author : Dan Hagman
9035
9036(function (factory) {
9037    factory(moment);
9038}(function (moment) {
9039    return moment.defineLocale('tl-ph', {
9040        months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),
9041        monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
9042        weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),
9043        weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
9044        weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
9045        longDateFormat : {
9046            LT : 'HH:mm',
9047            LTS : 'LT:ss',
9048            L : 'MM/D/YYYY',
9049            LL : 'MMMM D, YYYY',
9050            LLL : 'MMMM D, YYYY LT',
9051            LLLL : 'dddd, MMMM DD, YYYY LT'
9052        },
9053        calendar : {
9054            sameDay: '[Ngayon sa] LT',
9055            nextDay: '[Bukas sa] LT',
9056            nextWeek: 'dddd [sa] LT',
9057            lastDay: '[Kahapon sa] LT',
9058            lastWeek: 'dddd [huling linggo] LT',
9059            sameElse: 'L'
9060        },
9061        relativeTime : {
9062            future : 'sa loob ng %s',
9063            past : '%s ang nakalipas',
9064            s : 'ilang segundo',
9065            m : 'isang minuto',
9066            mm : '%d minuto',
9067            h : 'isang oras',
9068            hh : '%d oras',
9069            d : 'isang araw',
9070            dd : '%d araw',
9071            M : 'isang buwan',
9072            MM : '%d buwan',
9073            y : 'isang taon',
9074            yy : '%d taon'
9075        },
9076        ordinalParse: /\d{1,2}/,
9077        ordinal : function (number) {
9078            return number;
9079        },
9080        week : {
9081            dow : 1, // Monday is the first day of the week.
9082            doy : 4  // The week that contains Jan 4th is the first week of the year.
9083        }
9084    });
9085}));
9086// moment.js locale configuration
9087// locale : turkish (tr)
9088// authors : Erhan Gundogan : https://github.com/erhangundogan,
9089//           Burak YiÄŸit Kaya: https://github.com/BYK
9090
9091(function (factory) {
9092    factory(moment);
9093}(function (moment) {
9094    var suffixes = {
9095        1: '\'inci',
9096        5: '\'inci',
9097        8: '\'inci',
9098        70: '\'inci',
9099        80: '\'inci',
9100
9101        2: '\'nci',
9102        7: '\'nci',
9103        20: '\'nci',
9104        50: '\'nci',
9105
9106        3: '\'üncü',
9107        4: '\'üncü',
9108        100: '\'üncü',
9109
9110        6: '\'ncı',
9111
9112        9: '\'uncu',
9113        10: '\'uncu',
9114        30: '\'uncu',
9115
9116        60: '\'ıncı',
9117        90: '\'ıncı'
9118    };
9119
9120    return moment.defineLocale('tr', {
9121        months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),
9122        monthsShort : 'Oca_Åžub_Mar_Nis_May_Haz_Tem_AÄŸu_Eyl_Eki_Kas_Ara'.split('_'),
9123        weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),
9124        weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
9125        weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
9126        longDateFormat : {
9127            LT : 'HH:mm',
9128            LTS : 'LT:ss',
9129            L : 'DD.MM.YYYY',
9130            LL : 'D MMMM YYYY',
9131            LLL : 'D MMMM YYYY LT',
9132            LLLL : 'dddd, D MMMM YYYY LT'
9133        },
9134        calendar : {
9135            sameDay : '[bugün saat] LT',
9136            nextDay : '[yarın saat] LT',
9137            nextWeek : '[haftaya] dddd [saat] LT',
9138            lastDay : '[dün] LT',
9139            lastWeek : '[geçen hafta] dddd [saat] LT',
9140            sameElse : 'L'
9141        },
9142        relativeTime : {
9143            future : '%s sonra',
9144            past : '%s önce',
9145            s : 'birkaç saniye',
9146            m : 'bir dakika',
9147            mm : '%d dakika',
9148            h : 'bir saat',
9149            hh : '%d saat',
9150            d : 'bir gün',
9151            dd : '%d gün',
9152            M : 'bir ay',
9153            MM : '%d ay',
9154            y : 'bir yıl',
9155            yy : '%d yıl'
9156        },
9157        ordinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,
9158        ordinal : function (number) {
9159            if (number === 0) {  // special case for zero
9160                return number + '\'ıncı';
9161            }
9162            var a = number % 10,
9163                b = number % 100 - a,
9164                c = number >= 100 ? 100 : null;
9165
9166            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
9167        },
9168        week : {
9169            dow : 1, // Monday is the first day of the week.
9170            doy : 7  // The week that contains Jan 1st is the first week of the year.
9171        }
9172    });
9173}));
9174// moment.js locale configuration
9175// locale : Morocco Central Atlas Tamaziɣt in Latin (tzm-latn)
9176// author : Abdel Said : https://github.com/abdelsaid
9177
9178(function (factory) {
9179    factory(moment);
9180}(function (moment) {
9181    return moment.defineLocale('tzm-latn', {
9182        months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_
vendor: 15,858 bytes, lines 9182-9491
9182šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
9183        monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
9184        weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
9185        weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
9186        weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
9187        longDateFormat : {
9188            LT : 'HH:mm',
9189            LTS : 'LT:ss',
9190            L : 'DD/MM/YYYY',
9191            LL : 'D MMMM YYYY',
9192            LLL : 'D MMMM YYYY LT',
9193            LLLL : 'dddd D MMMM YYYY LT'
9194        },
9195        calendar : {
9196            sameDay: '[asdkh g] LT',
9197            nextDay: '[aska g] LT',
9198            nextWeek: 'dddd [g] LT',
9199            lastDay: '[assant g] LT',
9200            lastWeek: 'dddd [g] LT',
9201            sameElse: 'L'
9202        },
9203        relativeTime : {
9204            future : 'dadkh s yan %s',
9205            past : 'yan %s',
9206            s : 'imik',
9207            m : 'minuḍ',
9208            mm : '%d minuḍ',
9209            h : 'saɛa',
9210            hh : '%d tassaɛin',
9211            d : 'ass',
9212            dd : '%d ossan',
9213            M : 'ayowr',
9214            MM : '%d iyyirn',
9215            y : 'asgas',
9216            yy : '%d isgasn'
9217        },
9218        week : {
9219            dow : 6, // Saturday is the first day of the week.
9220            doy : 12  // The week that contains Jan 1st is the first week of the year.
9221        }
9222    });
9223}));
9224// moment.js locale configuration
9225// locale : Morocco Central Atlas Tamaziɣt (tzm)
9226// author : Abdel Said : https://github.com/abdelsaid
9227
9228(function (factory) {
9229    factory(moment);
9230}(function (moment) {
9231    return moment.defineLocale('tzm', {
9232        months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
9233        monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
9234        weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
9235        weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
9236        weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
9237        longDateFormat : {
9238            LT : 'HH:mm',
9239            LTS: 'LT:ss',
9240            L : 'DD/MM/YYYY',
9241            LL : 'D MMMM YYYY',
9242            LLL : 'D MMMM YYYY LT',
9243            LLLL : 'dddd D MMMM YYYY LT'
9244        },
9245        calendar : {
9246            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
9247            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
9248            nextWeek: 'dddd [â´´] LT',
9249            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
9250            lastWeek: 'dddd [â´´] LT',
9251            sameElse: 'L'
9252        },
9253        relativeTime : {
9254            future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
9255            past : 'ⵢⴰⵏ %s',
9256            s : 'ⵉⵎⵉⴽ',
9257            m : 'ⵎⵉⵏⵓⴺ',
9258            mm : '%d ⵎⵉⵏⵓⴺ',
9259            h : 'ⵙⴰⵄⴰ',
9260            hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
9261            d : 'ⴰⵙⵙ',
9262            dd : '%d oⵙⵙⴰⵏ',
9263            M : 'ⴰⵢoⵓⵔ',
9264            MM : '%d ⵉⵢⵢⵉⵔⵏ',
9265            y : 'ⴰⵙⴳⴰⵙ',
9266            yy : '%d ⵉⵙⴳⴰⵙⵏ'
9267        },
9268        week : {
9269            dow : 6, // Saturday is the first day of the week.
9270            doy : 12  // The week that contains Jan 1st is the first week of the year.
9271        }
9272    });
9273}));
9274// moment.js locale configuration
9275// locale : ukrainian (uk)
9276// author : zemlanin : https://github.com/zemlanin
9277// Author : Menelion Elensúle : https://github.com/Oire
9278
9279(function (factory) {
9280    factory(moment);
9281}(function (moment) {
9282    function plural(word, num) {
9283        var forms = word.split('_');
9284        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
9285    }
9286
9287    function relativeTimeWithPlural(number, withoutSuffix, key) {
9288        var format = {
9289            'mm': 'хвилина_хвилини_хвилин',
9290            'hh': 'година_години_годин',
9291            'dd': 'день_дні_днів',
9292            'MM': 'місяць_місяці_місяців',
9293            'yy': 'рік_роки_років'
9294        };
9295        if (key === 'm') {
9296            return withoutSuffix ? 'хвилина' : 'хвилину';
9297        }
9298        else if (key === 'h') {
9299            return withoutSuffix ? 'година' : 'годину';
9300        }
9301        else {
9302            return number + ' ' + plural(format[key], +number);
9303        }
9304    }
9305
9306    function monthsCaseReplace(m, format) {
9307        var months = {
9308            'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'),
9309            'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_')
9310        },
9311
9312        nounCase = (/D[oD]? *MMMM?/).test(format) ?
9313            'accusative' :
9314            'nominative';
9315
9316        return months[nounCase][m.month()];
9317    }
9318
9319    function weekdaysCaseReplace(m, format) {
9320        var weekdays = {
9321            'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),
9322            'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),
9323            'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')
9324        },
9325
9326        nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ?
9327            'accusative' :
9328            ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ?
9329                'genitive' :
9330                'nominative');
9331
9332        return weekdays[nounCase][m.day()];
9333    }
9334
9335    function processHoursFunction(str) {
9336        return function () {
9337            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
9338        };
9339    }
9340
9341    return moment.defineLocale('uk', {
9342        months : monthsCaseReplace,
9343        monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),
9344        weekdays : weekdaysCaseReplace,
9345        weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
9346        weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
9347        longDateFormat : {
9348            LT : 'HH:mm',
9349            LTS : 'LT:ss',
9350            L : 'DD.MM.YYYY',
9351            LL : 'D MMMM YYYY р.',
9352            LLL : 'D MMMM YYYY р., LT',
9353            LLLL : 'dddd, D MMMM YYYY р., LT'
9354        },
9355        calendar : {
9356            sameDay: processHoursFunction('[Сьогодні '),
9357            nextDay: processHoursFunction('[Завтра '),
9358            lastDay: processHoursFunction('[Вчора '),
9359            nextWeek: processHoursFunction('[У] dddd ['),
9360            lastWeek: function () {
9361                switch (this.day()) {
9362                case 0:
9363                case 3:
9364                case 5:
9365                case 6:
9366                    return processHoursFunction('[Минулої] dddd [').call(this);
9367                case 1:
9368                case 2:
9369                case 4:
9370                    return processHoursFunction('[Минулого] dddd [').call(this);
9371                }
9372            },
9373            sameElse: 'L'
9374        },
9375        relativeTime : {
9376            future : 'за %s',
9377            past : '%s тому',
9378            s : 'декілька секунд',
9379            m : relativeTimeWithPlural,
9380            mm : relativeTimeWithPlural,
9381            h : 'годину',
9382            hh : relativeTimeWithPlural,
9383            d : 'день',
9384            dd : relativeTimeWithPlural,
9385            M : 'місяць',
9386            MM : relativeTimeWithPlural,
9387            y : 'рік',
9388            yy : relativeTimeWithPlural
9389        },
9390
9391        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
9392
9393        meridiemParse: /ночі|ранку|дня|вечора/,
9394        isPM: function (input) {
9395            return /^(дня|вечора)$/.test(input);
9396        },
9397        meridiem : function (hour, minute, isLower) {
9398            if (hour < 4) {
9399                return 'ночі';
9400            } else if (hour < 12) {
9401                return 'ранку';
9402            } else if (hour < 17) {
9403                return 'дня';
9404            } else {
9405                return 'вечора';
9406            }
9407        },
9408
9409        ordinalParse: /\d{1,2}-(й|го)/,
9410        ordinal: function (number, period) {
9411            switch (period) {
9412            case 'M':
9413            case 'd':
9414            case 'DDD':
9415            case 'w':
9416            case 'W':
9417                return number + '-й';
9418            case 'D':
9419                return number + '-го';
9420            default:
9421                return number;
9422            }
9423        },
9424
9425        week : {
9426            dow : 1, // Monday is the first day of the week.
9427            doy : 7  // The week that contains Jan 1st is the first week of the year.
9428        }
9429    });
9430}));
9431// moment.js locale configuration
9432// locale : uzbek (uz)
9433// author : Sardor Muminov : https://github.com/muminoff
9434
9435(function (factory) {
9436    factory(moment);
9437}(function (moment) {
9438    return moment.defineLocale('uz', {
9439        months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
9440        monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
9441        weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
9442        weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
9443        weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
9444        longDateFormat : {
9445            LT : 'HH:mm',
9446            LTS : 'LT:ss',
9447            L : 'DD/MM/YYYY',
9448            LL : 'D MMMM YYYY',
9449            LLL : 'D MMMM YYYY LT',
9450            LLLL : 'D MMMM YYYY, dddd LT'
9451        },
9452        calendar : {
9453            sameDay : '[Бугун соат] LT [да]',
9454            nextDay : '[Эртага] LT [да]',
9455            nextWeek : 'dddd [куни соат] LT [да]',
9456            lastDay : '[Кеча соат] LT [да]',
9457            lastWeek : '[Утган] dddd [куни соат] LT [да]',
9458            sameElse : 'L'
9459        },
9460        relativeTime : {
9461            future : 'Якин %s ичида',
9462            past : 'Бир неча %s олдин',
9463            s : 'фурсат',
9464            m : 'бир дакика',
9465            mm : '%d дакика',
9466            h : 'бир соат',
9467            hh : '%d соат',
9468            d : 'бир кун',
9469            dd : '%d кун',
9470            M : 'бир ой',
9471            MM : '%d ой',
9472            y : 'бир йил',
9473            yy : '%d йил'
9474        },
9475        week : {
9476            dow : 1, // Monday is the first day of the week.
9477            doy : 7  // The week that contains Jan 4th is the first week of the year.
9478        }
9479    });
9480}));
9481// moment.js locale configuration
9482// locale : vietnamese (vi)
9483// author : Bang Nguyen : https://github.com/bangnk
9484
9485(function (factory) {
9486    factory(moment);
9487}(function (moment) {
9488    return moment.defineLocale('vi', {
9489        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('_'),
9490        monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),
9491        weekdays : 'chá»§ nhật_thứ hai_thứ ba_thứ tư_thứ nÄÆ
9491’m_thứ sáu_thứ bảy'.split('_'),
9492        weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
9493        weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
9494        longDateFormat : {
9495            LT : 'HH:mm',
9496            LTS : 'LT:ss',
9497            L : 'DD/MM/YYYY',
9498            LL : 'D MMMM [năm] YYYY',
9499            LLL : 'D MMMM [năm] YYYY LT',
9500            LLLL : 'dddd, D MMMM [năm] YYYY LT',
9501            l : 'DD/M/YYYY',
9502            ll : 'D MMM YYYY',
9503            lll : 'D MMM YYYY LT',
9504            llll : 'ddd, D MMM YYYY LT'
9505        },
9506        calendar : {
9507            sameDay: '[Hôm nay lúc] LT',
9508            nextDay: '[Ngà y mai lúc] LT',
9509            nextWeek: 'dddd [tuần tới lúc] LT',
9510            lastDay: '[Hôm qua lúc] LT',
9511            lastWeek: 'dddd [tuần rồi lúc] LT',
9512            sameElse: 'L'
9513        },
9514        relativeTime : {
9515            future : '%s tá»›i',
9516            past : '%s trước',
9517            s : 'và i giây',
9518            m : 'một phút',
9519            mm : '%d phút',
9520            h : 'một giờ',
9521            hh : '%d giờ',
9522            d : 'một ngà y',
9523            dd : '%d ngà y',
9524            M : 'một tháng',
9525            MM : '%d tháng',
9526            y : 'một năm',
9527            yy : '%d năm'
9528        },
9529        ordinalParse: /\d{1,2}/,
9530        ordinal : function (number) {
9531            return number;
9532        },
9533        week : {
9534            dow : 1, // Monday is the first day of the week.
9535            doy : 4  // The week that contains Jan 4th is the first week of the year.
9536        }
9537    });
9538}));
9539// moment.js locale configuration
9540// locale : chinese (zh-cn)
9541// author : suupic : https://github.com/suupic
9542// author : Zeno Zeng : https://github.com/zenozeng
9543
9544(function (factory) {
9545    factory(moment);
9546}(function (moment) {
9547    return moment.defineLocale('zh-cn', {
9548        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
9549        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
9550        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
9551        weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),
9552        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
9553        longDateFormat : {
9554            LT : 'Ah点mm',
9555            LTS : 'Ah点m分s秒',
9556            L : 'YYYY-MM-DD',
9557            LL : 'YYYYå¹´MMMDæ—¥',
9558            LLL : 'YYYYå¹´MMMDæ—¥LT',
9559            LLLL : 'YYYYå¹´MMMDæ—¥ddddLT',
9560            l : 'YYYY-MM-DD',
9561            ll : 'YYYYå¹´MMMDæ—¥',
9562            lll : 'YYYYå¹´MMMDæ—¥LT',
9563            llll : 'YYYYå¹´MMMDæ—¥ddddLT'
9564        },
9565        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
9566        meridiemHour: function (hour, meridiem) {
9567            if (hour === 12) {
9568                hour = 0;
9569            }
9570            if (meridiem === '凌晨' || meridiem === '早上' ||
9571                    meridiem === '上午') {
9572                return hour;
9573            } else if (meridiem === '下午' || meridiem === '晚上') {
9574                return hour + 12;
9575            } else {
9576                // '中午'
9577                return hour >= 11 ? hour : hour + 12;
9578            }
9579        },
9580        meridiem : function (hour, minute, isLower) {
9581            var hm = hour * 100 + minute;
9582            if (hm < 600) {
9583                return '凌晨';
9584            } else if (hm < 900) {
9585                return '早上';
9586            } else if (hm < 1130) {
9587                return '上午';
9588            } else if (hm < 1230) {
9589                return '中午';
9590            } else if (hm < 1800) {
9591                return '下午';
9592            } else {
9593                return '晚上';
9594            }
9595        },
9596        calendar : {
9597            sameDay : function () {
9598                return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT';
9599            },
9600            nextDay : function () {
9601                return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT';
9602            },
9603            lastDay : function () {
9604                return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT';
9605            },
9606            nextWeek : function () {
9607                var startOfWeek, prefix;
9608                startOfWeek = moment().startOf('week');
9609                prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]';
9610                return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
9611            },
9612            lastWeek : function () {
9613                var startOfWeek, prefix;
9614                startOfWeek = moment().startOf('week');
9615                prefix = this.unix() < startOfWeek.unix()  ? '[上]' : '[本]';
9616                return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
9617            },
9618            sameElse : 'LL'
9619        },
9620        ordinalParse: /\d{1,2}(日|月|周)/,
9621        ordinal : function (number, period) {
9622            switch (period) {
9623            case 'd':
9624            case 'D':
9625            case 'DDD':
9626                return number + 'æ—¥';
9627            case 'M':
9628                return number + '月';
9629            case 'w':
9630            case 'W':
9631                return number + '周';
9632            default:
9633                return number;
9634            }
9635        },
9636        relativeTime : {
9637            future : '%s内',
9638            past : '%s前',
9639            s : 'å‡ ç§’',
9640            m : '1分钟',
9641            mm : '%d分钟',
9642            h : '1小时',
9643            hh : '%d小时',
9644            d : '1天',
9645            dd : '%d天',
9646            M : '1个月',
9647            MM : '%d个月',
9648            y : '1å¹´',
9649            yy : '%då¹´'
9650        },
9651        week : {
9652            // GB/T 7408-1994ã€Šæ•°æ®å…ƒå’Œäº¤æ¢æ ¼å¼Â·ä¿¡æ¯äº¤æ¢Â·æ—¥æœŸå’Œæ—¶é—´è¡¨ç¤ºæ³•ã€‹ä¸ŽISO 8601:1988等效
9653            dow : 1, // Monday is the first day of the week.
9654            doy : 4  // The week that contains Jan 4th is the first week of the year.
9655        }
9656    });
9657}));
9658// moment.js locale configuration
9659// locale : traditional chinese (zh-tw)
9660// author : Ben : https://github.com/ben-lin
9661
9662(function (factory) {
9663    factory(moment);
9664}(function (moment) {
9665    return moment.defineLocale('zh-tw', {
9666        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
9667        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
9668        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
9669        weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
9670        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
9671        longDateFormat : {
9672            LT : 'Ah點mm',
9673            LTS : 'Ah點m分s秒',
9674            L : 'YYYYå¹´MMMDæ—¥',
9675            LL : 'YYYYå¹´MMMDæ—¥',
9676            LLL : 'YYYYå¹´MMMDæ—¥LT',
9677            LLLL : 'YYYYå¹´MMMDæ—¥ddddLT',
9678            l : 'YYYYå¹´MMMDæ—¥',
9679            ll : 'YYYYå¹´MMMDæ—¥',
9680            lll : 'YYYYå¹´MMMDæ—¥LT',
9681            llll : 'YYYYå¹´MMMDæ—¥ddddLT'
9682        },
9683        meridiemParse: /早上|上午|中午|下午|晚上/,
9684        meridiemHour : function (hour, meridiem) {
9685            if (hour === 12) {
9686                hour = 0;
9687            }
9688            if (meridiem === '早上' || meridiem === '上午') {
9689                return hour;
9690            } else if (meridiem === '中午') {
9691                return hour >= 11 ? hour : hour + 12;
9692            } else if (meridiem === '下午' || meridiem === '晚上') {
9693                return hour + 12;
9694            }
9695        },
9696        meridiem : function (hour, minute, isLower) {
9697            var hm = hour * 100 + minute;
9698            if (hm < 900) {
9699                return '早上';
9700            } else if (hm < 1130) {
9701                return '上午';
9702            } else if (hm < 1230) {
9703                return '中午';
9704            } else if (hm < 1800) {
9705                return '下午';
9706            } else {
9707                return '晚上';
9708            }
9709        },
9710        calendar : {
9711            sameDay : '[今天]LT',
9712            nextDay : '[明天]LT',
9713            nextWeek : '[下]ddddLT',
9714            lastDay : '[昨天]LT',
9715            lastWeek : '[上]ddddLT',
9716            sameElse : 'L'
9717        },
9718        ordinalParse: /\d{1,2}(日|月|週)/,
9719        ordinal : function (number, period) {
9720            switch (period) {
9721            case 'd' :
9722            case 'D' :
9723            case 'DDD' :
9724                return number + 'æ—¥';
9725            case 'M' :
9726                return number + '月';
9727            case 'w' :
9728            case 'W' :
9729                return number + '週';
9730            default :
9731                return number;
9732            }
9733        },
9734        relativeTime : {
9735            future : '%så…§',
9736            past : '%s前',
9737            s : '幾秒',
9738            m : '一分鐘',
9739            mm : '%d分鐘',
9740            h : '一小時',
9741            hh : '%d小時',
9742            d : '一天',
9743            dd : '%d天',
9744            M : '一個月',
9745            MM : '%d個月',
9746            y : '一年',
9747            yy : '%då¹´'
9748        }
9749    });
9750}));
9751
9752    moment.locale('en');
9753
9754
9755    /************************************
9756        Exposing Moment
9757    ************************************/
9758
9759    function makeGlobal(shouldDeprecate) {
9760        /*global ender:false */
9761        if (typeof ender !== 'undefined') {
9762            return;
9763        }
9764        oldGlobalMoment = globalScope.moment;
9765        if (shouldDeprecate) {
9766            globalScope.moment = deprecate(
9767                    'Accessing Moment through the global scope is ' +
9768                    'deprecated, and will be removed in an upcoming ' +
9769                    'release.',
9770                    moment);
9771        } else {
9772            globalScope.moment = moment;
9773        }
9774    }
9775
9776    // CommonJS module is defined
9777    if (hasModule) {
9778        module.exports = moment;
9779    } else if (typeof define === 'function' && define.amd) {
9780        define(function (require, exports, module) {
9781            if (module.config && module.config() && module.config().noGlobal === true) {
9782                // release the global variable
9783                globalScope.moment = oldGlobalMoment;
9784            }
9785
9786            return moment;
9787        });
9788        makeGlobal(true);
9789    } else {
9790        makeGlobal();
9791    }
9792}).call(this);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.